From 11b68f914f2780068cd36d4b51248ba37a8a8e56 Mon Sep 17 00:00:00 2001 From: NoodleMage Date: Tue, 26 Jan 2016 15:02:16 +0100 Subject: [PATCH] Code optimization. Added comments. Few comment mistake fixes --- .../tachiyomi/data/cache/ChapterCache.java | 3 +- .../tachiyomi/data/cache/CoverCache.java | 122 +++++++++++++++--- 2 files changed, 105 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.java b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.java index 278b2f18a2..cece9a47d9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.java +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.java @@ -32,7 +32,7 @@ public class ChapterCache { /** Name of cache directory. */ private static final String PARAMETER_CACHE_DIRECTORY = "chapter_disk_cache"; - /** Application version. */ + /** Application cache version. */ private static final int PARAMETER_APP_VERSION = 1; /** The number of values per cache entry. Must be positive. */ @@ -55,7 +55,6 @@ public class ChapterCache { * @param context application environment interface. */ public ChapterCache(Context context) { - // Set context. this.context = context; // Initialize Json handler. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.java b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.java index 7f2697a37f..8c3a14f946 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.java +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/CoverCache.java @@ -20,33 +20,70 @@ import java.io.OutputStream; import eu.kanade.tachiyomi.util.DiskUtils; +/** + * Class used to create cover cache + * Makes us of Glide which can avoid repeating requests and save the file. + * It is not necessary to load the images to the cache. + * Names of files are created with the md5 of the thumbnailURL + */ public class CoverCache { + /** Name of cache directory. */ private static final String PARAMETER_CACHE_DIRECTORY = "cover_disk_cache"; - private Context context; - private File cacheDir; + /** Interface to global information about an application environment. */ + private final Context context; + /** Cache class used for cache management. */ + private final File cacheDir; + + /** + * Constructor of CoverCache. + * @param context application environment interface. + */ public CoverCache(Context context) { this.context = context; + + // Get cache directory from parameter. cacheDir = new File(context.getCacheDir(), PARAMETER_CACHE_DIRECTORY); + + // Create cache directory. createCacheDir(); } + /** + * Check if cache dir exist if not create directory. + * @return true if cache dir exist or is created. + */ private boolean createCacheDir() { + // TODO return value never used. return !cacheDir.exists() && cacheDir.mkdirs(); } + /** + * Download the cover with Glide (it can avoid repeating requests) and save the file. + * TODO maybe remove? + * @param thumbnailUrl url of thumbnail. + * @param headers headers included in Glide request. + */ public void save(String thumbnailUrl, LazyHeaders headers) { save(thumbnailUrl, headers, null); } - // Download the cover with Glide (it can avoid repeating requests) and save the file on this cache - // Optionally, load the image in the given image view when the resource is ready, if not null - public void save(String thumbnailUrl, LazyHeaders headers, ImageView imageView) { + /** + * Download the cover with Glide (it can avoid repeating requests) and save the file. + * @param thumbnailUrl url of thumbnail. + * @param headers headers included in Glide request. + * @param imageView imageView where picture should be displayed. + */ + private void save(String thumbnailUrl, LazyHeaders headers, ImageView imageView) { + + // Check if url is empty. if (TextUtils.isEmpty(thumbnailUrl)) + // Do not try and create the string. Instead... only try to realize the truth. There is no string. return; + // Download the cover with Glide and save the file. GlideUrl url = new GlideUrl(thumbnailUrl, headers); Glide.with(context) .load(url) @@ -54,7 +91,10 @@ public class CoverCache { @Override public void onResourceReady(File resource, GlideAnimation anim) { try { + // Copy the cover from Glide's cache to local cache. add(thumbnailUrl, resource); + + // Check if imageView isn't null and show picture in imageView. if (imageView != null) { loadFromCache(imageView, resource); } @@ -65,18 +105,31 @@ public class CoverCache { }); } - // Copy the cover from Glide's cache to this cache - public void add(String thumbnailUrl, File source) throws IOException { + + /** + * Copy the cover from Glide's cache to local cache. + * //TODO rename add => copyToLocalCache? + * @param thumbnailUrl url of thumbnail. + * @param source the cover image. + * @throws IOException TODO not returned atm? + */ + private void add(String thumbnailUrl, File source) throws IOException { + // Create cache directory. TODO is this needed. Already called in constructor. createCacheDir(); + + // Create destination file. File dest = new File(cacheDir, DiskUtils.hashKeyForDisk(thumbnailUrl)); + + // Check if file already exists, if true delete it. if (dest.exists()) dest.delete(); + // Write thumbnail image to file. InputStream in = new FileInputStream(source); try { OutputStream out = new FileOutputStream(dest); try { - // Transfer bytes from in to out + // Transfer bytes from in to out. byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { @@ -90,22 +143,40 @@ public class CoverCache { } } - // Get the cover from cache - public File get(String thumbnailUrl) { + /** + * Returns the cover from cache. + * TODO rename get => getCoverFromCache + * @param thumbnailUrl the thumbnail url. + * @return cover image. + */ + private File get(String thumbnailUrl) { return new File(cacheDir, DiskUtils.hashKeyForDisk(thumbnailUrl)); } - // Delete the cover from cache + /** + * Delete the cover file from the cache. + * TODO rename delete => deleteCoverFromCache. + * @param thumbnailUrl the thumbnail url. + * @return status of deletion. + */ public boolean delete(String thumbnailUrl) { + // Check if url is empty. if (TextUtils.isEmpty(thumbnailUrl)) return false; + // Remove file. File file = new File(cacheDir, DiskUtils.hashKeyForDisk(thumbnailUrl)); return file.exists() && file.delete(); } - // Save and load the image from cache - public void saveAndLoadFromCache(ImageView imageView, String thumbnailUrl, LazyHeaders headers) { + /** + * Save or load the image from cache + * @param imageView imageView where picture should be displayed. + * @param thumbnailUrl the thumbnail url. + * @param headers headers included in Glide request. + */ + public void saveOrLoadFromCache(ImageView imageView, String thumbnailUrl, LazyHeaders headers) { + // If file exist load it otherwise save it. File localCover = get(thumbnailUrl); if (localCover.exists()) { loadFromCache(imageView, localCover); @@ -114,8 +185,15 @@ public class CoverCache { } } - // If the image is already in our cache, use it. If not, load it with glide + /** + * If the image is already in our cache, use it. If not, load it with glide. + * TODO not used atm. + * @param imageView imageView where picture should be displayed. + * @param thumbnailUrl url of thumbnail. + * @param headers headers included in Glide request. + */ public void loadFromCacheOrNetwork(ImageView imageView, String thumbnailUrl, LazyHeaders headers) { + // If localCover exist load it from cache otherwise load it from network. File localCover = get(thumbnailUrl); if (localCover.exists()) { loadFromCache(imageView, localCover); @@ -124,8 +202,11 @@ public class CoverCache { } } - // Helper method to load the cover from the cache directory into the specified image view - // The file must exist + /** + * Helper method to load the cover from the cache directory into the specified image view. + * @param imageView imageView where picture should be displayed. + * @param file file to load. Must exist!. + */ private void loadFromCache(ImageView imageView, File file) { Glide.with(context) .load(file) @@ -134,8 +215,13 @@ public class CoverCache { .into(imageView); } - // Helper method to load the cover from network into the specified image view. - // It does NOT save the image in cache + /** + * Helper method to load the cover from network into the specified image view. + * It does NOT save the image in cache! + * @param imageView imageView where picture should be displayed. + * @param thumbnailUrl url of thumbnail. + * @param headers headers included in Glide request. + */ public void loadFromNetwork(ImageView imageView, String thumbnailUrl, LazyHeaders headers) { GlideUrl url = new GlideUrl(thumbnailUrl, headers); Glide.with(context)