OC-1193:Add etag to DB
authormasensio <masensio@solidgear.es>
Thu, 5 Sep 2013 07:20:58 +0000 (09:20 +0200)
committermasensio <masensio@solidgear.es>
Thu, 5 Sep 2013 07:20:58 +0000 (09:20 +0200)
src/com/owncloud/android/datamodel/FileDataStorageManager.java
src/com/owncloud/android/datamodel/OCFile.java
src/com/owncloud/android/db/ProviderMeta.java
src/com/owncloud/android/providers/FileContentProvider.java

index 6a2d538..f9b2576 100644 (file)
@@ -135,6 +135,7 @@ public class FileDataStorageManager implements DataStorageManager {
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties());
         cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData());
         cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0);
+        cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
 
         boolean sameRemotePath = fileExists(file.getRemotePath());
         boolean changesSizeOfAncestors = false;
@@ -231,6 +232,7 @@ public class FileDataStorageManager implements DataStorageManager {
             cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE, file.getLastSyncDateForProperties());
             cv.put(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA, file.getLastSyncDateForData());
             cv.put(ProviderTableMeta.FILE_KEEP_IN_SYNC, file.keepInSync() ? 1 : 0);
+            cv.put(ProviderTableMeta.FILE_ETAG, file.getEtag());
 
             if (fileExists(file.getRemotePath())) {
                 OCFile oldFile = getFileByPath(file.getRemotePath());
@@ -472,6 +474,8 @@ public class FileDataStorageManager implements DataStorageManager {
                     getColumnIndex(ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA)));
             file.setKeepInSync(c.getInt(
                     c.getColumnIndex(ProviderTableMeta.FILE_KEEP_IN_SYNC)) == 1 ? true : false);
+            file.setEtag(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_ETAG)));
+                    
         }
         return file;
     }
index 6b8e178..4e05fa3 100644 (file)
@@ -60,6 +60,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
 
     private String mEtag;
 
+
     /**
      * Create new {@link OCFile} with given path.
      * 
@@ -95,6 +96,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mKeepInSync = source.readInt() == 1;
         mLastSyncDateForProperties = source.readLong();
         mLastSyncDateForData = source.readLong();
+        mEtag = source.readString();
     }
 
     @Override
@@ -112,6 +114,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         dest.writeInt(mKeepInSync ? 1 : 0);
         dest.writeLong(mLastSyncDateForProperties);
         dest.writeLong(mLastSyncDateForData);
+        dest.writeString(mEtag);
     }
     
     /**
@@ -319,6 +322,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mLastSyncDateForData = 0;
         mKeepInSync = false;
         mNeedsUpdating = false;
+        mEtag = null;
     }
 
     /**
@@ -439,8 +443,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
 
     @Override
     public String toString() {
-        String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, keepInSinc=%s]";
-        asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mKeepInSync));
+        String asString = "[id=%s, name=%s, mime=%s, downloaded=%s, local=%s, remote=%s, parentId=%s, keepInSinc=%s etag=%]";
+        asString = String.format(asString, Long.valueOf(mId), getFileName(), mMimeType, isDown(), mLocalPath, mRemotePath, Long.valueOf(mParentId), Boolean.valueOf(mKeepInSync), mEtag);
         return asString;
     }
 
@@ -448,6 +452,10 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         return mEtag;
     }
 
+    public void setEtag(String etag) {
+        this.mEtag = etag;
+    }
+    
     public long getLocalModificationTimestamp() {
         if (mLocalPath != null && mLocalPath.length() > 0) {
             File f = new File(mLocalPath);
index b8058b8..521d4bb 100644 (file)
@@ -31,7 +31,7 @@ public class ProviderMeta {
     public static final String AUTHORITY_FILES = "org.owncloud";\r
     public static final String DB_FILE = "owncloud.db";\r
     public static final String DB_NAME = "filelist";\r
-    public static final int DB_VERSION = 4;\r
+    public static final int DB_VERSION = 5;\r
 \r
     private ProviderMeta() {\r
     }\r
@@ -61,6 +61,7 @@ public class ProviderMeta {
         public static final String FILE_LAST_SYNC_DATE = "last_sync_date";  // _for_properties, but let's keep it as it is\r
         public static final String FILE_LAST_SYNC_DATE_FOR_DATA = "last_sync_date_for_data";\r
         public static final String FILE_KEEP_IN_SYNC = "keep_in_sync";\r
+        public static final String FILE_ETAG = "etag";\r
 \r
         public static final String DEFAULT_SORT_ORDER = FILE_NAME\r
                 + " collate nocase asc";\r
index e77556e..3398f03 100644 (file)
@@ -78,6 +78,8 @@ public class FileContentProvider extends ContentProvider {
                 ProviderTableMeta.FILE_KEEP_IN_SYNC);
         mProjectionMap.put(ProviderTableMeta.FILE_ACCOUNT_OWNER,
                 ProviderTableMeta.FILE_ACCOUNT_OWNER);
+        mProjectionMap.put(ProviderTableMeta.FILE_ETAG, 
+                ProviderTableMeta.FILE_ETAG);
     }
 
     private static final int SINGLE_FILE = 1;
@@ -227,7 +229,8 @@ public class FileContentProvider extends ContentProvider {
                     + ProviderTableMeta.FILE_LAST_SYNC_DATE + " INTEGER, "
                     + ProviderTableMeta.FILE_KEEP_IN_SYNC + " INTEGER, "
                     + ProviderTableMeta.FILE_LAST_SYNC_DATE_FOR_DATA + " INTEGER, "
-                    + ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA + " INTEGER );"
+                    + ProviderTableMeta.FILE_MODIFIED_AT_LAST_SYNC_FOR_DATA + " INTEGER, "
+                    + ProviderTableMeta.FILE_ETAG + " TEXT );"
                     );
         }
 
@@ -281,8 +284,24 @@ public class FileContentProvider extends ContentProvider {
             }
             if (!upgraded)
                 Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
+        
+            if (oldVersion < 5 && newVersion >= 5) {
+                Log_OC.i("SQL", "Entering in the #4 ADD in onUpgrade");
+                db.beginTransaction();
+                try {
+                    db .execSQL("ALTER TABLE " + ProviderTableMeta.DB_NAME +
+                            " ADD COLUMN " + ProviderTableMeta.FILE_ETAG + " TEXT " +
+                            " DEFAULT NULL");
+                    
+                    upgraded = true;
+                    db.setTransactionSuccessful();
+                } finally {
+                    db.endTransaction();
+                }
+            }
+            if (!upgraded)
+                Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
         }
-
     }
 
 }