From b7b9dadb326c99c50c448147c683f3fcac1615ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Szab=C3=B3?= <tamas@szaboo.com> Date: Mon, 16 Apr 2018 23:33:17 +0200 Subject: [PATCH] implements interactors - dbinteractor - network interactor --- .idea/caches/build_file_checksums.ser | Bin 534 -> 534 bytes .idea/misc.xml | 2 +- .../interactor/InteractorModule.java | 10 ++++++ .../interactor/comics/ComicsInteractor.java | 11 ++++++ .../interactor/comics/DBInteractor.java | 33 ++++++++++++++++++ .../xkcd/xkcdbrowser/network/StringUtil.java | 2 +- .../xkcdbrowser/network/api/ComicApi.java | 11 ++++++ .../ui/favorites/FavoritesPresenter.java | 4 +-- .../xkcdbrowser/ui/main/MainPresenter.java | 4 +-- swagger.yaml | 17 ++++++++- 10 files changed, 87 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/DBInteractor.java diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 8f14f62236928bf8e2632f06b29a268fffd1e151..a950c4211b98c5a691c4fbb4a086ebd1a4931f78 100644 GIT binary patch delta 33 qcmbQnGL2=z43-O?CQmlb$z&8<?D=#0X^%M{_WPfmn#FL=uL1!6<PYNj delta 33 qcmbQnGL2=z43_gpg|BR!lgTLf|3KG<O;Q3HnUA!b4a7=bRR93^7Y=m* diff --git a/.idea/misc.xml b/.idea/misc.xml index 3963879..75dac50 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -24,7 +24,7 @@ </value> </option> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/build/classes" /> </component> <component name="ProjectType"> diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/InteractorModule.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/InteractorModule.java index de0c217..4844a60 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/InteractorModule.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/InteractorModule.java @@ -1,13 +1,23 @@ package me.szaki.xkcd.xkcdbrowser.interactor; +import javax.inject.Singleton; + import dagger.Module; import dagger.Provides; import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor; +import me.szaki.xkcd.xkcdbrowser.interactor.comics.DBInteractor; @Module public class InteractorModule { + @Singleton @Provides public ComicsInteractor provideComicsInteractor() { return new ComicsInteractor(); } + + @Singleton + @Provides + public DBInteractor provideDBInteractor() { + return new DBInteractor(); + } } diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/ComicsInteractor.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/ComicsInteractor.java index 2fd1202..f333e97 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/ComicsInteractor.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/ComicsInteractor.java @@ -2,6 +2,8 @@ package me.szaki.xkcd.xkcdbrowser.interactor.comics; import java.io.IOException; +import java.util.Date; +import java.util.Random; import javax.inject.Inject; @@ -20,4 +22,13 @@ public class ComicsInteractor { public Comic getComic(long id) throws IOException { return this.comicApi.getComic(id).execute().body(); } + + public Comic getRandomComic() throws IOException { + Random r = new Random(new Date().getTime()); + return this.comicApi.getComic(r.nextLong()).execute().body(); + } + + public Comic getLatestComic() throws IOException { + return this.comicApi.getCurrentComic().execute().body(); + } } diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/DBInteractor.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/DBInteractor.java new file mode 100644 index 0000000..a9a8baa --- /dev/null +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/interactor/comics/DBInteractor.java @@ -0,0 +1,33 @@ +package me.szaki.xkcd.xkcdbrowser.interactor.comics; + +import java.util.Date; +import java.util.List; +import java.util.Random; + +import javax.inject.Inject; + +import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase; +import me.szaki.xkcd.xkcdbrowser.model.ComicStrip; + +public class DBInteractor { + @Inject + ComicsDatabase db; + + public List<ComicStrip> getComics() { + return db.getDAO().getAllComics(); + } + + public ComicStrip getComic(Long id) { + return db.getDAO().getComic(id); + } + + public void deleteComic(ComicStrip c) { + db.getDAO().delete(c); + } + + public void saveComic(ComicStrip c) { + db.getDAO().insertAll(c); + } + + +} diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/StringUtil.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/StringUtil.java index 86246b0..baf9bd6 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/StringUtil.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/StringUtil.java @@ -1,6 +1,6 @@ package me.szaki.xkcd.xkcdbrowser.network; -@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2018-04-16T20:13:49.474+02:00") +@javax.annotation.Generated(value = "class io.swagger.codegen.languages.JavaClientCodegen", date = "2018-04-16T23:20:40.798+02:00") public class StringUtil { /** * Check if the given array contains the given value (with case-insensitive comparison). diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/api/ComicApi.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/api/ComicApi.java index 21e4029..2689d89 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/api/ComicApi.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/network/api/ComicApi.java @@ -17,6 +17,17 @@ import java.util.Map; public interface ComicApi { + /** + * Get the current comic + * + * @return Call<Comic> + */ + + @GET("info.0.json") + Call<Comic> getCurrentComic(); + + + /** * Get a comic * diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java index 55ab14b..33adfe5 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java @@ -4,8 +4,8 @@ package me.szaki.xkcd.xkcdbrowser.ui.favorites; import javax.inject.Inject; import me.szaki.xkcd.xkcdbrowser.XKCDBrowserApplication; -import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase; import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor; +import me.szaki.xkcd.xkcdbrowser.interactor.comics.DBInteractor; import me.szaki.xkcd.xkcdbrowser.ui.Presenter; public class FavoritesPresenter extends Presenter<FavoritesScreen> { @@ -13,7 +13,7 @@ public class FavoritesPresenter extends Presenter<FavoritesScreen> { ComicsInteractor comicsInteractor; @Inject - ComicsDatabase db; + DBInteractor db; public FavoritesPresenter () { XKCDBrowserApplication.injector.inject(this); diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java index 60beab2..23edcd5 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java @@ -3,9 +3,9 @@ package me.szaki.xkcd.xkcdbrowser.ui.main; import javax.inject.Inject; -import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase; import me.szaki.xkcd.xkcdbrowser.XKCDBrowserApplication; import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor; +import me.szaki.xkcd.xkcdbrowser.interactor.comics.DBInteractor; import me.szaki.xkcd.xkcdbrowser.ui.Presenter; public class MainPresenter extends Presenter<MainScreen> { @@ -13,7 +13,7 @@ public class MainPresenter extends Presenter<MainScreen> { ComicsInteractor comicsInteractor; @Inject - ComicsDatabase db; + DBInteractor db; public MainPresenter () { XKCDBrowserApplication.injector.inject(this); diff --git a/swagger.yaml b/swagger.yaml index d7f89e1..2624467 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -40,7 +40,22 @@ paths: description: "successful operation" schema: $ref: "#/definitions/Comic" - + /info.0.json: + get: + tags: + - "comic" + summary: "Get the current comic" + description: "" + operationId: "getCurrentComic" + consumes: + - "application/json" + produces: + - "application/json" + responses: + 200: + description: "successful operation" + schema: + $ref: "#/definitions/Comic" definitions: Comic: type: "object" -- GitLab