Browse Source

Simplify

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 years ago
parent
commit
6a47a2fe01

+ 2 - 2
src/main/java/com/owncloud/android/datamodel/ArbitraryDataProvider.java

@@ -47,12 +47,12 @@ public class ArbitraryDataProvider {
         this.contentResolver = contentResolver;
     }
 
-    public int deleteKeyForAccount(Account account, String key) {
+    public int deleteKeyForAccount(String account, String key) {
         int result = contentResolver.delete(
                 ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA,
                 ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " = ? AND " +
                         ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY + "= ?",
-                new String[]{account.name, key}
+                new String[]{account, key}
         );
 
         return result;

+ 2 - 3
src/main/java/com/owncloud/android/datamodel/FilesystemDataProvider.java

@@ -93,8 +93,7 @@ public class FilesystemDataProvider {
 
     }
 
-    public void storeOrUpdateFileValue(String localPath, long modifiedAt, boolean isFolder, SyncedFolder syncedFolder,
-                                       boolean dryRun) {
+    public void storeOrUpdateFileValue(String localPath, long modifiedAt, boolean isFolder, SyncedFolder syncedFolder) {
 
         FileSystemDataSet data = getFilesystemDataSet(localPath, syncedFolder);
 
@@ -112,7 +111,7 @@ public class FilesystemDataProvider {
 
             cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_LOCAL_PATH, localPath);
             cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_IS_FOLDER, isFolderValue);
-            cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD, dryRun);
+            cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_FILE_SENT_FOR_UPLOAD, false);
             cv.put(ProviderMeta.ProviderTableMeta.FILESYSTEM_SYNCED_FOLDER_ID, syncedFolder.getId());
 
             Uri result = contentResolver.insert(ProviderMeta.ProviderTableMeta.CONTENT_URI_FILESYSTEM, cv);

+ 0 - 1
src/main/java/com/owncloud/android/jobs/NContentObserverJob.java

@@ -25,7 +25,6 @@ import android.app.job.JobParameters;
 import android.app.job.JobService;
 import android.os.Build;
 import android.support.annotation.RequiresApi;
-import android.util.Log;
 
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.support.PersistableBundleCompat;

+ 1 - 1
src/main/java/com/owncloud/android/services/AccountRemovalJob.java

@@ -76,7 +76,7 @@ public class AccountRemovalJob extends Job implements AccountManagerCallback<Boo
 
             // remove pending account removal
             ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(context.getContentResolver());
-            arbitraryDataProvider.deleteKeyForAccount(account, PENDING_FOR_REMOVAL);
+            arbitraryDataProvider.deleteKeyForAccount(account.name, PENDING_FOR_REMOVAL);
 
             return Result.SUCCESS;
         } else {

+ 32 - 17
src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java

@@ -43,6 +43,7 @@ import android.widget.TextView;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
+import com.owncloud.android.datamodel.ArbitraryDataProvider;
 import com.owncloud.android.datamodel.MediaFolder;
 import com.owncloud.android.datamodel.MediaProvider;
 import com.owncloud.android.datamodel.OCFile;
@@ -55,17 +56,12 @@ import com.owncloud.android.ui.adapter.SyncedFolderAdapter;
 import com.owncloud.android.ui.decoration.MediaGridItemDecoration;
 import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment;
 import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable;
-import com.owncloud.android.ui.events.InitiateSyncedFolder;
 import com.owncloud.android.utils.AnalyticsUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.FilesSyncHelper;
 import com.owncloud.android.utils.PermissionUtil;
 import com.owncloud.android.utils.ThemeUtils;
 
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
 import java.io.File;
 import java.io.FileFilter;
 import java.util.ArrayList;
@@ -454,19 +450,27 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
 
     @Override
     public void onSyncStatusToggleClick(int section, SyncedFolderDisplayItem syncedFolderDisplayItem) {
+        ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().
+                getContentResolver());
+
         if (syncedFolderDisplayItem.getId() > UNPERSISTED_ID) {
             mSyncedFolderProvider.updateSyncedFolderEnabled(syncedFolderDisplayItem.getId(),
                     syncedFolderDisplayItem.isEnabled());
-            FilesSyncHelper.scheduleNJobs(false);
         } else {
             long storedId = mSyncedFolderProvider.storeSyncedFolder(syncedFolderDisplayItem);
             if (storedId != -1) {
                 syncedFolderDisplayItem.setId(storedId);
-                if (syncedFolderDisplayItem.isEnabled()) {
-                    EventBus.getDefault().post(new InitiateSyncedFolder(syncedFolderDisplayItem));
-                }
             }
         }
+
+        if (syncedFolderDisplayItem.isEnabled()) {
+            FilesSyncHelper.insertAllDBEntriesForSyncedFolder(syncedFolderDisplayItem);
+        } else {
+            String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + syncedFolderDisplayItem.getId();
+            arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey);
+        }
+        FilesSyncHelper.scheduleNJobs(false);
+
     }
 
     @Override
@@ -498,6 +502,9 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
 
     @Override
     public void onSaveSyncedFolderPreference(SyncedFolderParcelable syncedFolder) {
+        ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().
+                getContentResolver());
+
         // custom folders newly created aren't in the list already,
         // so triggering a refresh
         if (MediaFolder.CUSTOM.equals(syncedFolder.getType()) && syncedFolder.getId() == UNPERSISTED_ID) {
@@ -510,8 +517,12 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
             if (storedId != -1) {
                 newCustomFolder.setId(storedId);
                 if (newCustomFolder.isEnabled()) {
-                    EventBus.getDefault().post(new InitiateSyncedFolder(newCustomFolder));
+                    FilesSyncHelper.insertAllDBEntriesForSyncedFolder(newCustomFolder);
+                } else {
+                    String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + newCustomFolder.getId();
+                    arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey);
                 }
+                FilesSyncHelper.scheduleNJobs(false);
             }
             mAdapter.addSyncFolderItem(newCustomFolder);
         } else {
@@ -528,12 +539,22 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
                 if (storedId != -1) {
                     item.setId(storedId);
                     if (item.isEnabled()) {
-                        EventBus.getDefault().post(new InitiateSyncedFolder(item));
+                        FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item);
+                    } else {
+                        String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + item.getId();
+                        arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey);
                     }
+                    FilesSyncHelper.scheduleNJobs(false);
                 }
             } else {
                 // existing synced folder setup to be updated
                 mSyncedFolderProvider.updateSyncFolder(item);
+                if (item.isEnabled()) {
+                    FilesSyncHelper.insertAllDBEntriesForSyncedFolder(item);
+                } else {
+                    String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + item.getId();
+                    arbitraryDataProvider.deleteKeyForAccount("global", syncedFolderInitiatedKey);
+                }
                 FilesSyncHelper.scheduleNJobs(false);
             }
 
@@ -606,12 +627,6 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
         }
     }
 
-    @Subscribe(threadMode = ThreadMode.BACKGROUND)
-    public void onMessageEvent(InitiateSyncedFolder event) {
-        FilesSyncHelper.insertAllDBEntriesForSyncedFolder(event.getSyncedFolder());
-        FilesSyncHelper.scheduleNJobs(false);
-    }
-
     public void onAddCustomFolderClick(View view) {
         Log.d(TAG, "Show custom folder dialog");
         SyncedFolderDisplayItem emptyCustomFolder = new SyncedFolderDisplayItem(

+ 49 - 32
src/main/java/com/owncloud/android/utils/FilesSyncHelper.java

@@ -69,58 +69,69 @@ public class FilesSyncHelper {
         final ContentResolver contentResolver = context.getContentResolver();
         ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(contentResolver);
 
+        Long currentTime = System.currentTimeMillis();
+        double currentTimeInSeconds = currentTime / 1000.0;
+        String currentTimeString = Long.toString((long) currentTimeInSeconds);
+
         String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + syncedFolder.getId();
         boolean dryRun = TextUtils.isEmpty(arbitraryDataProvider.getValue
                 ("global", syncedFolderInitiatedKey));
 
         if (MediaFolder.IMAGE == syncedFolder.getType()) {
-            FilesSyncHelper.insertContentIntoDB(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
-                    , dryRun, syncedFolder);
-            FilesSyncHelper.insertContentIntoDB(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, dryRun,
-                    syncedFolder);
-
             if (dryRun) {
                 arbitraryDataProvider.storeOrUpdateKeyValue("global", syncedFolderInitiatedKey,
-                        "1");
+                        currentTimeString);
+            } else {
+                FilesSyncHelper.insertContentIntoDB(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
+                        , syncedFolder);
+                FilesSyncHelper.insertContentIntoDB(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+                        syncedFolder);
             }
+
         } else if (MediaFolder.VIDEO == syncedFolder.getType()) {
-            FilesSyncHelper.insertContentIntoDB(android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI,
-                    dryRun, syncedFolder);
-            FilesSyncHelper.insertContentIntoDB(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, dryRun,
-                    syncedFolder);
 
             if (dryRun) {
                 arbitraryDataProvider.storeOrUpdateKeyValue("global", syncedFolderInitiatedKey,
-                        "1");
+                        currentTimeString);
+            } else {
+                FilesSyncHelper.insertContentIntoDB(android.provider.MediaStore.Video.Media.INTERNAL_CONTENT_URI,
+                         syncedFolder);
+                FilesSyncHelper.insertContentIntoDB(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
+                        syncedFolder);
             }
 
         } else {
             try {
 
-                FilesystemDataProvider filesystemDataProvider = new FilesystemDataProvider(contentResolver);
-                Path path = Paths.get(syncedFolder.getLocalPath());
+                if (dryRun) {
+                    arbitraryDataProvider.storeOrUpdateKeyValue("global", syncedFolderInitiatedKey,
+                            currentTimeString);
+                } else {
+                    FilesystemDataProvider filesystemDataProvider = new FilesystemDataProvider(contentResolver);
+                    Path path = Paths.get(syncedFolder.getLocalPath());
 
-                Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
-                    @Override
-                    public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
+                    String dateInitiated = arbitraryDataProvider.getValue("global",
+                            syncedFolderInitiatedKey);
 
-                        File file = path.toFile();
-                        filesystemDataProvider.storeOrUpdateFileValue(path.toAbsolutePath().toString(),
-                                attrs.lastModifiedTime().toMillis(), file.isDirectory(), syncedFolder, dryRun);
+                    Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+                        @Override
+                        public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException {
 
+                            File file = path.toFile();
+                            if (attrs.lastModifiedTime().toMillis() >= Long.parseLong(dateInitiated) * 1000) {
+                                filesystemDataProvider.storeOrUpdateFileValue(path.toAbsolutePath().toString(),
+                                        attrs.lastModifiedTime().toMillis(), file.isDirectory(), syncedFolder);
+                            }
 
-                        return FileVisitResult.CONTINUE;
-                    }
+                            return FileVisitResult.CONTINUE;
+                        }
 
-                    @Override
-                    public FileVisitResult visitFileFailed(Path file, IOException exc) {
-                        return FileVisitResult.CONTINUE;
-                    }
-                });
+                        @Override
+                        public FileVisitResult visitFileFailed(Path file, IOException exc) {
+                            return FileVisitResult.CONTINUE;
+                        }
+                    });
 
-                if (dryRun) {
-                    arbitraryDataProvider.storeOrUpdateKeyValue("global", syncedFolderInitiatedKey,
-                            "1");
                 }
 
             } catch (IOException e) {
@@ -142,9 +153,10 @@ public class FilesSyncHelper {
         }
     }
 
-    private static void insertContentIntoDB(Uri uri, boolean dryRun, SyncedFolder syncedFolder) {
+    private static void insertContentIntoDB(Uri uri, SyncedFolder syncedFolder) {
         final Context context = MainApp.getAppContext();
         final ContentResolver contentResolver = context.getContentResolver();
+        ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(contentResolver);
 
         Cursor cursor;
         int column_index_data;
@@ -164,6 +176,9 @@ public class FilesSyncHelper {
             path = path + "%";
         }
 
+        String syncedFolderInitiatedKey = "syncedFolderIntitiated_" + syncedFolder.getId();
+        String dateInitiated = arbitraryDataProvider.getValue("global", syncedFolderInitiatedKey);
+
         cursor = context.getContentResolver().query(uri, projection, MediaStore.MediaColumns.DATA + " LIKE ?",
                 new String[]{path}, null);
 
@@ -173,8 +188,10 @@ public class FilesSyncHelper {
             while (cursor.moveToNext()) {
                 contentPath = cursor.getString(column_index_data);
                 isFolder = new File(contentPath).isDirectory();
-                filesystemDataProvider.storeOrUpdateFileValue(contentPath,
-                        cursor.getLong(column_index_date_modified), isFolder, syncedFolder, dryRun);
+                if (cursor.getLong(column_index_date_modified) >= Long.parseLong(dateInitiated)) {
+                    filesystemDataProvider.storeOrUpdateFileValue(contentPath,
+                            cursor.getLong(column_index_date_modified), isFolder, syncedFolder);
+                }
             }
             cursor.close();
         }