Skip to content
Snippets Groups Projects
Commit 29f5bbdb authored by Tamás Szabó's avatar Tamás Szabó
Browse files

implement room database

parent 70604aad
No related branches found
No related tags found
2 merge requests!7implement room database,!9labor5
Showing
with 197 additions and 2 deletions
No preview for this file type
......@@ -45,5 +45,9 @@ dependencies {
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
implementation 'com.google.dagger:dagger-android:2.11'
compileOnly 'javax.annotation:jsr250-api:1.0'
// Room
implementation 'android.arch.persistence.room:runtime:1.0.0'
annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
}
......@@ -2,6 +2,7 @@ package me.szaki.xkcd.xkcdbrowser;
import android.app.Application;
import me.szaki.xkcd.xkcdbrowser.database.DBModule;
import me.szaki.xkcd.xkcdbrowser.ui.UIModule;
public class XKCDBrowserApplication extends Application {
......@@ -10,6 +11,6 @@ public class XKCDBrowserApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
injector = DaggerXKCDBrowserApplicationComponent.builder().uIModule(new UIModule(this)).build();
injector = DaggerXKCDBrowserApplicationComponent.builder().uIModule(new UIModule(this)).dBModule(new DBModule(this)).build();
}
}
......@@ -4,6 +4,7 @@ package me.szaki.xkcd.xkcdbrowser;
import javax.inject.Singleton;
import dagger.Component;
import me.szaki.xkcd.xkcdbrowser.database.DBModule;
import me.szaki.xkcd.xkcdbrowser.interactor.InteractorModule;
import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
import me.szaki.xkcd.xkcdbrowser.ui.UIModule;
......@@ -12,7 +13,7 @@ import me.szaki.xkcd.xkcdbrowser.ui.favorites.FavoritesActivity;
import me.szaki.xkcd.xkcdbrowser.ui.main.MainActivity;
@Singleton
@Component(modules = {UIModule.class, InteractorModule.class})
@Component(modules = {UIModule.class, InteractorModule.class, DBModule.class})
public interface XKCDBrowserApplicationComponent {
void inject(MainActivity mainActivity);
......
package me.szaki.xkcd.xkcdbrowser.database;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Update;
import java.util.List;
import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
@Dao
public interface ComicsDAO {
@Query("SELECT * FROM ComicStrip")
public List<ComicStrip> getAllComics();
@Query("SELECT * FROM ComicStrip WHERE id = :id")
public ComicStrip getComic(Long id);
@Insert
public void insertAll(ComicStrip... comic);
@Update
public void update(ComicStrip comic);
@Delete
public void delete(ComicStrip comic);
}
package me.szaki.xkcd.xkcdbrowser.database;
import android.arch.persistence.room.Database;
import android.arch.persistence.room.RoomDatabase;
import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
@Database(entities = {ComicStrip.class}, version = 1)
public abstract class ComicsDatabase extends RoomDatabase {
public abstract ComicsDAO getDAO();
}
\ No newline at end of file
package me.szaki.xkcd.xkcdbrowser.database;
import android.arch.persistence.room.Room;
import android.content.Context;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public class DBModule {
private Context context;
public DBModule(Context context) {
this.context = context;
}
@Provides
@Singleton
public ComicsDatabase provideComicsDatabase() {
return Room.databaseBuilder(this.context, ComicsDatabase.class, "ComicStrip").build();
}
}
package me.szaki.xkcd.xkcdbrowser.model;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
@Entity
public class ComicStrip {
@PrimaryKey(autoGenerate = true)
int id;
String month;
Long num;
String link;
String year;
String news;
String safe_title;
String transcript;
String alt;
String img;
String title;
String day;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
public Long getNum() {
return num;
}
public void setNum(Long num) {
this.num = num;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getNews() {
return news;
}
public void setNews(String news) {
this.news = news;
}
public String getSafe_title() {
return safe_title;
}
public void setSafe_title(String safe_title) {
this.safe_title = safe_title;
}
public String getTranscript() {
return transcript;
}
public void setTranscript(String transcript) {
this.transcript = transcript;
}
public String getAlt() {
return alt;
}
public void setAlt(String alt) {
this.alt = alt;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
}
......@@ -3,6 +3,7 @@ package me.szaki.xkcd.xkcdbrowser.ui.favorites;
import javax.inject.Inject;
import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase;
import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
import me.szaki.xkcd.xkcdbrowser.ui.Presenter;
......@@ -10,6 +11,9 @@ public class FavoritesPresenter extends Presenter<FavoritesScreen> {
@Inject
ComicsInteractor comicsInteractor;
@Inject
ComicsDatabase db;
@Override
public void attachScreen(FavoritesScreen screen) {
super.attachScreen(screen);
......
......@@ -3,6 +3,7 @@ package me.szaki.xkcd.xkcdbrowser.ui.main;
import javax.inject.Inject;
import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase;
import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
import me.szaki.xkcd.xkcdbrowser.ui.Presenter;
......@@ -10,6 +11,9 @@ public class MainPresenter extends Presenter<MainScreen> {
@Inject
ComicsInteractor comicsInteractor;
@Inject
ComicsDatabase db;
@Override
public void attachScreen(MainScreen screen) {
super.attachScreen(screen);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment