package com.simplecity.amp_library.glide.fetcher; import com.bumptech.glide.Priority; import com.bumptech.glide.load.data.DataFetcher; import com.simplecity.amp_library.model.ArtworkProvider; import java.io.File; import java.io.InputStream; public class TypeFetcher implements DataFetcher<InputStream> { private static final String TAG = "MultiFetcher"; private DataFetcher<InputStream> dataFetcher; private ArtworkProvider artworkProvider; @ArtworkProvider.Type private int type; private File file; public TypeFetcher(ArtworkProvider artworkProvider, @ArtworkProvider.Type int type, File file) { this.artworkProvider = artworkProvider; this.type = type; this.file = file; } private InputStream loadData(DataFetcher<InputStream> dataFetcher, Priority priority) { InputStream inputStream; try { inputStream = dataFetcher.loadData(priority); } catch (Exception e) { if (dataFetcher != null) { dataFetcher.cleanup(); } inputStream = null; } return inputStream; } @Override public InputStream loadData(Priority priority) throws Exception { switch (type) { case ArtworkProvider.Type.MEDIA_STORE: dataFetcher = new MediaStoreFetcher(artworkProvider); break; case ArtworkProvider.Type.FOLDER: dataFetcher = new FolderFetcher(artworkProvider, file); break; case ArtworkProvider.Type.TAG: dataFetcher = new TagFetcher(artworkProvider); break; case ArtworkProvider.Type.LAST_FM: dataFetcher = new LastFmFetcher(artworkProvider); break; case ArtworkProvider.Type.ITUNES: dataFetcher = new ItunesFetcher(artworkProvider); break; } return loadData(dataFetcher, priority); } @Override public void cleanup() { if (dataFetcher != null) { dataFetcher.cleanup(); } } @Override public void cancel() { if (dataFetcher != null) { dataFetcher.cancel(); } } @Override public String getId() { String id = artworkProvider.getArtworkKey() + "_" + type; if (file != null) { id += "_" + file.hashCode(); } return id; } }