diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 8f14f62236928bf8e2632f06b29a268fffd1e151..a950c4211b98c5a691c4fbb4a086ebd1a4931f78 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/.idea/misc.xml b/.idea/misc.xml index 39638799269d0193201b39e5276d8236659f97fe..75dac502959ec4f6e5232282499067f85aa716f5 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 de0c2172c2d5dde915f04c4f4a62d2d9c42b7962..4844a6044e7f41d410058e3c18a9713960491f2c 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 2fd12020b8373bde88711bbf1ffadab2e17f3e71..f333e97456b37c3624d2453b44f40cd416199f66 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 0000000000000000000000000000000000000000..a9a8baa25909bb35979f3ac0caa1301e8ff2147d --- /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 86246b0d2770be802f531b256077fc5b326a8119..baf9bd6182714a82fb5d97f87e6f0bf675e8133f 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 21e4029cc043aa84b3a80c8017fe35cb63f637cc..2689d89ac7580b095dd31f31fb0c4c89dabb44db 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 55ab14b9bb8cd8f10b7f8bf6a99a0c23280d9721..33adfe57b14a069aaf6ddb326e5496df5b5603f1 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 60beab22d796e881e38c34f187a5566c3411ebb2..23edcd5a9ff9f604b53a42e7816256d8f7056c6e 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 d7f89e101357f65fb58c89c2d0fe2ae36f88d835..262446767936eb8f79c07939064b29f07f14df55 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"