19facd7399690405f4c35114972eb52c1a424e9deSam Juddpackage com.bumptech.glide.load;
21732686228f6309f8305e4b6c6066b845ab543dbSam Judd
31732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport android.util.Log;
41732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport com.bumptech.glide.load.engine.Resource;
51732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport com.bumptech.glide.load.engine.cache.DiskCache;
61732686228f6309f8305e4b6c6066b845ab543dbSam Judd
71732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport java.io.IOException;
81732686228f6309f8305e4b6c6066b845ab543dbSam Juddimport java.io.InputStream;
91732686228f6309f8305e4b6c6066b845ab543dbSam Judd
101732686228f6309f8305e4b6c6066b845ab543dbSam Juddpublic class CacheLoader {
111732686228f6309f8305e4b6c6066b845ab543dbSam Judd    private static final String TAG = "CacheLoader";
121732686228f6309f8305e4b6c6066b845ab543dbSam Judd    private DiskCache diskCache;
131732686228f6309f8305e4b6c6066b845ab543dbSam Judd
141732686228f6309f8305e4b6c6066b845ab543dbSam Judd    public CacheLoader(DiskCache diskCache) {
151732686228f6309f8305e4b6c6066b845ab543dbSam Judd        this.diskCache = diskCache;
161732686228f6309f8305e4b6c6066b845ab543dbSam Judd    }
171732686228f6309f8305e4b6c6066b845ab543dbSam Judd
181732686228f6309f8305e4b6c6066b845ab543dbSam Judd    public <Z> Resource<Z> load(Key key, ResourceDecoder<InputStream, Z> decoder, int width, int height) {
191732686228f6309f8305e4b6c6066b845ab543dbSam Judd        Resource<Z> result = null;
201732686228f6309f8305e4b6c6066b845ab543dbSam Judd        InputStream fromCache = diskCache.get(key);
211732686228f6309f8305e4b6c6066b845ab543dbSam Judd        if (fromCache != null) {
221732686228f6309f8305e4b6c6066b845ab543dbSam Judd            try {
231732686228f6309f8305e4b6c6066b845ab543dbSam Judd                result = decoder.decode(fromCache, width, height);
241732686228f6309f8305e4b6c6066b845ab543dbSam Judd            } catch (IOException e) {
251732686228f6309f8305e4b6c6066b845ab543dbSam Judd                if (Log.isLoggable(TAG, Log.DEBUG)) {
261732686228f6309f8305e4b6c6066b845ab543dbSam Judd                    Log.d(TAG, "Exception decoding image from cache", e);
271732686228f6309f8305e4b6c6066b845ab543dbSam Judd                }
281732686228f6309f8305e4b6c6066b845ab543dbSam Judd            }
291732686228f6309f8305e4b6c6066b845ab543dbSam Judd            if (result == null) {
301732686228f6309f8305e4b6c6066b845ab543dbSam Judd                if (Log.isLoggable(TAG, Log.DEBUG)) {
311732686228f6309f8305e4b6c6066b845ab543dbSam Judd                    Log.d(TAG, "Failed to decode image from cache or not present in cache");
321732686228f6309f8305e4b6c6066b845ab543dbSam Judd                }
331732686228f6309f8305e4b6c6066b845ab543dbSam Judd                diskCache.delete(key);
341732686228f6309f8305e4b6c6066b845ab543dbSam Judd            }
351732686228f6309f8305e4b6c6066b845ab543dbSam Judd        }
361732686228f6309f8305e4b6c6066b845ab543dbSam Judd        return result;
371732686228f6309f8305e4b6c6066b845ab543dbSam Judd    }
381732686228f6309f8305e4b6c6066b845ab543dbSam Judd}
39