Avoid the necessity to synchronize the account after the upgrade to 1.3.16
authorDavid A. Velasco <dvelasco@solidgear.es>
Mon, 10 Dec 2012 13:01:45 +0000 (14:01 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Mon, 10 Dec 2012 13:01:45 +0000 (14:01 +0100)
src/com/owncloud/android/operations/SynchronizeFolderOperation.java
src/com/owncloud/android/providers/FileContentProvider.java

index 008fb50..849413f 100644 (file)
@@ -163,18 +163,8 @@ public class SynchronizeFolderOperation extends RemoteOperation {
                     OCFile oldFile = mStorageManager.getFileByPath(file.getRemotePath());
                     if (oldFile != null) {
                         file.setKeepInSync(oldFile.keepInSync());
-                        if (oldFile.isDown() && oldFile.getLastSyncDateForData() == 0) {
-                            // only should be true after the upgrade to database version 3 (official 1.3.16 release)
-                            file.setLastSyncDateForData(oldFile.getLocalModificationTimestamp());   // assume there are not local changes pending to upload
-                        } else {
-                            file.setLastSyncDateForData(oldFile.getLastSyncDateForData());
-                        } 
-                        if (oldFile.isDown() && oldFile.getModificationTimestampAtLastSyncForData() == 0) {
-                            // only should be true after the upgrade to database version 4 (official 1.3.16 release)
-                            file.setModificationTimestampAtLastSyncForData(oldFile.getModificationTimestamp()); // assume the file was downloaded not later than the last account synchronization
-                        } else {
-                            file.setModificationTimestampAtLastSyncForData(oldFile.getModificationTimestampAtLastSyncForData());    // not local, but must be kept unchanged when the file contents are not updated
-                        }
+                        file.setLastSyncDateForData(oldFile.getLastSyncDateForData());
+                        file.setModificationTimestampAtLastSyncForData(oldFile.getModificationTimestampAtLastSyncForData());    // must be kept unchanged when the file contents are not updated
                         checkAndFixForeignStoragePath(oldFile);
                         file.setStoragePath(oldFile.getStoragePath());
                     }
index 5d4f9b8..e87d151 100644 (file)
@@ -244,17 +244,40 @@ public class FileContentProvider extends ContentProvider {
             }\r
             if (oldVersion < 3 && newVersion >= 3) {\r
                 Log.i("SQL", "Entering in the #2 ADD in onUpgrade");\r
-                db.execSQL("ALTER TABLE " + ProviderTableMeta.DB_NAME +\r
-                           " ADD COLUMN " + ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA  + " INTEGER " +\r
-                           " DEFAULT 0");\r
-                upgraded = true;\r
+                db.beginTransaction();\r
+                try {\r
+                    db.execSQL("ALTER TABLE " + ProviderTableMeta.DB_NAME +\r
+                               " ADD COLUMN " + ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA  + " INTEGER " +\r
+                               " DEFAULT 0");\r
+                    \r
+                    // assume there are not local changes pending to upload\r
+                    db.execSQL("UPDATE " + ProviderTableMeta.DB_NAME + \r
+                            " SET " + ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA + " = " + System.currentTimeMillis() + \r
+                            " WHERE " + ProviderTableMeta.FILE_STORAGE_PATH + " IS NOT NULL");\r
+                 \r
+                    upgraded = true;\r
+                    db.setTransactionSuccessful();\r
+                } finally {\r
+                    db.endTransaction();\r
+                }\r
             }\r
             if (oldVersion < 4 && newVersion >= 4) {\r
                 Log.i("SQL", "Entering in the #3 ADD in onUpgrade");\r
-                db.execSQL("ALTER TABLE " + ProviderTableMeta.DB_NAME +\r
+                db.beginTransaction();\r
+                try {\r
+                    db .execSQL("ALTER TABLE " + ProviderTableMeta.DB_NAME +\r
                            " ADD COLUMN " + ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA  + " INTEGER " +\r
                            " DEFAULT 0");\r
-                upgraded = true;\r
+                \r
+                    db.execSQL("UPDATE " + ProviderTableMeta.DB_NAME + \r
+                           " SET " + ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA + " = " + ProviderTableMeta.FILE_MODIFIED + \r
+                           " WHERE " + ProviderTableMeta.FILE_STORAGE_PATH + " IS NOT NULL");\r
+                \r
+                    upgraded = true;\r
+                    db.setTransactionSuccessful();\r
+                } finally {\r
+                    db.endTransaction();\r
+                }\r
             }\r
             if (!upgraded)\r
                 Log.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);\r