11package org .openimis .imisclaims ;
22
33import android .Manifest ;
4+ import android .annotation .SuppressLint ;
45import android .app .AlertDialog ;
56import android .app .NotificationManager ;
67import android .app .PendingIntent ;
78import android .app .ProgressDialog ;
9+ import android .content .ActivityNotFoundException ;
810import android .content .Context ;
911import android .content .Intent ;
1012import android .content .pm .PackageManager ;
2931import android .widget .RelativeLayout ;
3032import android .widget .TextView ;
3133import android .widget .Toast ;
34+ import android .net .Uri ;
3235
3336import org .apache .http .HttpEntity ;
3437import org .apache .http .HttpResponse ;
3740import org .json .JSONException ;
3841import org .json .JSONObject ;
3942import org .openimis .imisclaims .claimlisting .ClaimListingActivity ;
43+ import org .openimis .imisclaims .tools .Log ;
4044
4145import java .io .IOException ;
4246import java .text .SimpleDateFormat ;
4347import java .util .ArrayList ;
4448import java .util .Date ;
49+ import java .util .Iterator ;
4550import java .util .Locale ;
4651
52+ import org .apache .commons .io .IOUtils ;
53+
54+ import java .io .File ;
55+ import java .io .FileOutputStream ;
56+
4757
4858public class MainActivity extends ImisActivity {
4959 private static final int REQUEST_PERMISSIONS_CODE = 1 ;
5060 private static final int REQUEST_ALL_FILES_ACCESS_CODE = 2 ;
61+ private static final String LOG_TAG = "MainActivity" ;
5162 ArrayList <String > broadcastList ;
5263 final CharSequence [] lang = {"English" , "Francais" };
5364 String Language ;
@@ -67,6 +78,7 @@ public class MainActivity extends ImisActivity {
6778 final String VersionField = "AppVersionEnquire" ;
6879 NotificationManager mNotificationManager ;
6980 final int SIMPLE_NOTIFICATION_ID = 1 ;
81+ private static final int REQUEST_PICK_MD_FILE = 3 ;
7082 Vibrator vibrator ;
7183
7284 @ Override
@@ -250,13 +262,56 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
250262
251263 @ Override
252264 protected void onActivityResult (int requestCode , int resultCode , @ Nullable Intent data ) {
265+ File databaseFile ;
266+
253267 if (requestCode == REQUEST_ALL_FILES_ACCESS_CODE ) {
254268 if (checkRequirements ()) {
255269 onAllRequirementsMet ();
256270 }
271+ } else if (requestCode == REQUEST_PICK_MD_FILE ) {
272+ if (resultCode == RESULT_OK && data != null ) {
273+ Uri uri = data .getData ();
274+ if (uri != null ) {
275+ try {
276+ byte [] bytes = IOUtils .toByteArray (getContentResolver ().openInputStream (uri ));
277+ databaseFile = new File (SQLHandler .DB_NAME_DATA );
278+ if (databaseFile .exists () || databaseFile .createNewFile ()) {
279+ new FileOutputStream (databaseFile ).write (bytes );
280+ onAllRequirementsMet ();
281+ } else {
282+ showDialog (getResources ().getString (R .string .ImportMasterDataFailed ),
283+ (d , i ) -> finish ());
284+ }
285+ } catch (Exception e ) {
286+ Log .e (LOG_TAG , "Error while copying master data." , e );
287+ }
288+ }
289+ }
257290 }
258291 }
259292
293+ public void PickMasterDataFileDialog () {
294+ new AlertDialog .Builder (MainActivity .this )
295+ .setTitle (getResources ().getString (R .string .NoInternetTitle ))
296+ .setMessage (getResources ().getString (R .string .DoImportClaimsMasterData ))
297+ .setCancelable (false )
298+ .setPositiveButton (getResources ().getString (R .string .Yes ),
299+ (dialog , which ) -> {
300+ Intent intent = new Intent (Intent .ACTION_GET_CONTENT );
301+ intent .addCategory (Intent .CATEGORY_OPENABLE );
302+ intent .setType ("*/*" );
303+ try {
304+ startActivityForResult (intent , REQUEST_PICK_MD_FILE );
305+ } catch (ActivityNotFoundException e ) {
306+ Toast .makeText (getApplicationContext (), getResources ().getString (R .string .NoFileExporerInstalled ), Toast .LENGTH_SHORT ).show ();
307+ }
308+ }).setNegativeButton (getResources ().getString (R .string .No ),
309+ (dialog , id ) -> {
310+ dialog .cancel ();
311+ finish ();
312+ }).show ();
313+ }
314+
260315 public AlertDialog confirmRefreshMap () {
261316 return showDialog (
262317 getResources ().getString (R .string .AreYouSure ),
@@ -990,8 +1045,11 @@ public boolean checkRequirements() {
9901045 if (global .isNetworkAvailable ()) {
9911046 sqlHandler .createOrOpenDatabases ();
9921047 sqlHandler .createTables ();
1048+ sqlHandler .createMappingTables ();
9931049 initializeDb3File (sqlHandler );
9941050 } else {
1051+ sqlHandler .createMappingTables ();
1052+ PickMasterDataFileDialog ();
9951053 showToast (R .string .CheckInternet );
9961054 }
9971055
@@ -1007,4 +1065,5 @@ public void onAllRequirementsMet() {
10071065 }
10081066 refreshCount ();
10091067 }
1010- }
1068+
1069+ }
0 commit comments