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