Add column 'update_thumbnail' to the local files db for controlling the update of...
authorjabarros <jabarros@solidgear.es>
Mon, 29 Sep 2014 11:55:28 +0000 (13:55 +0200)
committerjabarros <jabarros@solidgear.es>
Mon, 29 Sep 2014 11:55:28 +0000 (13:55 +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/files/services/FileDownloader.java
src/com/owncloud/android/providers/FileContentProvider.java
src/com/owncloud/android/ui/adapter/FileListListAdapter.java

index aaafb3a..a65eef8 100644 (file)
@@ -188,6 +188,7 @@ public class FileDataStorageManager {
         cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
         cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
         cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
         cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
         cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
         cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
+        cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail());
         
         boolean sameRemotePath = fileExists(file.getRemotePath());
         if (sameRemotePath ||
         
         boolean sameRemotePath = fileExists(file.getRemotePath());
         if (sameRemotePath ||
@@ -878,6 +879,8 @@ public class FileDataStorageManager {
             file.setPublicLink(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PUBLIC_LINK)));
             file.setPermissions(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PERMISSIONS)));
             file.setRemoteId(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID)));
             file.setPublicLink(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PUBLIC_LINK)));
             file.setPermissions(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_PERMISSIONS)));
             file.setRemoteId(c.getString(c.getColumnIndex(ProviderTableMeta.FILE_REMOTE_ID)));
+            file.setNeedsUpdateThumbnail(c.getInt(
+                    c.getColumnIndex(ProviderTableMeta.FILE_UPDATE_THUMBNAIL)) == 1 ? true : false);
                     
         }
         return file;
                     
         }
         return file;
@@ -1222,6 +1225,7 @@ public class FileDataStorageManager {
                 cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
                 cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
                 cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
                 cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
                 cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
                 cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
+                cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail() ? 1 : 0);
 
                 boolean existsByPath = fileExists(file.getRemotePath());
                 if (existsByPath || fileExists(file.getFileId())) {
 
                 boolean existsByPath = fileExists(file.getRemotePath());
                 if (existsByPath || fileExists(file.getFileId())) {
index 92168ff..5f45cc4 100644 (file)
@@ -68,6 +68,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
     private String mPermissions;
     private String mRemoteId;
 
     private String mPermissions;
     private String mRemoteId;
 
+    private boolean mNeedsUpdateThumbnail;
+
 
     /**
      * Create new {@link OCFile} with given path.
 
     /**
      * Create new {@link OCFile} with given path.
@@ -109,6 +111,8 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mPublicLink = source.readString();
         mPermissions = source.readString();
         mRemoteId = source.readString();
         mPublicLink = source.readString();
         mPermissions = source.readString();
         mRemoteId = source.readString();
+        mNeedsUpdateThumbnail = source.readInt() == 0;
+
     }
 
     @Override
     }
 
     @Override
@@ -131,6 +135,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         dest.writeString(mPublicLink);
         dest.writeString(mPermissions);
         dest.writeString(mRemoteId);
         dest.writeString(mPublicLink);
         dest.writeString(mPermissions);
         dest.writeString(mRemoteId);
+        dest.writeInt(mNeedsUpdateThumbnail ? 1 : 0);
     }
     
     /**
     }
     
     /**
@@ -343,6 +348,7 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         mPublicLink = null;
         mPermissions = null;
         mRemoteId = null;
         mPublicLink = null;
         mPermissions = null;
         mRemoteId = null;
+        mNeedsUpdateThumbnail = false;
     }
 
     /**
     }
 
     /**
@@ -408,6 +414,14 @@ public class OCFile implements Parcelable, Comparable<OCFile> {
         return mNeedsUpdating;
     }
     
         return mNeedsUpdating;
     }
     
+    public boolean needsUpdateThumbnail() {
+        return mNeedsUpdateThumbnail;
+    }
+
+    public void setNeedsUpdateThumbnail(boolean needsUpdateThumbnail) {
+        this.mNeedsUpdateThumbnail = needsUpdateThumbnail;
+    }
+
     public long getLastSyncDateForProperties() {
         return mLastSyncDateForProperties;
     }
     public long getLastSyncDateForProperties() {
         return mLastSyncDateForProperties;
     }
index 1adf697..bc59869 100644 (file)
@@ -31,7 +31,7 @@ import com.owncloud.android.MainApp;
 public class ProviderMeta {\r
 \r
     public static final String DB_NAME = "filelist";\r
 public class ProviderMeta {\r
 \r
     public static final String DB_NAME = "filelist";\r
-    public static final int DB_VERSION = 7;\r
+    public static final int DB_VERSION = 8;\r
 \r
     private ProviderMeta() {\r
     }\r
 \r
     private ProviderMeta() {\r
     }\r
@@ -70,6 +70,7 @@ public class ProviderMeta {
         public static final String FILE_PUBLIC_LINK = "public_link";\r
         public static final String FILE_PERMISSIONS = "permissions";\r
         public static final String FILE_REMOTE_ID = "remote_id";\r
         public static final String FILE_PUBLIC_LINK = "public_link";\r
         public static final String FILE_PERMISSIONS = "permissions";\r
         public static final String FILE_REMOTE_ID = "remote_id";\r
+        public static final String FILE_UPDATE_THUMBNAIL = "update_thumbnail";\r
 \r
         public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME\r
                 + " collate nocase asc";\r
 \r
         public static final String FILE_DEFAULT_SORT_ORDER = FILE_NAME\r
                 + " collate nocase asc";\r
index 2e34a8b..7799ca1 100644 (file)
@@ -391,6 +391,7 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
         long syncDate = System.currentTimeMillis();
         file.setLastSyncDateForProperties(syncDate);
         file.setLastSyncDateForData(syncDate);
         long syncDate = System.currentTimeMillis();
         file.setLastSyncDateForProperties(syncDate);
         file.setLastSyncDateForData(syncDate);
+        file.setNeedsUpdateThumbnail(true);
         file.setModificationTimestamp(mCurrentDownload.getModificationTimestamp());
         file.setModificationTimestampAtLastSyncForData(mCurrentDownload.getModificationTimestamp());
         // file.setEtag(mCurrentDownload.getEtag());    // TODO Etag, where available
         file.setModificationTimestamp(mCurrentDownload.getModificationTimestamp());
         file.setModificationTimestampAtLastSyncForData(mCurrentDownload.getModificationTimestamp());
         // file.setEtag(mCurrentDownload.getEtag());    // TODO Etag, where available
index 1dd452a..3a93c16 100644 (file)
@@ -97,6 +97,8 @@ public class FileContentProvider extends ContentProvider {
                 ProviderTableMeta.FILE_PERMISSIONS);
         mFileProjectionMap.put(ProviderTableMeta.FILE_REMOTE_ID,
                 ProviderTableMeta.FILE_REMOTE_ID);
                 ProviderTableMeta.FILE_PERMISSIONS);
         mFileProjectionMap.put(ProviderTableMeta.FILE_REMOTE_ID,
                 ProviderTableMeta.FILE_REMOTE_ID);
+        mFileProjectionMap.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL,
+                ProviderTableMeta.FILE_UPDATE_THUMBNAIL);
     }
 
     private static final int SINGLE_FILE = 1;
     }
 
     private static final int SINGLE_FILE = 1;
@@ -559,7 +561,8 @@ public class FileContentProvider extends ContentProvider {
                     + ProviderTableMeta.FILE_SHARE_BY_LINK + " INTEGER, "
                     + ProviderTableMeta.FILE_PUBLIC_LINK  + " TEXT, "
                     + ProviderTableMeta.FILE_PERMISSIONS  + " TEXT null,"
                     + ProviderTableMeta.FILE_SHARE_BY_LINK + " INTEGER, "
                     + ProviderTableMeta.FILE_PUBLIC_LINK  + " TEXT, "
                     + ProviderTableMeta.FILE_PERMISSIONS  + " TEXT null,"
-                    + ProviderTableMeta.FILE_REMOTE_ID  + " TEXT null);"
+                    + ProviderTableMeta.FILE_REMOTE_ID  + " TEXT null,"
+                    + ProviderTableMeta.FILE_UPDATE_THUMBNAIL  + " INTEGER);" //boolean
                     );
             
             // Create table ocshares
                     );
             
             // Create table ocshares
@@ -708,6 +711,23 @@ public class FileContentProvider extends ContentProvider {
             }
             if (!upgraded)
                 Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
             }
             if (!upgraded)
                 Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
+
+            if (oldVersion < 8 && newVersion >= 8) {
+                Log_OC.i("SQL", "Entering in the #8 ADD in onUpgrade");
+                db.beginTransaction();
+                try {
+                    db .execSQL("ALTER TABLE " + ProviderTableMeta.FILE_TABLE_NAME +
+                            " ADD COLUMN " + ProviderTableMeta.FILE_UPDATE_THUMBNAIL + " INTEGER " +
+                            " DEFAULT 0");
+
+                    upgraded = true;
+                    db.setTransactionSuccessful();
+                } finally {
+                    db.endTransaction();
+                }
+            }
+            if (!upgraded)
+                Log_OC.i("SQL", "OUT of the ADD in onUpgrade; oldVersion == " + oldVersion + ", newVersion == " + newVersion);
         }
     }
 
         }
     }
 
index ef95a8a..56b5131 100644 (file)
@@ -156,7 +156,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
                 thumbnail = getBitmapFromDiskCache(imageKey);\r
     \r
                 // Not found in disk cache\r
                 thumbnail = getBitmapFromDiskCache(imageKey);\r
     \r
                 // Not found in disk cache\r
-                if (thumbnail == null) { \r
+                if (thumbnail == null || file.needsUpdateThumbnail()) { \r
                     // Converts dp to pixel\r
                     Resources r = mContext.getResources();\r
                     int px = (int) Math.round(TypedValue.applyDimension(\r
                     // Converts dp to pixel\r
                     Resources r = mContext.getResources();\r
                     int px = (int) Math.round(TypedValue.applyDimension(\r
@@ -172,6 +172,9 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
     \r
                             // Add thumbnail to cache\r
                             addBitmapToCache(imageKey, thumbnail);\r
     \r
                             // Add thumbnail to cache\r
                             addBitmapToCache(imageKey, thumbnail);\r
+\r
+                            file.setNeedsUpdateThumbnail(false);\r
+                            mStorageManager.saveFile(file);\r
                         }\r
     \r
                     } else {\r
                         }\r
     \r
                     } else {\r
@@ -235,7 +238,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
   \r
     public void addBitmapToCache(String key, Bitmap bitmap) {\r
         synchronized (thumbnailDiskCacheLock) {\r
   \r
     public void addBitmapToCache(String key, Bitmap bitmap) {\r
         synchronized (thumbnailDiskCacheLock) {\r
-            if (mThumbnailCache != null && mThumbnailCache.getBitmap(key) == null) {\r
+            if (mThumbnailCache != null) {\r
                 mThumbnailCache.put(key, bitmap);\r
             }\r
         }\r
                 mThumbnailCache.put(key, bitmap);\r
             }\r
         }\r
@@ -363,7 +366,7 @@ public class FileListListAdapter extends BaseAdapter implements ListAdapter {
                 if (file.isImage()){\r
                      // Thumbnail in Cache?\r
                     Bitmap thumbnail = getBitmapFromDiskCache(String.valueOf(file.getRemoteId()));\r
                 if (file.isImage()){\r
                      // Thumbnail in Cache?\r
                     Bitmap thumbnail = getBitmapFromDiskCache(String.valueOf(file.getRemoteId()));\r
-                    if (thumbnail != null){\r
+                    if (thumbnail != null && !file.needsUpdateThumbnail()){\r
                         fileIcon.setImageBitmap(thumbnail);\r
                     } else {\r
                         // generate new Thumbnail\r
                         fileIcon.setImageBitmap(thumbnail);\r
                     } else {\r
                         // generate new Thumbnail\r