Get data from database

This commit is contained in:
inorichi
2015-09-26 14:25:18 +02:00
parent 9302ecfb92
commit 8b6bdfdfdc
18 changed files with 378 additions and 59 deletions

View File

@@ -2,42 +2,44 @@ package eu.kanade.mangafeed.data.helpers;
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.queries.Query;
import java.util.List;
import eu.kanade.mangafeed.data.managers.ChapterManager;
import eu.kanade.mangafeed.data.models.Chapter;
import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteDeleteResolver;
import eu.kanade.mangafeed.data.models.ChapterStorIOSQLiteGetResolver;
import eu.kanade.mangafeed.data.models.ChapterStorIOSQLitePutResolver;
import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.data.models.MangaStorIOSQLiteDeleteResolver;
import eu.kanade.mangafeed.data.models.MangaStorIOSQLiteGetResolver;
import eu.kanade.mangafeed.data.models.MangaStorIOSQLitePutResolver;
import eu.kanade.mangafeed.data.managers.MangaManager;
import eu.kanade.mangafeed.data.entities.Manga;
import eu.kanade.mangafeed.data.tables.MangasTable;
import rx.Observable;
/**
* Created by len on 23/09/2015.
*/
public class DatabaseHelper {
private StorIOSQLite db;
public MangaManager manga;
public ChapterManager chapter;
public DatabaseHelper(Context context) {
db = DefaultStorIOSQLite.builder()
.sqliteOpenHelper(new DbOpenHelper(context))
.build();
}
public StorIOSQLite getStorIODb() {
return db;
}
public Observable<List<Manga>> getMangas() {
return db.get()
.listOfObjects(Manga.class)
.withQuery(Query.builder()
.table(MangasTable.TABLE)
.addTypeMapping(Manga.class, SQLiteTypeMapping.<Manga>builder()
.putResolver(new MangaStorIOSQLitePutResolver())
.getResolver(new MangaStorIOSQLiteGetResolver())
.deleteResolver(new MangaStorIOSQLiteDeleteResolver())
.build())
.prepare()
.createObservable();
.addTypeMapping(Chapter.class, SQLiteTypeMapping.<Chapter>builder()
.putResolver(new ChapterStorIOSQLitePutResolver())
.getResolver(new ChapterStorIOSQLiteGetResolver())
.deleteResolver(new ChapterStorIOSQLiteDeleteResolver())
.build())
.build();
manga = new MangaManager(db);
chapter = new ChapterManager(db);
}
}

View File

@@ -7,9 +7,6 @@ import android.support.annotation.NonNull;
import eu.kanade.mangafeed.data.tables.MangasTable;
/**
* Created by len on 23/09/2015.
*/
public class DbOpenHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "mangafeed.db";

View File

@@ -0,0 +1,12 @@
package eu.kanade.mangafeed.data.managers;
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
public abstract class BaseManager {
protected StorIOSQLite db;
public BaseManager(StorIOSQLite db) {
this.db = db;
}
}

View File

@@ -0,0 +1,33 @@
package eu.kanade.mangafeed.data.managers;
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
import com.pushtorefresh.storio.sqlite.queries.Query;
import java.util.List;
import eu.kanade.mangafeed.data.models.Chapter;
import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.data.tables.ChaptersTable;
import rx.Observable;
/**
* Created by len on 26/09/2015.
*/
public class ChapterManager extends BaseManager {
public ChapterManager(StorIOSQLite db) {
super(db);
}
public Observable<List<Chapter>> get(Manga manga) {
return db.get()
.listOfObjects(Chapter.class)
.withQuery(Query.builder()
.table(ChaptersTable.TABLE)
.where(ChaptersTable.COLUMN_MANGA_ID + "=?")
.whereArgs(manga.id)
.build())
.prepare()
.createObservable();
}
}

View File

@@ -0,0 +1,37 @@
package eu.kanade.mangafeed.data.managers;
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
import com.pushtorefresh.storio.sqlite.operations.put.PutResult;
import com.pushtorefresh.storio.sqlite.queries.Query;
import java.util.List;
import eu.kanade.mangafeed.data.models.Manga;
import eu.kanade.mangafeed.data.tables.MangasTable;
import rx.Observable;
public class MangaManager extends BaseManager {
List<Manga> mangass;
public MangaManager(StorIOSQLite db) {
super(db);
}
public Observable<List<Manga>> get() {
return db.get()
.listOfObjects(Manga.class)
.withQuery(Query.builder()
.table(MangasTable.TABLE)
.build())
.prepare()
.createObservable();
}
public Observable<PutResult> insert(Manga manga) {
return db.put()
.object(manga)
.prepare()
.createObservable();
}
}

View File

@@ -0,0 +1,67 @@
package eu.kanade.mangafeed.data.models;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteColumn;
import com.pushtorefresh.storio.sqlite.annotations.StorIOSQLiteType;
import eu.kanade.mangafeed.data.tables.ChaptersTable;
@StorIOSQLiteType(table = ChaptersTable.TABLE)
public class Chapter {
@Nullable
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_ID, key = true)
public Long id;
@NonNull
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_MANGA_ID)
public int manga_id;
@NonNull
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_URL)
public String url;
@NonNull
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_NAME)
public String name;
@NonNull
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_READ)
public int read;
@NonNull
@StorIOSQLiteColumn(name = ChaptersTable.COLUMN_DATE_FETCH)
public long date_fetch;
public Chapter() {}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Chapter chapter = (Chapter) o;
if (manga_id != chapter.manga_id) return false;
if (read != chapter.read) return false;
if (date_fetch != chapter.date_fetch) return false;
if (id != null ? !id.equals(chapter.id) : chapter.id != null) return false;
if (!url.equals(chapter.url)) return false;
return name.equals(chapter.name);
}
@Override
public int hashCode() {
int result = id != null ? id.hashCode() : 0;
result = 31 * result + manga_id;
result = 31 * result + url.hashCode();
result = 31 * result + name.hashCode();
result = 31 * result + read;
result = 31 * result + (int) (date_fetch ^ (date_fetch >>> 32));
return result;
}
}

View File

@@ -1,8 +1,4 @@
package eu.kanade.mangafeed.data.entities;
/**
* Created by len on 23/09/2015.
*/
package eu.kanade.mangafeed.data.models;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -74,7 +70,7 @@ public class Manga {
@StorIOSQLiteColumn(name = MangasTable.COLUMN_CHAPTER_ORDER)
public int chapter_order;
Manga() {}
public Manga() {}
public Manga(String title) {
this.title = title;