diff --git a/app/src/main/java/foundation/e/drive/operations/ListFileRemoteOperation.java b/app/src/main/java/foundation/e/drive/operations/ListFileRemoteOperation.java index ffde62e895fbb87477aaed727c39cc5784a376cf..c924de45c9a8283882ee716805c932214bac3480 100644 --- a/app/src/main/java/foundation/e/drive/operations/ListFileRemoteOperation.java +++ b/app/src/main/java/foundation/e/drive/operations/ListFileRemoteOperation.java @@ -89,21 +89,30 @@ public class ListFileRemoteOperation extends RemoteOperation { } } +//// //Create ReadRemoteOperation LightReadFolderRemoteOperation operation = new LightReadFolderRemoteOperation(syncedFolder.getRemoteFolder(), DEPTH_1, false); RemoteOperationResult result = operation.execute(ownCloudClient); + //number of call , data size + Log.e(TAG, "........remoteOperation............"+result.getData().size()); + if(result.isSuccess() ){ //is success then data can't be null int dataSize = result.getData().size(); if(dataSize > 1){ //There is at least one subfiles RemoteFile directory = (RemoteFile) result.getData().get(0); + + Log.e(TAG, "........directory.getLength()............"+directory.getLength()); + if(!directory.getEtag().equals(syncedFolder.getLastEtag() )){ //if etag differs List remoteFiles = result.getData().subList( 1, dataSize ); //get list of subfiles //loop through subelements for (int i = -1, remoteFilesSize = remoteFiles.size(); ++i < remoteFilesSize; ){ RemoteFile remoteFile = (RemoteFile) remoteFiles.get(i); + Log.e(TAG, ".......remote id.." +remoteFile.getRemoteId()+"...getLength..."+remoteFile.getLength()+"..size.."+remoteFile.getSize()+"..remote path .."+remoteFile.getRemotePath()); + //if remoteFile is in a "media" folder and its name start with "." // then ignore it @@ -144,7 +153,7 @@ public class ListFileRemoteOperation extends RemoteOperation { localFolder.delete(); } if( !localFolder.exists() ) { - if (syncedFolder.getId() > this.initialFolderNumber/*-1*/) { //does the synced folder has been persisted? + if (syncedFolder.getId() > this.initialFolderNumber-1) { //does the synced folder has been persisted? //remove it from DB int deleteResult = DbHelper.deleteSyncedFolder(syncedFolder.getId(), mContext); Log.d(TAG, "syncedFolder Id: "+syncedFolder.getId() + " deletion from db return " + deleteResult + " row affected"); @@ -156,6 +165,7 @@ public class ListFileRemoteOperation extends RemoteOperation { } + /////////////// try{ Thread.sleep(150); }catch(InterruptedException e){ diff --git a/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java index d6c7b25f07bfeecc9becdc97c9f78a7d46037394..6c5a45868b20868f9239a04b5d013c1862fa009b 100644 --- a/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java +++ b/app/src/main/java/foundation/e/drive/receivers/ConnectivityReceiver.java @@ -14,6 +14,7 @@ import java.io.IOException; import foundation.e.drive.services.FileObserverService; import foundation.e.drive.services.InitializerService; import foundation.e.drive.services.MyApplication; +import foundation.e.drive.utils.CommonUtils; public class ConnectivityReceiver extends BroadcastReceiver { @@ -25,21 +26,20 @@ public class ConnectivityReceiver } public boolean isConnected; - - public static boolean isConnected() { + + public static boolean isConnected() { try { String command = "ping -c 1 ecloud.global"; return Runtime.getRuntime().exec(command).waitFor() == 0; - }catch (Exception ex){ + } catch (Exception ex) { ex.printStackTrace(); } - return false; + return false; } - @Override public void onReceive(final Context context, Intent arg1) { ConnectivityManager cm = (ConnectivityManager) context @@ -67,10 +67,15 @@ public class ConnectivityReceiver } else if (InitializerService.fileObserverFlag) { // - Bundle mBundle = new Bundle(); - mBundle.putBoolean("isFileObserverService", true); - observersServiceIntent.putExtras(mBundle); - context.startService(observersServiceIntent); + try { + Bundle mBundle = new Bundle(); + mBundle.putBoolean("isFileObserverService", true); + mBundle.putByteArray("fileObserverObject", CommonUtils.convertToBytes(new foundation.e.drive.models.FileObserver(FileObserverService.files))); + observersServiceIntent.putExtras(mBundle); + context.startService(observersServiceIntent); + } catch (IOException e) { + e.printStackTrace(); + } } InitializerService.schedulerFlag = false; diff --git a/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java b/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java index e8d29f5ee213899dd1fc5bac895a52cce4a5c6ef..d1fa12cf397dff36d11bee75560ebcb538c3b544 100644 --- a/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java +++ b/app/src/main/java/foundation/e/drive/receivers/ScreenOffReceiver.java @@ -28,8 +28,8 @@ public class ScreenOffReceiver extends BroadcastReceiver { private final String TAG = ScreenOffReceiver.class.getSimpleName(); private static ScreenOffReceiver instance; - public static ScreenOffReceiver getInstance(){ - if(instance == null) + public static ScreenOffReceiver getInstance() { + if (instance == null) instance = new ScreenOffReceiver(); return instance; } @@ -37,20 +37,22 @@ public class ScreenOffReceiver extends BroadcastReceiver { /** * Private constructor */ - private ScreenOffReceiver(){} + private ScreenOffReceiver() { + } @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive"); - if(FileObserverService.files.size()!=0){ + if (FileObserverService.files.size() != 0) { try { Intent observersServiceIntent = new Intent(context, 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(FileObserverService.files))); observersServiceIntent.putExtras(mBundle); context.startService(observersServiceIntent); - }catch (Exception exception){ + } catch (Exception exception) { exception.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 f143c4e719a421192e58a888e14342bbaaea6060..abf00b4970d540e18a78bfdaf19fa068253cadee 100644 --- a/app/src/main/java/foundation/e/drive/services/ObserverService.java +++ b/app/src/main/java/foundation/e/drive/services/ObserverService.java @@ -95,6 +95,10 @@ public class ObserverService extends Service implements OnRemoteOperationListene isFileObserverService = bundle.getBoolean("isFileObserverService"); fileObserverObject = (foundation.e.drive.models.FileObserver) CommonUtils.convertFromBytes(bundle.getByteArray("fileObserverObject")); } + else + { + isFileObserverService=false; + } } catch (Exception ex) { ex.printStackTrace(); } @@ -235,6 +239,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene **/ private void startScan(boolean remote) { + Log.i(TAG, "startScan(" + remote + ")"); this.mSyncedFolders = loadSyncedFolders(); @@ -268,7 +273,7 @@ public class ObserverService extends Service implements OnRemoteOperationListene } else { if (isFileObserverService && null != fileObserverObject) { - Log.i(TAG, "calling observer service from event event with true and files list data"); + Log.e(TAG, "calling observer service from event event with true and files list data"); // List files = fileObserverObject.getFiles(); DbHelper.updateSyncedFolders(mSyncedFolders, this); //@ToDo: maybe do this when all contents will be synced. @@ -278,10 +283,10 @@ public class ObserverService extends Service implements OnRemoteOperationListene if (!syncedFileStates.isEmpty() || !fileObserverObject.getFiles().isEmpty()) { handleLocalFiles(fileObserverObject.getFiles(), syncedFileStates); } - // handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); + //handleLocalFiles(fileObserverObject.getFiles(), fileObserverObject.getSyncedFileStatesList()); } else { - Log.i(TAG, "calling observer service with false or files list data null "); + Log.e(TAG, "calling observer service with false or files list data null "); if(null!=FileObserverService.files){ FileObserverService.files.removeAll(FileObserverService.files); } @@ -346,18 +351,8 @@ public class ObserverService extends Service implements OnRemoteOperationListene //After everything has been scanned. Send Intent to OperationmanagerService with data in bundle if (operationsForIntent != null && !operationsForIntent.isEmpty()) { -// Intent OMSIntent = new Intent(this, OperationManagerService.class); -// for (Map.Entry entry : operationsForIntent.entrySet()) { -// OMSIntent.putExtra(entry.getKey() + "", entry.getValue()); -// } -// -// OMSIntent.putExtra("account", mAccount); -// startService(OMSIntent); - startOperationManagerService(); - - } else { Log.w(TAG, "There is no file to sync."); getSharedPreferences(AppConstants.SHARED_PREFERENCE_NAME, Context.MODE_PRIVATE)