diff --git a/pom.xml b/pom.xml
index c846f8a..39e94a5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,11 +36,6 @@
org.springframework.boot
spring-boot-starter-web
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
org.apache.poi
poi-ooxml
@@ -56,10 +51,6 @@
pdfbox
2.0.4
-
- org.mockito
- mockito-core
-
org.springframework.boot
spring-boot-configuration-processor
@@ -85,7 +76,28 @@
commons-io
2.6
-
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+ 2.1.6.RELEASE
+
+
+ junit
+ junit
+
+
+ org.springframework
+ spring-test
+
+
+ org.springframework.boot
+ spring-boot-test-autoconfigure
+
+
+ org.mockito
+ mockito-core
+
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java
index 5c11cc0..0b38ab0 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Company.java
@@ -10,8 +10,9 @@ import java.io.Serializable;
@Entity
@Data
@EqualsAndHashCode(callSuper = false)
-@RequiredArgsConstructor
@NoArgsConstructor
+@RequiredArgsConstructor
+@AllArgsConstructor
public class Company implements IModel {
@Id
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/AbstractService.java
similarity index 93%
rename from src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java
rename to src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/AbstractService.java
index 6fe3a91..65b2eb8 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/AbstractService.java
@@ -2,7 +2,6 @@ package dev.fyloz.trial.colorrecipesexplorer.core.services;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication;
import dev.fyloz.trial.colorrecipesexplorer.core.Preferences;
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityAlreadyExistsException;
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityNotFoundException;
@@ -20,14 +19,13 @@ import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
-public class GenericService> implements IGenericService {
+public abstract class AbstractService> implements IGenericService {
protected Logger logger = Preferences.logger;
protected R dao;
protected Class type;
- public GenericService(R dao, Class type) {
- this.dao = dao;
+ public AbstractService(Class type) {
this.type = type;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/InventoryService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/InventoryService.java
index e42fc74..a929c18 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/InventoryService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/InventoryService.java
@@ -4,6 +4,7 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.TooLowQuantityExcepti
import dev.fyloz.trial.colorrecipesexplorer.core.model.Material;
import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.InventoryDto;
import dev.fyloz.trial.colorrecipesexplorer.core.services.model.MaterialService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -15,7 +16,8 @@ public class InventoryService {
private MaterialService materialService;
- public InventoryService(MaterialService materialService) {
+ @Autowired
+ public void setMaterialService(MaterialService materialService) {
this.materialService = materialService;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/CompanyService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/CompanyService.java
index 7d59650..d0b9ea1 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/CompanyService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/CompanyService.java
@@ -4,7 +4,7 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityAlreadyEx
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityLinkedException;
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Company;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.dao.CompanyDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -13,13 +13,17 @@ import org.springframework.stereotype.Service;
import javax.validation.constraints.NotNull;
@Service
-public class CompanyService extends GenericService {
+public class CompanyService extends AbstractService {
private RecipeService recipeService;
+ public CompanyService() {
+ super(Company.class);
+ }
+
@Autowired
- public CompanyService(CompanyDao companyDao) {
- super(companyDao, Company.class);
+ public void setCompanyDao(CompanyDao companyDao) {
+ this.dao = companyDao;
}
// Pour éviter les dépendances circulaires
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialService.java
index 84398ab..df9940c 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialService.java
@@ -5,7 +5,7 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityNotFoundE
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Material;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MaterialType;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.core.services.files.SimdutService;
import dev.fyloz.trial.colorrecipesexplorer.dao.MaterialDao;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,15 +19,27 @@ import java.util.Optional;
import java.util.stream.Collectors;
@Service
-public class MaterialService extends GenericService {
+public class MaterialService extends AbstractService {
private MixQuantityService mixQuantityService;
private SimdutService simdutService;
+ public MaterialService() {
+ super(Material.class);
+ }
+
@Autowired
- public MaterialService(MaterialDao materialDao, MixQuantityService mixQuantityService, SimdutService simdutService) {
- super(materialDao, Material.class);
+ public void setMaterialDao(MaterialDao materialDao) {
+ this.dao = materialDao;
+ }
+
+ @Autowired
+ public void setMixQuantityService(MixQuantityService mixQuantityService) {
this.mixQuantityService = mixQuantityService;
+ }
+
+ @Autowired
+ public void setSimdutService(SimdutService simdutService) {
this.simdutService = simdutService;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialTypeService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialTypeService.java
index 98a6fcf..8dee88e 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialTypeService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MaterialTypeService.java
@@ -7,27 +7,33 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.EntityNotFoundE
import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MaterialType;
import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.MaterialTypeEditorDto;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.dao.MaterialTypeDao;
-import org.commonmark.node.Link;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
@Service
-public class MaterialTypeService extends GenericService {
+public class MaterialTypeService extends AbstractService {
private MaterialService materialService;
private List defaultMaterialTypes = new LinkedList<>();
+ public MaterialTypeService() {
+ super(MaterialType.class);
+ }
+
@Autowired
- public MaterialTypeService(MaterialTypeDao materialTypeDao, MaterialService materialService) {
- super(materialTypeDao, MaterialType.class);
+ public void setMaterialTypeDao(MaterialTypeDao materialTypeDao) {
+ this.dao = materialTypeDao;
+ }
+
+ @Autowired
+ public void setMaterialService(MaterialService materialService) {
this.materialService = materialService;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixQuantityService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixQuantityService.java
index 48078d1..c98dcb9 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixQuantityService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixQuantityService.java
@@ -2,17 +2,21 @@ package dev.fyloz.trial.colorrecipesexplorer.core.services.model;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Material;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MixQuantity;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.dao.MixQuantityDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
-public class MixQuantityService extends GenericService {
+public class MixQuantityService extends AbstractService {
+
+ public MixQuantityService() {
+ super(MixQuantity.class);
+ }
@Autowired
- public MixQuantityService(MixQuantityDao mixQuantityDao) {
- super(mixQuantityDao, MixQuantity.class);
+ public void setMixQuantityDao(MixQuantityDao mixQuantityDao) {
+ this.dao = mixQuantityDao;
}
/**
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixService.java
index b2e47b9..593a2c9 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixService.java
@@ -7,7 +7,7 @@ import dev.fyloz.trial.colorrecipesexplorer.core.model.Mix;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MixType;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe;
import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.MixFormDto;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.core.utils.MixBuilder;
import dev.fyloz.trial.colorrecipesexplorer.dao.MixDao;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,17 +19,33 @@ import java.util.Comparator;
import java.util.stream.Collectors;
@Service
-public class MixService extends GenericService {
+public class MixService extends AbstractService {
private MaterialService materialService;
private MixQuantityService mixQuantityService;
private MixTypeService mixTypeService;
+ public MixService() {
+ super(Mix.class);
+ }
+
@Autowired
- public MixService(MixDao mixDao, MaterialService materialService, MixQuantityService mixQuantityService, MixTypeService mixTypeService) {
- super(mixDao, Mix.class);
+ public void setMixDao(MixDao mixDao) {
+ this.dao = mixDao;
+ }
+
+ @Autowired
+ public void setMaterialService(MaterialService materialService) {
this.materialService = materialService;
+ }
+
+ @Autowired
+ public void setMixQuantityService(MixQuantityService mixQuantityService) {
this.mixQuantityService = mixQuantityService;
+ }
+
+ @Autowired
+ public void setMixTypeService(MixTypeService mixTypeService) {
this.mixTypeService = mixTypeService;
}
@@ -47,7 +63,8 @@ public class MixService extends GenericService {
/**
* Récupère les produits disponibles pour un mélange existant.
- *`
+ * `
+ *
* @param mix Le mélange
* @return Les produits disponibles pour ce mélange
*/
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixTypeService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixTypeService.java
index df0fdd7..0e167f5 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixTypeService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/MixTypeService.java
@@ -6,24 +6,30 @@ import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Material;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MaterialType;
import dev.fyloz.trial.colorrecipesexplorer.core.model.MixType;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.dao.MixTypeDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.validation.constraints.NotNull;
import java.util.Optional;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
@Service
-public class MixTypeService extends GenericService {
+public class MixTypeService extends AbstractService {
private MaterialService materialService;
+ public MixTypeService() {
+ super(MixType.class);
+ }
+
@Autowired
- public MixTypeService(MixTypeDao mixTypeDao, MaterialService materialService) {
- super(mixTypeDao, MixType.class);
+ public void setMixTypeDao(MixTypeDao mixTypeDao) {
+ this.dao = mixTypeDao;
+ }
+
+ @Autowired
+ public void setMaterialService(MaterialService materialService) {
this.materialService = materialService;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/RecipeService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/RecipeService.java
index a64e03d..5d6cc41 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/RecipeService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/RecipeService.java
@@ -5,7 +5,7 @@ import dev.fyloz.trial.colorrecipesexplorer.core.model.Mix;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe;
import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.RecipeEditorFormDto;
import dev.fyloz.trial.colorrecipesexplorer.core.model.dto.RecipeExplorerFormDto;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.core.services.files.ImagesService;
import dev.fyloz.trial.colorrecipesexplorer.dao.RecipeDao;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,19 +17,39 @@ import java.util.*;
import java.util.stream.Collectors;
@Service
-public class RecipeService extends GenericService {
+public class RecipeService extends AbstractService {
private CompanyService companyService;
private MixService mixService;
private StepService stepService;
private ImagesService imagesService;
+ public RecipeService() {
+ super(Recipe.class);
+ }
+
@Autowired
- public RecipeService(RecipeDao recipeDao, CompanyService companyService, MixService mixService, StepService stepService, ImagesService imagesService) {
- super(recipeDao, Recipe.class);
+ public void setRecipeDao(RecipeDao recipeDao) {
+ this.dao = recipeDao;
+ }
+
+ @Autowired
+ public void setCompanyService(CompanyService companyService) {
this.companyService = companyService;
+ }
+
+ @Autowired
+ public void setMixService(MixService mixService) {
this.mixService = mixService;
+ }
+
+ @Autowired
+ public void setStepService(StepService stepService) {
this.stepService = stepService;
+ }
+
+ @Autowired
+ public void setImagesService(ImagesService imagesService) {
this.imagesService = imagesService;
}
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/StepService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/StepService.java
index e25afa0..a87eaf5 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/StepService.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/model/StepService.java
@@ -2,22 +2,25 @@ package dev.fyloz.trial.colorrecipesexplorer.core.services.model;
import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe;
import dev.fyloz.trial.colorrecipesexplorer.core.model.RecipeStep;
-import dev.fyloz.trial.colorrecipesexplorer.core.services.GenericService;
+import dev.fyloz.trial.colorrecipesexplorer.core.services.AbstractService;
import dev.fyloz.trial.colorrecipesexplorer.dao.StepDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.stream.Collectors;
@Service
-public class StepService extends GenericService {
+public class StepService extends AbstractService {
+
+ public StepService() {
+ super(RecipeStep.class);
+ }
@Autowired
- public StepService(StepDao stepDao) {
- super(stepDao, RecipeStep.class);
+ public void setStepDao(StepDao stepDao) {
+ this.dao = stepDao;
}
/**
diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/dao/MaterialDao.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/dao/MaterialDao.java
index 130ff81..b9d48f3 100644
--- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/dao/MaterialDao.java
+++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/dao/MaterialDao.java
@@ -10,12 +10,13 @@ import java.util.Optional;
@Repository
public interface MaterialDao extends JpaRepository {
- Optional findByName(String name);
-
- List findAllByMaterialType(MaterialType materialType);
boolean existsByName(String name);
boolean existsByMaterialType(MaterialType materialType);
+ Optional findByName(String name);
+
+ List findAllByMaterialType(MaterialType materialType);
+
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e4877b0..88e49c1 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,26 +1,16 @@
+# DATABASE
spring.datasource.url=jdbc:h2:file:./workdir/recipes
spring.datasource.username=sa
spring.datasource.password=LWK4Y7TvEbNyhu1yCoG3
-spring.datasource.driver-class-name=org.h2.Driver
-
-spring.thymeleaf.template-loader-path=classpath:/src/main/java/resources/templates
-spring.thymeleaf.suffix=.html
-
-spring.messages.fallback-to-system-locale=true
-
-spring.servlet.multipart.max-file-size=10MB
-spring.servlet.multipart.max-request-size=15MB
-
-spring.jpa.hibernate.ddl-auto=update
-spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+# DATABASE CONSOLE
spring.h2.console.path=/dbconsole
-spring.h2.console.settings.trace=true
-spring.h2.console.settings.web-allow-others=true
+# DATABASE CONSOLE REMOTE
+spring.h2.console.settings.trace=false
+spring.h2.console.settings.web-allow-others=false
+# PORT
server.port=9090
-server.http2.enabled=true
-server.error.whitelabel.enabled=false
# CRE CONFIG
cre.server.upload-directory=./workdir
@@ -41,3 +31,20 @@ entities.material-types.base-name=Base
# DEBUG
spring.jpa.show-sql=true
spring.h2.console.enabled=true
+
+# DO NOT MODIFY
+spring.datasource.driver-class-name=org.h2.Driver
+
+spring.thymeleaf.template-loader-path=classpath:/src/main/java/resources/templates
+spring.thymeleaf.suffix=.html
+
+spring.messages.fallback-to-system-locale=true
+
+spring.servlet.multipart.max-file-size=10MB
+spring.servlet.multipart.max-request-size=15MB
+
+spring.jpa.hibernate.ddl-auto=update
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+
+server.http2.enabled=true
+server.error.whitelabel.enabled=false