From 9c43a9d8b83810ef33403c66c0291a0fcb883cf2 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Thu, 5 Aug 2021 08:46:07 +0530 Subject: [PATCH 01/12] continue whit old code for schedule scanner job --- .../foundation/e/drive/utils/JobUtils.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/utils/JobUtils.java b/app/src/main/java/foundation/e/drive/utils/JobUtils.java index 213b1e9f..2958bea7 100644 --- a/app/src/main/java/foundation/e/drive/utils/JobUtils.java +++ b/app/src/main/java/foundation/e/drive/utils/JobUtils.java @@ -32,23 +32,23 @@ public abstract class JobUtils { */ public static void scheduleScannerJob(Context context){ Log.i(TAG, "scheduleJob"); - Log.i(TAG, "scheduleJob task off"); + /* I. Start periodic checkup */ -// ComponentName jobService = new ComponentName( context, ScannerJob.class ); -// -// JobInfo job = new JobInfo.Builder(ScannerJobId, jobService ) -// .setPeriodic(1860000, 30000) //31git minutes and 30 secondes -// .setPersisted(true) -// .setRequiredNetworkType( JobInfo.NETWORK_TYPE_ANY ) -// .build(); -// -// JobScheduler jobScheduler = context.getSystemService( JobScheduler.class ); -// -// if ( jobScheduler.schedule( job ) == JobScheduler.RESULT_SUCCESS ) { -// Log.d(TAG, "Scheduled job created"); -// } else { -// Log.e(TAG, "Scheduled job not created"); -// } + ComponentName jobService = new ComponentName( context, ScannerJob.class ); + + JobInfo job = new JobInfo.Builder(ScannerJobId, jobService ) + .setPeriodic(7200000 , 30000) //31git minutes and 30 secondes + .setPersisted(true) + .setRequiredNetworkType( JobInfo.NETWORK_TYPE_ANY ) + .build(); + + JobScheduler jobScheduler = context.getSystemService( JobScheduler.class ); + + if ( jobScheduler.schedule( job ) == JobScheduler.RESULT_SUCCESS ) { + Log.d(TAG, "Scheduled job created"); + } else { + Log.e(TAG, "Scheduled job not created"); + } } /** -- GitLab From 07fc6c5a536af242d85143c7a7f239ff4af92ebb Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Thu, 5 Aug 2021 11:05:17 +0530 Subject: [PATCH 02/12] continue whit old code for schedule scanner job --- app/src/main/java/foundation/e/drive/utils/JobUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/drive/utils/JobUtils.java b/app/src/main/java/foundation/e/drive/utils/JobUtils.java index 2958bea7..a33855fa 100644 --- a/app/src/main/java/foundation/e/drive/utils/JobUtils.java +++ b/app/src/main/java/foundation/e/drive/utils/JobUtils.java @@ -37,7 +37,7 @@ public abstract class JobUtils { ComponentName jobService = new ComponentName( context, ScannerJob.class ); JobInfo job = new JobInfo.Builder(ScannerJobId, jobService ) - .setPeriodic(7200000 , 30000) //31git minutes and 30 secondes + .setPeriodic(7200000 , 30000) //2 hr .setPersisted(true) .setRequiredNetworkType( JobInfo.NETWORK_TYPE_ANY ) .build(); -- GitLab From ef43998626715e07a1265a8cc5f90699fbbf75d8 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Mon, 9 Aug 2021 09:52:08 +0530 Subject: [PATCH 03/12] initialization --- .../e/drive/services/FileObserverService.java | 27 ++++++++++++------- .../e/drive/services/ObserverService.java | 4 +++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index 964fe206..58f059e5 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -55,16 +55,23 @@ public class FileObserverService extends Service { if(event== FileObserver.CREATE || event==FileObserver.MODIFY || event== FileObserver.DELETE || event ==FileObserver.MOVED_TO){ Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); - try - { - if(observerFlag == -1){ - new AsyncTaskRunner().execute(""); - } - } - catch (Exception e) - { - e.printStackTrace(); - } + + //Check internet + // Add event in List + //call to ObserverService >> getSyncedFileState >> HandleLocal File + + + +// try +// { +// if(observerFlag == -1){ +// new AsyncTaskRunner().execute(""); +// } +// } +// catch (Exception e) +// { +// e.printStackTrace(); +// } } } diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index dfd2873e..16598f22 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -628,6 +628,10 @@ public class ObserverService extends Service implements OnRemoteOperationListene } } + + //Create function about getSyncedFileState input List from Database + //call handleLocalFiles + /** * This function determine the action to do depending for each file or syncedFileState * If file has already be synced and modified since last synced then update (= upload) -- GitLab From e23d7aa64ea5b483f326dac82323814e6b556dfa Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Sat, 28 Aug 2021 09:40:58 +0530 Subject: [PATCH 04/12] call handleLocalFiles and skip scanLocalFiles --- .../e/drive/models/FileObserver.java | 33 ++++++++++++++++ .../e/drive/services/FileObserverService.java | 39 +++++++++++++------ .../e/drive/services/InitializerService.java | 3 ++ .../e/drive/services/ObserverService.java | 23 ++++++++--- .../foundation/e/drive/utils/CommonUtils.java | 27 +++++++++++++ 5 files changed, 109 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/foundation/e/drive/models/FileObserver.java diff --git a/app/src/main/java/foundation/e/drive/models/FileObserver.java b/app/src/main/java/foundation/e/drive/models/FileObserver.java new file mode 100644 index 00000000..dde77187 --- /dev/null +++ b/app/src/main/java/foundation/e/drive/models/FileObserver.java @@ -0,0 +1,33 @@ +package foundation.e.drive.models; + +import java.io.File; +import java.io.Serializable; +import java.util.List; + +public class FileObserver implements Serializable { + + private List files; + + private List syncedFileStatesList; + + public FileObserver(List files, List syncedFileStatesList) { + this.files = files; + this.syncedFileStatesList = syncedFileStatesList; + } + + public List getFiles() { + return files; + } + + public void setFiles(List files) { + this.files = files; + } + + public List getSyncedFileStatesList() { + return syncedFileStatesList; + } + + public void setSyncedFileStatesList(List syncedFileStatesList) { + this.syncedFileStatesList = syncedFileStatesList; + } +} diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index 58f059e5..a0a887b1 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -16,7 +16,12 @@ import android.support.annotation.Nullable; import android.util.Log; import java.io.File; +import java.util.ArrayList; +import java.util.List; +import foundation.e.drive.database.DbHelper; +import foundation.e.drive.models.SyncedFileState; +import foundation.e.drive.utils.CommonUtils; import foundation.e.drive.utils.RecursiveFileObserver; public class FileObserverService extends Service { @@ -24,7 +29,8 @@ public class FileObserverService extends Service { RecursiveFileObserver mFileObserver = null; private int observerFlag=-1; - + List syncedFileStatesList=new ArrayList<>(); + List files=new ArrayList<>(); @Override public int onStartCommand(Intent intent, int flags, int startId) { @@ -56,22 +62,29 @@ public class FileObserverService extends Service { Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); + SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getAbsolutePath(), true); + + syncedFileStatesList.add(syncedFileStates); + files.add(file); //Check internet + // Add event in List + //InitializerService.fileObserver.add(file); //call to ObserverService >> getSyncedFileState >> HandleLocal File -// try -// { -// if(observerFlag == -1){ -// new AsyncTaskRunner().execute(""); -// } -// } -// catch (Exception e) -// { -// e.printStackTrace(); -// } + try + { + if(observerFlag == -1){ + + new AsyncTaskRunner().execute(""); + } + } + catch (Exception e) + { + e.printStackTrace(); + } } } @@ -123,7 +136,10 @@ public class FileObserverService extends Service { public void run() { // Log.e("onPostExecute", "...ObserverService Intent..." ); // Do something after 20s = 20000ms + Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class); + observersServiceIntent.putExtra("isFileObserverService", true); + observersServiceIntent.putExtra("fileObserverObject", new foundation.e.drive.models.FileObserver(files, syncedFileStatesList)); startService(observersServiceIntent); observerFlag=-1; @@ -132,6 +148,7 @@ public class FileObserverService extends Service { } + } diff --git a/app/src/main/java/foundation/e/drive/services/InitializerService.java b/app/src/main/java/foundation/e/drive/services/InitializerService.java index ad556cea..4e172cbb 100644 --- a/app/src/main/java/foundation/e/drive/services/InitializerService.java +++ b/app/src/main/java/foundation/e/drive/services/InitializerService.java @@ -28,6 +28,7 @@ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -61,6 +62,8 @@ public class InitializerService extends Service private int restartFolderCreationCounter =0; private ConnectivityReceiver connectivityReceiver; + // public static List fileObserver=new ArrayList<>(); + @Override public void onCreate() { Log.i(TAG, "onCreate()"); diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index 16598f22..18c4670f 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -69,6 +69,8 @@ public class ObserverService extends Service implements OnRemoteOperationListene private int initialFolderCounter; private Account mAccount; private HashMap operationsForIntent; + private Boolean isFileObserverService; + private foundation.e.drive.models.FileObserver fileObserverObject; /* Lifecycle Methods */ @Override @@ -82,6 +84,14 @@ public class ObserverService extends Service implements OnRemoteOperationListene public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand("+startId+")"); + try { + isFileObserverService = (Boolean)intent.getExtras().get("isFileObserverService"); + fileObserverObject = (foundation.e.drive.models.FileObserver)intent.getExtras().get("fileObserverObject"); + + }catch (Exception ex){ + ex.printStackTrace(); + } + CommonUtils.setServiceUnCaughtExceptionHandler(this); SharedPreferences prefs = this.getSharedPreferences(AppConstants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE); @@ -239,7 +249,14 @@ public class ObserverService extends Service implements OnRemoteOperationListene return; } } else { - scanLocalFiles(); + if(isFileObserverService){ + + handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); + + }else { + scanLocalFiles(); + } + } } @@ -628,10 +645,6 @@ public class ObserverService extends Service implements OnRemoteOperationListene } } - - //Create function about getSyncedFileState input List from Database - //call handleLocalFiles - /** * This function determine the action to do depending for each file or syncedFileState * If file has already be synced and modified since last synced then update (= upload) diff --git a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java index 2d1c16e2..6c5e1d86 100644 --- a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java +++ b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java @@ -30,7 +30,12 @@ import com.owncloud.android.lib.common.OwnCloudClientManagerFactory; import com.owncloud.android.lib.common.accounts.AccountUtils; import com.owncloud.android.lib.resources.files.FileUtils; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import foundation.e.drive.receivers.ScreenOffReceiver; @@ -291,4 +296,26 @@ public abstract class CommonUtils { + "\n File can be read?: " + f.canRead() + "\n File can be written?: " + f.canWrite(); } + + /* + this function convert object to bytes + */ + private byte[] convertToBytes(Object object) throws IOException { + try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(bos)) { + out.writeObject(object); + return bos.toByteArray(); + } + } + + /* + this function convert bytes to Object + */ + private Object convertFromBytes(byte[] bytes) throws IOException, ClassNotFoundException { + try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + ObjectInputStream in = new ObjectInputStream(bis)) { + return in.readObject(); + } + } + } \ No newline at end of file -- GitLab From fe90bc08e3c4fd3caef620e792fef1b50aa8c541 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Mon, 30 Aug 2021 11:18:29 +0530 Subject: [PATCH 05/12] improve bundle value --- .../e/drive/services/FileObserverService.java | 15 +++++++++++---- .../e/drive/services/ObserverService.java | 17 ++++++++++++----- .../foundation/e/drive/utils/CommonUtils.java | 4 ++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index a0a887b1..44c4a046 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -137,10 +137,17 @@ public class FileObserverService extends Service { // Log.e("onPostExecute", "...ObserverService Intent..." ); // Do something after 20s = 20000ms - Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class); - observersServiceIntent.putExtra("isFileObserverService", true); - observersServiceIntent.putExtra("fileObserverObject", new foundation.e.drive.models.FileObserver(files, syncedFileStatesList)); - startService(observersServiceIntent); + try { + Log.e("TAG", "========================================="); + Log.e("TAG", "File Observer to Observer services....."); + Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class); + observersServiceIntent.putExtra("isFileObserverService", true); + observersServiceIntent.putExtra("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files, syncedFileStatesList))); + startService(observersServiceIntent); + }catch (Exception exception){ + exception.printStackTrace(); + } + observerFlag=-1; } diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index 18c4670f..ba48062a 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -15,6 +15,7 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; +import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Parcelable; @@ -69,7 +70,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene private int initialFolderCounter; private Account mAccount; private HashMap operationsForIntent; - private Boolean isFileObserverService; + private Boolean isFileObserverService=false; private foundation.e.drive.models.FileObserver fileObserverObject; /* Lifecycle Methods */ @@ -85,8 +86,12 @@ public class ObserverService extends Service implements OnRemoteOperationListene Log.i(TAG, "onStartCommand("+startId+")"); try { - isFileObserverService = (Boolean)intent.getExtras().get("isFileObserverService"); - fileObserverObject = (foundation.e.drive.models.FileObserver)intent.getExtras().get("fileObserverObject"); + Bundle bundle = intent.getExtras(); + if(null!=bundle){ + isFileObserverService = bundle.getBoolean("isFileObserverService"); + fileObserverObject = (foundation.e.drive.models.FileObserver)CommonUtils.convertFromBytes(bundle.getByteArray("fileObserverObject")); + } + }catch (Exception ex){ ex.printStackTrace(); @@ -546,7 +551,8 @@ public class ObserverService extends Service implements OnRemoteOperationListene * Prepare the list of files and SyncedFileState for synchronisation */ private void scanLocalFiles(){ - Log.i( TAG, "scanLocalFiles()" ); + Log.e( TAG, "========================================================" ); + Log.e( TAG, "scanLocalFiles()" ); List fileList = new ArrayList<>(); List folderIdList= new ArrayList<>(); boolean contentToSyncFound = false; @@ -654,7 +660,8 @@ public class ObserverService extends Service implements OnRemoteOperationListene * @param syncedFileStates List of SyncedFileState to scan */ private void handleLocalFiles(List localFileList, List syncedFileStates ){ - Log.i(TAG, "handleLocalFiles()"); + Log.e( TAG, "========================================================" ); + Log.e(TAG, "handleLocalFiles()"); Log.d(TAG, "Loop through local file list"); Log.v(TAG, "format: filePath, exist, lastModified) :"); diff --git a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java index 6c5e1d86..98a9841b 100644 --- a/app/src/main/java/foundation/e/drive/utils/CommonUtils.java +++ b/app/src/main/java/foundation/e/drive/utils/CommonUtils.java @@ -300,7 +300,7 @@ public abstract class CommonUtils { /* this function convert object to bytes */ - private byte[] convertToBytes(Object object) throws IOException { + public static byte[] convertToBytes(Object object) throws IOException { try (ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bos)) { out.writeObject(object); @@ -311,7 +311,7 @@ public abstract class CommonUtils { /* this function convert bytes to Object */ - private Object convertFromBytes(byte[] bytes) throws IOException, ClassNotFoundException { + public static Object convertFromBytes(byte[] bytes) throws IOException, ClassNotFoundException { try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream in = new ObjectInputStream(bis)) { return in.readObject(); -- GitLab From a8941f28f3c41a5197cc09ec08aa8d138aa73aae Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Wed, 1 Sep 2021 07:40:16 +0530 Subject: [PATCH 06/12] intent put extra bundle value File ObserverService to ObserverService --- .../e/drive/models/SyncedFileState.java | 4 +- .../e/drive/services/FileObserverService.java | 51 +++++++++++-------- .../e/drive/services/ObserverService.java | 4 +- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/models/SyncedFileState.java b/app/src/main/java/foundation/e/drive/models/SyncedFileState.java index 42c76a10..3b9255be 100644 --- a/app/src/main/java/foundation/e/drive/models/SyncedFileState.java +++ b/app/src/main/java/foundation/e/drive/models/SyncedFileState.java @@ -11,12 +11,14 @@ package foundation.e.drive.models; import android.os.Parcel; import android.os.Parcelable; +import java.io.Serializable; + /** * @author Vincent Bourgmayer * Describe a file state which will be Synchronized (= Synced) or which has already been synced one times */ -public class SyncedFileState implements Parcelable { +public class SyncedFileState implements Parcelable, Serializable { protected SyncedFileState(){}; //@ToRemove. Test Only. It's to allow to make a mock SyncedFileState Class in test. diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index 44c4a046..1efb0b7d 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -5,6 +5,7 @@ import android.app.Service; import android.content.Intent; import android.os.AsyncTask; import android.os.Build; +import android.os.Bundle; import android.os.Environment; import android.os.FileObserver; @@ -130,28 +131,34 @@ public class FileObserverService extends Service { super.onPostExecute(s); // Log.d("onPostExecute", "...ObserverService Intent...post Execute " ); - final Handler handler = new Handler(); - handler.postDelayed(new Runnable() { - @Override - public void run() { - // Log.e("onPostExecute", "...ObserverService Intent..." ); - // Do something after 20s = 20000ms - - try { - Log.e("TAG", "========================================="); - Log.e("TAG", "File Observer to Observer services....."); - Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class); - observersServiceIntent.putExtra("isFileObserverService", true); - observersServiceIntent.putExtra("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files, syncedFileStatesList))); - startService(observersServiceIntent); - }catch (Exception exception){ - exception.printStackTrace(); - } - - - observerFlag=-1; - } - }, 20000); + try { + Log.e("TAG", "========================================="); + Log.e("TAG", "File Observer to Observer services....."); + Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class); + + Bundle mBundle = new Bundle(); + mBundle.putBoolean("isFileObserverService", true); + mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files, syncedFileStatesList))); + observersServiceIntent.putExtras(mBundle); + startService(observersServiceIntent); + }catch (Exception exception){ + exception.printStackTrace(); + } + observerFlag=-1; + +// final Handler handler = new Handler(); +// handler.postDelayed(new Runnable() { +// @Override +// public void run() { +// // Log.e("onPostExecute", "...ObserverService Intent..." ); +// // Do something after 20s = 20000ms +// +// +// +// +// +// } +// }, 20000); } diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index ba48062a..ec1f0588 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -91,8 +91,6 @@ public class ObserverService extends Service implements OnRemoteOperationListene isFileObserverService = bundle.getBoolean("isFileObserverService"); fileObserverObject = (foundation.e.drive.models.FileObserver)CommonUtils.convertFromBytes(bundle.getByteArray("fileObserverObject")); } - - }catch (Exception ex){ ex.printStackTrace(); } @@ -255,7 +253,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene } } else { if(isFileObserverService){ - + Log.e("TAG", "isFileObserverService................"+isFileObserverService); handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); }else { -- GitLab From f2f56c046aee112a79f3d7128e32e64885c1680e Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Wed, 1 Sep 2021 13:19:46 +0530 Subject: [PATCH 07/12] null check --- .../e/drive/services/FileObserverService.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index 1efb0b7d..f43a84cb 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -63,18 +63,20 @@ public class FileObserverService extends Service { Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); - SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getAbsolutePath(), true); + SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getPath(), true); - syncedFileStatesList.add(syncedFileStates); + if(null!=syncedFileStates){ + syncedFileStatesList.add(syncedFileStates); + + } files.add(file); + //Check internet // Add event in List //InitializerService.fileObserver.add(file); //call to ObserverService >> getSyncedFileState >> HandleLocal File - - try { if(observerFlag == -1){ -- GitLab From 7ae2731fc2fc29a2746e9d7d9e85ff7e2e50c356 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Thu, 2 Sep 2021 17:03:40 +0530 Subject: [PATCH 08/12] SyncedFileState is null --- .../java/foundation/e/drive/services/FileObserverService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index f43a84cb..88bfe329 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -62,7 +62,7 @@ public class FileObserverService extends Service { if(event== FileObserver.CREATE || event==FileObserver.MODIFY || event== FileObserver.DELETE || event ==FileObserver.MOVED_TO){ Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); - + //getting null SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getPath(), true); if(null!=syncedFileStates){ -- GitLab From 764a385cca5e001f6fe380eac38c5c9bd13f3996 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Mon, 6 Sep 2021 11:35:49 +0530 Subject: [PATCH 09/12] manage HandleLocalFiles function values --- .../e/drive/models/FileObserver.java | 20 +++++------ .../e/drive/services/FileObserverService.java | 34 +++++++++++++------ .../e/drive/services/ObserverService.java | 18 +++++++++- 3 files changed, 50 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/models/FileObserver.java b/app/src/main/java/foundation/e/drive/models/FileObserver.java index dde77187..9b5e76fc 100644 --- a/app/src/main/java/foundation/e/drive/models/FileObserver.java +++ b/app/src/main/java/foundation/e/drive/models/FileObserver.java @@ -8,11 +8,11 @@ public class FileObserver implements Serializable { private List files; - private List syncedFileStatesList; + //private List syncedFileStatesList; - public FileObserver(List files, List syncedFileStatesList) { + public FileObserver(List files) { this.files = files; - this.syncedFileStatesList = syncedFileStatesList; + } public List getFiles() { @@ -23,11 +23,11 @@ public class FileObserver implements Serializable { this.files = files; } - public List getSyncedFileStatesList() { - return syncedFileStatesList; - } - - public void setSyncedFileStatesList(List syncedFileStatesList) { - this.syncedFileStatesList = syncedFileStatesList; - } +// public List getSyncedFileStatesList() { +// return syncedFileStatesList; +// } +// +// public void setSyncedFileStatesList(List syncedFileStatesList) { +// this.syncedFileStatesList = syncedFileStatesList; +// } } diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index 88bfe329..e945fb01 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -20,17 +20,15 @@ import java.io.File; import java.util.ArrayList; import java.util.List; -import foundation.e.drive.database.DbHelper; -import foundation.e.drive.models.SyncedFileState; import foundation.e.drive.utils.CommonUtils; import foundation.e.drive.utils.RecursiveFileObserver; public class FileObserverService extends Service { - + private final static String TAG = FileObserverService.class.getSimpleName(); RecursiveFileObserver mFileObserver = null; private int observerFlag=-1; - List syncedFileStatesList=new ArrayList<>(); + //List syncedFileStatesList=new ArrayList<>(); List files=new ArrayList<>(); @Override @@ -60,15 +58,29 @@ public class FileObserverService extends Service { //Modify =2, create =256, delete =512, movedTo =128 if(event== FileObserver.CREATE || event==FileObserver.MODIFY || event== FileObserver.DELETE || event ==FileObserver.MOVED_TO){ - Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); + Log.e("OnEvent", "...Event ..." + event+"...file ..." + file); //getting null - SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getPath(), true); - - if(null!=syncedFileStates){ - syncedFileStatesList.add(syncedFileStates); - } +// +// SyncedFileState syncedFileStates = DbHelper.loadSyncedFile(getApplicationContext(), file.getPath(), true); +// +// if(null==syncedFileStates){ +// syncedFileStates = new SyncedFileState(-1, file.getName(), file.getPath(), file.getRemoteFolder() + localFile.getName(), "", 0, syncedFolder.getId(), syncedFolder.isMediaType()); +// +// //Store it in DB +// int storedId = DbHelper.manageSyncedFileStateDB(newSyncedFileState, "INSERT", this); +// if(storedId > 0){ +// newSyncedFileState.setId( storedId ); +// Log.i(TAG, "Add upload operation for new file "+storedId); +// //create UploadOperation and add it into bundle +// UploadFileOperation uploadOperation = new UploadFileOperation(newSyncedFileState, syncedFolder.isScanRemote()); +// this.operationsForIntent.put(storedId, uploadOperation); +// }else{ +// Log.w(TAG, "The new file to synced cannot be store in DB. Ignore it"); +// } +// } +// syncedFileStatesList.add(syncedFileStates); files.add(file); //Check internet @@ -140,7 +152,7 @@ public class FileObserverService extends Service { Bundle mBundle = new Bundle(); mBundle.putBoolean("isFileObserverService", true); - mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files, syncedFileStatesList))); + mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files))); observersServiceIntent.putExtras(mBundle); startService(observersServiceIntent); }catch (Exception exception){ diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index ec1f0588..27de0072 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -254,7 +254,22 @@ public class ObserverService extends Service implements OnRemoteOperationListene } else { if(isFileObserverService){ Log.e("TAG", "isFileObserverService................"+isFileObserverService); - handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); + + //mSyncedFolders we have here + + //we can get getIdsFromFolderToScan + + List files = fileObserverObject.getFiles(); + DbHelper.updateSyncedFolders(mSyncedFolders, this); //@ToDo: maybe do this when all contents will be synced. + + List syncedFileStates = DbHelper.getSyncedFileStatesByFolders(this, + getIdsFromFolderToScan()); + + if(!syncedFileStates.isEmpty() || !files.isEmpty() ) { + handleLocalFiles(files, syncedFileStates); + } + + // handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); }else { scanLocalFiles(); @@ -640,6 +655,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene if(contentToSyncFound) { DbHelper.updateSyncedFolders(mSyncedFolders, this); //@ToDo: maybe do this when all contents will be synced. + List syncedFileStates = DbHelper.getSyncedFileStatesByFolders(this, folderIdList); -- GitLab From 0cb8b6260420b5caf46c843ca51ef3d3fb042f54 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Tue, 7 Sep 2021 20:00:42 +0530 Subject: [PATCH 10/12] manage Files List before and after upload --- .../e/drive/operations/UploadFileOperation.java | 12 ++++++++++++ .../e/drive/services/FileObserverService.java | 14 ++++++++++---- .../e/drive/services/InitializerService.java | 1 + .../e/drive/services/ObserverService.java | 15 +++++---------- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/foundation/e/drive/operations/UploadFileOperation.java b/app/src/main/java/foundation/e/drive/operations/UploadFileOperation.java index 88276a6b..0ded25fa 100644 --- a/app/src/main/java/foundation/e/drive/operations/UploadFileOperation.java +++ b/app/src/main/java/foundation/e/drive/operations/UploadFileOperation.java @@ -25,6 +25,7 @@ import java.io.File; import java.util.ArrayList; import foundation.e.drive.database.DbHelper; import foundation.e.drive.models.SyncedFileState; +import foundation.e.drive.services.InitializerService; import foundation.e.drive.utils.CommonUtils; /** @@ -136,6 +137,17 @@ public class UploadFileOperation extends RemoteOperation implements ComparableOp //if upload is a success if( uploadResult.isSuccess() ){ + Log.e(TAG, "upload is success ........................."+file.getName() + +" "+file.getAbsolutePath()); + + + Log.e(TAG, "files size before remove ........................."+InitializerService.files.size()); + + InitializerService.files.remove(file); + + Log.e(TAG, "files size after remove ........................."+InitializerService.files.size()); + + Object data = uploadResult.getSingleData(); if(data != null){ mSyncedState.setLastETAG((String) data); diff --git a/app/src/main/java/foundation/e/drive/services/FileObserverService.java b/app/src/main/java/foundation/e/drive/services/FileObserverService.java index e945fb01..ac48298f 100644 --- a/app/src/main/java/foundation/e/drive/services/FileObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/FileObserverService.java @@ -23,13 +23,15 @@ import java.util.List; import foundation.e.drive.utils.CommonUtils; import foundation.e.drive.utils.RecursiveFileObserver; + + public class FileObserverService extends Service { private final static String TAG = FileObserverService.class.getSimpleName(); RecursiveFileObserver mFileObserver = null; private int observerFlag=-1; //List syncedFileStatesList=new ArrayList<>(); - List files=new ArrayList<>(); + @Override public int onStartCommand(Intent intent, int flags, int startId) { @@ -81,7 +83,12 @@ public class FileObserverService extends Service { // } // } // syncedFileStatesList.add(syncedFileStates); - files.add(file); + + if(!InitializerService.files.contains(file)){ + Log.e(TAG, "adding new file into files list "+file.getName() +" .... "+file.getAbsolutePath()); + InitializerService.files.add(file); + } + //Check internet @@ -92,7 +99,6 @@ public class FileObserverService extends Service { try { if(observerFlag == -1){ - new AsyncTaskRunner().execute(""); } } @@ -152,7 +158,7 @@ public class FileObserverService extends Service { Bundle mBundle = new Bundle(); mBundle.putBoolean("isFileObserverService", true); - mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files))); + // mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(files))); observersServiceIntent.putExtras(mBundle); startService(observersServiceIntent); }catch (Exception exception){ diff --git a/app/src/main/java/foundation/e/drive/services/InitializerService.java b/app/src/main/java/foundation/e/drive/services/InitializerService.java index 4e172cbb..445467fb 100644 --- a/app/src/main/java/foundation/e/drive/services/InitializerService.java +++ b/app/src/main/java/foundation/e/drive/services/InitializerService.java @@ -62,6 +62,7 @@ public class InitializerService extends Service private int restartFolderCreationCounter =0; private ConnectivityReceiver connectivityReceiver; + public static List files=new ArrayList<>(); // public static List fileObserver=new ArrayList<>(); @Override diff --git a/app/src/main/java/foundation/e/drive/services/ObserverService.java b/app/src/main/java/foundation/e/drive/services/ObserverService.java index 27de0072..ab2dff78 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -71,7 +71,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene private Account mAccount; private HashMap operationsForIntent; private Boolean isFileObserverService=false; - private foundation.e.drive.models.FileObserver fileObserverObject; + // private foundation.e.drive.models.FileObserver fileObserverObject; /* Lifecycle Methods */ @Override @@ -89,7 +89,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene Bundle bundle = intent.getExtras(); if(null!=bundle){ isFileObserverService = bundle.getBoolean("isFileObserverService"); - fileObserverObject = (foundation.e.drive.models.FileObserver)CommonUtils.convertFromBytes(bundle.getByteArray("fileObserverObject")); + // fileObserverObject = (foundation.e.drive.models.FileObserver)CommonUtils.convertFromBytes(bundle.getByteArray("fileObserverObject")); } }catch (Exception ex){ ex.printStackTrace(); @@ -253,20 +253,15 @@ public class ObserverService extends Service implements OnRemoteOperationListene } } else { if(isFileObserverService){ - Log.e("TAG", "isFileObserverService................"+isFileObserverService); - //mSyncedFolders we have here - - //we can get getIdsFromFolderToScan - - List files = fileObserverObject.getFiles(); + // List files = fileObserverObject.getFiles(); DbHelper.updateSyncedFolders(mSyncedFolders, this); //@ToDo: maybe do this when all contents will be synced. List syncedFileStates = DbHelper.getSyncedFileStatesByFolders(this, getIdsFromFolderToScan()); - if(!syncedFileStates.isEmpty() || !files.isEmpty() ) { - handleLocalFiles(files, syncedFileStates); + if(!syncedFileStates.isEmpty() || !InitializerService.files.isEmpty() ) { + handleLocalFiles(InitializerService.files, syncedFileStates); } // handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); -- GitLab From 8f4aa2147b54ca2fcda2b2f4359ca310f8421d19 Mon Sep 17 00:00:00 2001 From: Narinder Rana Date: Tue, 5 Oct 2021 14:16:03 +0530 Subject: [PATCH 11/12] remove Serializable --- .../main/java/foundation/e/drive/models/SyncedFileState.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/drive/models/SyncedFileState.java b/app/src/main/java/foundation/e/drive/models/SyncedFileState.java index 3b9255be..e91d3790 100644 --- a/app/src/main/java/foundation/e/drive/models/SyncedFileState.java +++ b/app/src/main/java/foundation/e/drive/models/SyncedFileState.java @@ -18,7 +18,7 @@ import java.io.Serializable; * Describe a file state which will be Synchronized (= Synced) or which has already been synced one times */ -public class SyncedFileState implements Parcelable, Serializable { +public class SyncedFileState implements Parcelable { protected SyncedFileState(){}; //@ToRemove. Test Only. It's to allow to make a mock SyncedFileState Class in test. -- GitLab From b181d7e1808436e3203166d77363ef7cbf3907de Mon Sep 17 00:00:00 2001 From: Romain Hunault Date: Tue, 5 Oct 2021 13:08:43 +0000 Subject: [PATCH 12/12] Use the legacy docker image --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6ba265a2..1e1f9bc2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:latest" +image: "registry.gitlab.e.foundation:5000/e/apps/docker-android-apps-cicd:legacy" stages: - build -- GitLab