From 079cd043fd1a14d1b2e5565b445b12ee935caefd Mon Sep 17 00:00:00 2001
From: BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
Date: Thu, 23 Sep 2021 17:30:15 +0200
Subject: [PATCH] Designed interfaces for controllers.

---
 .../IRetrieveCategoriesController.java        | 22 ++++++++++++++++
 .../controller/IRetrieveInfoController.java   | 26 +++++++++++++++++++
 .../ISubmitTransactionController.java         | 26 +++++++++++++++++++
 .../api}/ApiBadRequestException.java          |  2 +-
 .../api}/ApiErrorHandler.java                 |  4 +--
 .../api}/ApiRetrieveCategoriesController.java |  9 ++++---
 .../api}/ApiRetrieveInfoController.java       | 13 +++++-----
 .../api}/ApiServerErrorException.java         |  2 +-
 .../api}/ApiSubmitTransactionController.java  |  6 +++--
 .../sil/erp/back/db/DatabaseInterface.java    |  4 +--
 .../sil/erp/back/db/DatabaseSQLiteImpl.java   |  4 +--
 .../erp/back/{api => }/model/Category.java    |  2 +-
 .../back/{api => }/model/ErrorMessage.java    |  2 +-
 .../sil/erp/back/{api => }/model/Item.java    |  2 +-
 .../back/{api => }/model/RegistryEntry.java   |  2 +-
 15 files changed, 103 insertions(+), 23 deletions(-)
 create mode 100644 src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java
 create mode 100644 src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java
 create mode 100644 src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiBadRequestException.java (87%)
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiErrorHandler.java (92%)
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiRetrieveCategoriesController.java (85%)
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiRetrieveInfoController.java (84%)
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiServerErrorException.java (88%)
 rename src/main/java/fr/unistra/sil/erp/back/{api/controller => controller/api}/ApiSubmitTransactionController.java (82%)
 rename src/main/java/fr/unistra/sil/erp/back/{api => }/model/Category.java (95%)
 rename src/main/java/fr/unistra/sil/erp/back/{api => }/model/ErrorMessage.java (90%)
 rename src/main/java/fr/unistra/sil/erp/back/{api => }/model/Item.java (98%)
 rename src/main/java/fr/unistra/sil/erp/back/{api => }/model/RegistryEntry.java (97%)

diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java
new file mode 100644
index 0000000..b719adc
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveCategoriesController.java
@@ -0,0 +1,22 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Interface for designing access to categories.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface IRetrieveCategoriesController {
+    
+    /**
+     * Retrieves all categories.
+     * @return the response.
+     * @throws java.lang.Exception when the request cannot be served.
+     */
+    public ResponseEntity<Object> getCategories() throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java
new file mode 100644
index 0000000..8ca93af
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/IRetrieveInfoController.java
@@ -0,0 +1,26 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * Interface for designing the retrieval of articles.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface IRetrieveInfoController {
+    
+    /**
+     * Retrieves the list of items.
+     * @param cat
+     * @return
+     * @throws Exception 
+     */
+    public ResponseEntity<Object> retrieveInfo(
+            @RequestParam(value = "category", defaultValue = "") String cat
+        ) throws Exception;
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java b/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java
new file mode 100644
index 0000000..2f6ef53
--- /dev/null
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/ISubmitTransactionController.java
@@ -0,0 +1,26 @@
+/*
+ * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
+ * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
+ */
+package fr.unistra.sil.erp.back.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Interface for designing transaction submission.
+ * @author BEAUVAIS ANTOINE
+ */
+public interface ISubmitTransactionController {
+    
+    /**
+     * Submits a transaction to the application.
+     * @param request the HTTP Servlet Request, provided by Spring Web
+     * @param response the HTTP Servlet Response, provided by Spring Web
+     * @return the response served to the user.
+     */
+    public ResponseEntity<Object> submitTransaction(HttpServletRequest request,
+            HttpServletResponse response);
+    
+}
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
similarity index 87%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
index 645aa79..7443d03 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiBadRequestException.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiBadRequestException.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
 /**
  * HTTP error 400 Bad Request for the API.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
similarity index 92%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
index 749f936..2e85fb6 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiErrorHandler.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiErrorHandler.java
@@ -2,9 +2,9 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
-import fr.unistra.sil.erp.back.api.model.ErrorMessage;
+import fr.unistra.sil.erp.back.model.ErrorMessage;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.http.HttpStatus;
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
similarity index 85%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
index 3696798..fa4a767 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveCategoriesController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveCategoriesController.java
@@ -2,11 +2,12 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
 import static fr.unistra.sil.erp.back.Config.MAPPING_GETCATEGORIES;
 import fr.unistra.sil.erp.back.DatabaseSystem;
-import fr.unistra.sil.erp.back.api.model.Category;
+import fr.unistra.sil.erp.back.controller.IRetrieveCategoriesController;
+import fr.unistra.sil.erp.back.model.Category;
 import fr.unistra.sil.erp.back.db.DatabaseConnectionException;
 import fr.unistra.sil.erp.back.db.DatabaseInterface;
 import java.util.List;
@@ -22,7 +23,8 @@ import org.springframework.web.bind.annotation.RestController;
  * @author BEAUVAIS ANTOINE
  */
 @RestController
-public class ApiRetrieveCategoriesController {
+public class ApiRetrieveCategoriesController
+        implements IRetrieveCategoriesController {
     
     /**
      * Returns the list of categories in JSON format.
@@ -30,6 +32,7 @@ public class ApiRetrieveCategoriesController {
      * @throws ApiServerErrorException Database failure.
      */
     @GetMapping(MAPPING_GETCATEGORIES)
+    @Override
     public ResponseEntity<Object> getCategories() throws ApiServerErrorException
     {
         DatabaseInterface db;
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
similarity index 84%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
index 3593e99..c5a884f 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiRetrieveInfoController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiRetrieveInfoController.java
@@ -2,11 +2,12 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
 import static fr.unistra.sil.erp.back.Config.MAPPING_RETRIEVEALL;
 import fr.unistra.sil.erp.back.DatabaseSystem;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.controller.IRetrieveInfoController;
+import fr.unistra.sil.erp.back.model.Item;
 import fr.unistra.sil.erp.back.db.DatabaseConnectionException;
 import fr.unistra.sil.erp.back.db.DatabaseInterface;
 import java.util.List;
@@ -20,17 +21,17 @@ import org.springframework.web.bind.annotation.RestController;
 
 /**
  * REST controller for the item list.
- * @author BEAUVAIS ANTOINE <antoine.beauvais@etu.unistra.fr>
+ * @author BEAUVAIS ANTOINE
  */
 @RestController
-public class ApiRetrieveInfoController {
+public class ApiRetrieveInfoController implements IRetrieveInfoController {
     
     /**
      * Returns all products as a JSON response.
      * @param cat an optional category.
      * @return a JSON response.
-     * @throws fr.unistra.sil.erp.back.api.controller.ApiServerErrorException
-     * @throws fr.unistra.sil.erp.back.api.controller.ApiBadRequestException
+     * @throws fr.unistra.sil.erp.back.controller.api.ApiServerErrorException
+     * @throws fr.unistra.sil.erp.back.controller.api.ApiBadRequestException
      */
     @GetMapping(MAPPING_RETRIEVEALL)
     public ResponseEntity<Object> retrieveInfo(
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
similarity index 88%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
index 235fc98..7cfe6a0 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiServerErrorException.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiServerErrorException.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
 /**
  * Returns HTTP 500 error page.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java
similarity index 82%
rename from src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java
rename to src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java
index 761f360..0074b6c 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/controller/ApiSubmitTransactionController.java
+++ b/src/main/java/fr/unistra/sil/erp/back/controller/api/ApiSubmitTransactionController.java
@@ -2,9 +2,10 @@
  * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
  * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
  */
-package fr.unistra.sil.erp.back.api.controller;
+package fr.unistra.sil.erp.back.controller.api;
 
 import static fr.unistra.sil.erp.back.Config.MAPPING_SUBTRANSAC;
+import fr.unistra.sil.erp.back.controller.ISubmitTransactionController;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.springframework.http.ResponseEntity;
@@ -17,7 +18,8 @@ import org.springframework.web.bind.annotation.RestController;
  * @author BEAUVAIS ANTOINE
  */
 @RestController
-public class ApiSubmitTransactionController {
+public class ApiSubmitTransactionController
+        implements ISubmitTransactionController {
     
     @RequestMapping(value=MAPPING_SUBTRANSAC, method = RequestMethod.POST)
     public ResponseEntity<Object> submitTransaction(HttpServletRequest request,
diff --git a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
index 4c4b617..d9b5f58 100644
--- a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
+++ b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseInterface.java
@@ -4,8 +4,8 @@
  */
 package fr.unistra.sil.erp.back.db;
 
-import fr.unistra.sil.erp.back.api.model.Category;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.model.Category;
+import fr.unistra.sil.erp.back.model.Item;
 import java.util.List;
 
 /**
diff --git a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
index ce99530..a67ae65 100644
--- a/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
+++ b/src/main/java/fr/unistra/sil/erp/back/db/DatabaseSQLiteImpl.java
@@ -4,8 +4,8 @@
  */
 package fr.unistra.sil.erp.back.db;
 
-import fr.unistra.sil.erp.back.api.model.Category;
-import fr.unistra.sil.erp.back.api.model.Item;
+import fr.unistra.sil.erp.back.model.Category;
+import fr.unistra.sil.erp.back.model.Item;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/Category.java b/src/main/java/fr/unistra/sil/erp/back/model/Category.java
similarity index 95%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/Category.java
rename to src/main/java/fr/unistra/sil/erp/back/model/Category.java
index d27c80f..9e0fd21 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/Category.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Category.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.model;
+package fr.unistra.sil.erp.back.model;
 
 /**
  * Category entity.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java b/src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
similarity index 90%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
rename to src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
index b0b869b..c7fac54 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/ErrorMessage.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/ErrorMessage.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.model;
+package fr.unistra.sil.erp.back.model;
 
 /**
  * JSON error message.
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java b/src/main/java/fr/unistra/sil/erp/back/model/Item.java
similarity index 98%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
rename to src/main/java/fr/unistra/sil/erp/back/model/Item.java
index 0ff8512..b37069d 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/Item.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/Item.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.model;
+package fr.unistra.sil.erp.back.model;
 
 import java.math.BigDecimal;
 
diff --git a/src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java b/src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
similarity index 97%
rename from src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java
rename to src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
index 90d7ab7..1bd908b 100644
--- a/src/main/java/fr/unistra/sil/erp/back/api/model/RegistryEntry.java
+++ b/src/main/java/fr/unistra/sil/erp/back/model/RegistryEntry.java
@@ -2,7 +2,7 @@
  * CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-B
  * https://cecill.info/licences/Licence_CeCILL-B_V1-fr.html
  */
-package fr.unistra.sil.erp.back.api.model;
+package fr.unistra.sil.erp.back.model;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-- 
GitLab