X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/db4ccec8ee6668c37550be16a54e49aae830719b..00482b6dcb1e98da39df54374f7098b51d66bee5:/src/com/owncloud/android/ui/adapter/DiskLruImageCache.java diff --git a/src/com/owncloud/android/ui/adapter/DiskLruImageCache.java b/src/com/owncloud/android/ui/adapter/DiskLruImageCache.java index d3479af0..0f2536f5 100644 --- a/src/com/owncloud/android/ui/adapter/DiskLruImageCache.java +++ b/src/com/owncloud/android/ui/adapter/DiskLruImageCache.java @@ -1,3 +1,22 @@ +/** + * ownCloud Android client application + * + * Copyright (C) 2015 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + package com.owncloud.android.ui.adapter; import java.io.BufferedInputStream; @@ -8,16 +27,13 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.CompressFormat; import android.graphics.BitmapFactory; -import android.os.Environment; -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 { @@ -27,18 +43,19 @@ 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 String TAG = "DiskLruImageCache"; - - 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(); - } + + private static final String TAG = DiskLruImageCache.class.getSimpleName(); + + //public DiskLruImageCache( Context context,String uniqueName, int diskCacheSize, + public DiskLruImageCache( + File diskCacheDir, int diskCacheSize, CompressFormat compressFormat, int quality + ) throws IOException { + + mDiskCache = DiskLruCache.open( + diskCacheDir, CACHE_VERSION, VALUE_COUNT, diskCacheSize + ); + mCompressFormat = compressFormat; + mCompressQuality = quality; } private boolean writeBitmapToFile( Bitmap bitmap, DiskLruCache.Editor editor ) @@ -54,22 +71,12 @@ public class DiskLruImageCache { } } - private File getDiskCacheDir(Context context, String uniqueName) { - - // Check if media is mounted or storage is built-in, if so, try and use external cache dir - // otherwise use internal cache dir - final String cachePath = context.getExternalCacheDir().getPath(); - - Log_OC.d("DiskCache", "create dir: " + cachePath + File.separator + uniqueName); - - return new File(cachePath + File.separator + uniqueName); - } - public void put( String key, Bitmap data ) { DiskLruCache.Editor editor = null; + String validKey = convertToValidKey(key); try { - editor = mDiskCache.edit( key ); + editor = mDiskCache.edit( validKey ); if ( editor == null ) { return; } @@ -78,17 +85,17 @@ public class DiskLruImageCache { mDiskCache.flush(); editor.commit(); if ( BuildConfig.DEBUG ) { - Log.d( "cache_test_DISK_", "image put on disk cache " + key ); + Log_OC.d( "cache_test_DISK_", "image put on disk cache " + validKey ); } } else { editor.abort(); if ( BuildConfig.DEBUG ) { - Log.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + key ); + Log_OC.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + validKey ); } } } catch (IOException e) { if ( BuildConfig.DEBUG ) { - Log.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + key ); + Log_OC.d( "cache_test_DISK_", "ERROR on: image put on disk cache " + validKey ); } try { if ( editor != null ) { @@ -104,9 +111,10 @@ public class DiskLruImageCache { Bitmap bitmap = null; DiskLruCache.Snapshot snapshot = null; + String validKey = convertToValidKey(key); try { - snapshot = mDiskCache.get( key ); + snapshot = mDiskCache.get( validKey ); if ( snapshot == null ) { return null; } @@ -125,7 +133,8 @@ public class DiskLruImageCache { } if ( BuildConfig.DEBUG ) { - Log.d( "cache_test_DISK_", bitmap == null ? "not found" : "image read from disk " + key); + Log_OC.d("cache_test_DISK_", bitmap == null ? + "not found" : "image read from disk " + validKey); } return bitmap; @@ -136,8 +145,9 @@ public class DiskLruImageCache { boolean contained = false; DiskLruCache.Snapshot snapshot = null; + String validKey = convertToValidKey(key); try { - snapshot = mDiskCache.get( key ); + snapshot = mDiskCache.get( validKey ); contained = snapshot != null; } catch (IOException e) { e.printStackTrace(); @@ -153,7 +163,7 @@ public class DiskLruImageCache { public void clearCache() { if ( BuildConfig.DEBUG ) { - Log.d( "cache_test_DISK_", "disk cache CLEARED"); + Log_OC.d( "cache_test_DISK_", "disk cache CLEARED"); } try { mDiskCache.delete(); @@ -165,5 +175,22 @@ public class DiskLruImageCache { public File getCacheFolder() { return mDiskCache.getDirectory(); } + + private String convertToValidKey(String key) { + 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_OC.d(TAG, "removeKey from cache: " + validKey); + } catch (IOException e) { + e.printStackTrace(); + } + } } \ No newline at end of file