Use hash ok keys as actual key in thumbnails cache instead of custom transformed key
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / adapter / DiskLruImageCache.java
index ce60d55..de6d10b 100644 (file)
@@ -7,8 +7,6 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import android.content.Context;
 import android.graphics.Bitmap;
@@ -18,7 +16,7 @@ import android.util.Log;
 
 import com.jakewharton.disklrucache.DiskLruCache;
 import com.owncloud.android.BuildConfig;
-import com.owncloud.android.utils.Log_OC;
+import com.owncloud.android.lib.common.utils.Log_OC;
 
 public class DiskLruImageCache {
 
@@ -28,25 +26,17 @@ public class DiskLruImageCache {
     private static final int CACHE_VERSION = 1;
     private static final int VALUE_COUNT = 1;
     private static final int IO_BUFFER_SIZE = 8 * 1024;
-    private static final Pattern CAPITAL_LETTERS = Pattern.compile("[A-Z]"); 
-
-    private StringBuffer mValidKeyBuffer = new StringBuffer(64);
-    private StringBuffer mConversionBuffer = new StringBuffer(2).append('_'); 
             
-    private static final String TAG = "DiskLruImageCache";
+    private static final String TAG = DiskLruImageCache.class.getSimpleName();
 
     public DiskLruImageCache( Context context,String uniqueName, int diskCacheSize,
-        CompressFormat compressFormat, int quality ) {
-        try {
-                final File diskCacheDir = getDiskCacheDir(context, uniqueName );
-                mDiskCache = DiskLruCache.open(
-                        diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize 
-                );
-                mCompressFormat = compressFormat;
-                mCompressQuality = quality;
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+        CompressFormat compressFormat, int quality ) throws IOException {
+        final File diskCacheDir = getDiskCacheDir(context, uniqueName );
+        mDiskCache = DiskLruCache.open(
+                diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize 
+        );
+        mCompressFormat = compressFormat;
+        mCompressQuality = quality;
     }
 
     private boolean writeBitmapToFile( Bitmap bitmap, DiskLruCache.Editor editor )
@@ -178,16 +168,20 @@ public class DiskLruImageCache {
     }
     
     private String convertToValidKey(String key) {
-        Matcher capitalLettersMatcher = CAPITAL_LETTERS.matcher(key);
-        mValidKeyBuffer.delete(0, mValidKeyBuffer.length());
-        mConversionBuffer.delete(1, mConversionBuffer.length());
-        
-        while (capitalLettersMatcher.find()) {
-            mConversionBuffer.replace(1, 2, capitalLettersMatcher.group(0).toLowerCase()); 
-            capitalLettersMatcher.appendReplacement(mValidKeyBuffer, mConversionBuffer.toString());
-        }
-        capitalLettersMatcher.appendTail(mValidKeyBuffer);
-        return mValidKeyBuffer.toString();
+        return Integer.toString(key.hashCode());
     }
 
+    /**
+     * Remove passed key from cache
+     * @param key
+     */
+    public void removeKey( String key ) {
+        String validKey = convertToValidKey(key);
+        try {
+            mDiskCache.remove(validKey);
+            Log.d(TAG, "removeKey from cache: " + validKey);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
 }
\ No newline at end of file