Use interfaces for database managers, create a source manager
This commit is contained in:
@@ -5,9 +5,17 @@ import android.content.Context;
|
||||
import com.pushtorefresh.storio.sqlite.SQLiteTypeMapping;
|
||||
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
|
||||
import com.pushtorefresh.storio.sqlite.impl.DefaultStorIOSQLite;
|
||||
import com.pushtorefresh.storio.sqlite.operations.delete.DeleteResult;
|
||||
import com.pushtorefresh.storio.sqlite.operations.delete.DeleteResults;
|
||||
import com.pushtorefresh.storio.sqlite.operations.put.PutResult;
|
||||
import com.pushtorefresh.storio.sqlite.operations.put.PutResults;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import eu.kanade.mangafeed.data.managers.ChapterManager;
|
||||
import eu.kanade.mangafeed.data.managers.ChapterManagerImpl;
|
||||
import eu.kanade.mangafeed.data.managers.MangaManager;
|
||||
import eu.kanade.mangafeed.data.managers.MangaManagerImpl;
|
||||
import eu.kanade.mangafeed.data.models.Chapter;
|
||||
import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteDeleteResolver;
|
||||
import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteGetResolver;
|
||||
@@ -16,16 +24,17 @@ import eu.kanade.mangafeed.data.models.Manga;
|
||||
import eu.kanade.mangafeed.data.models.MangaStorIOSQLiteDeleteResolver;
|
||||
import eu.kanade.mangafeed.data.models.MangaStorIOSQLitePutResolver;
|
||||
import eu.kanade.mangafeed.data.resolvers.MangaWithUnreadGetResolver;
|
||||
import rx.Observable;
|
||||
|
||||
public class DatabaseHelper {
|
||||
public class DatabaseHelper implements MangaManager, ChapterManager {
|
||||
|
||||
private StorIOSQLite db;
|
||||
public MangaManager manga;
|
||||
public ChapterManager chapter;
|
||||
private StorIOSQLite mDb;
|
||||
private MangaManagerImpl mMangaManager;
|
||||
private ChapterManagerImpl mChapterManager;
|
||||
|
||||
public DatabaseHelper(Context context) {
|
||||
|
||||
db = DefaultStorIOSQLite.builder()
|
||||
mDb = DefaultStorIOSQLite.builder()
|
||||
.sqliteOpenHelper(new DbOpenHelper(context))
|
||||
.addTypeMapping(Manga.class, SQLiteTypeMapping.<Manga>builder()
|
||||
.putResolver(new MangaStorIOSQLitePutResolver())
|
||||
@@ -39,8 +48,67 @@ public class DatabaseHelper {
|
||||
.build())
|
||||
.build();
|
||||
|
||||
manga = new MangaManager(db);
|
||||
chapter = new ChapterManager(db);
|
||||
mMangaManager = new MangaManagerImpl(mDb);
|
||||
mChapterManager = new ChapterManagerImpl(mDb);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<Chapter>> getChapters(Manga manga) {
|
||||
return mChapterManager.getChapters(manga);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<PutResult> insertChapter(Chapter chapter) {
|
||||
return mChapterManager.insertChapter(chapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<PutResults<Chapter>> insertChapters(List<Chapter> chapters) {
|
||||
return mChapterManager.insertChapters(chapters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable insertOrRemoveChapters(Manga manga, List<Chapter> chapters) {
|
||||
return mChapterManager.insertOrRemoveChapters(manga, chapters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<DeleteResult> deleteChapter(Chapter chapter) {
|
||||
return mChapterManager.deleteChapter(chapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<DeleteResults<Chapter>> deleteChapters(List<Chapter> chapters) {
|
||||
return mChapterManager.deleteChapters(chapters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<Manga>> getMangas() {
|
||||
return mMangaManager.getMangas();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<List<Manga>> getMangasWithUnread() {
|
||||
return mMangaManager.getMangasWithUnread();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<PutResult> insertManga(Manga manga) {
|
||||
return mMangaManager.insertManga(manga);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<PutResults<Manga>> insertMangas(List<Manga> mangas) {
|
||||
return mMangaManager.insertMangas(mangas);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<DeleteResult> deleteManga(Manga manga) {
|
||||
return mMangaManager.deleteManga(manga);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Observable<DeleteResults<Manga>> deleteMangas(List<Manga> mangas) {
|
||||
return mMangaManager.deleteMangas(mangas);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package eu.kanade.mangafeed.data.helpers;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import eu.kanade.mangafeed.data.caches.CacheManager;
|
||||
import eu.kanade.mangafeed.sources.Batoto;
|
||||
import eu.kanade.mangafeed.sources.Source;
|
||||
|
||||
public class SourceManager {
|
||||
|
||||
public static final int BATOTO = 1;
|
||||
|
||||
private HashMap<Integer, Source> mSourcesMap;
|
||||
private NetworkHelper mNetworkHelper;
|
||||
private CacheManager mCacheManager;
|
||||
|
||||
public SourceManager(NetworkHelper networkHelper, CacheManager cacheManager) {
|
||||
mSourcesMap = new HashMap<>();
|
||||
mNetworkHelper = networkHelper;
|
||||
mCacheManager = cacheManager;
|
||||
}
|
||||
|
||||
public Source get(int sourceKey) {
|
||||
if (!mSourcesMap.containsKey(sourceKey)) {
|
||||
mSourcesMap.put(sourceKey, createSource(sourceKey));
|
||||
}
|
||||
return mSourcesMap.get(sourceKey);
|
||||
}
|
||||
|
||||
private Source createSource(int sourceKey) {
|
||||
switch (sourceKey) {
|
||||
case BATOTO:
|
||||
return new Batoto(mNetworkHelper, mCacheManager);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user