From 2ba8d7ccb8e4649d04711c7d6a9d6ae1e4045505 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Fri, 28 Feb 2020 16:11:48 -0500 Subject: [PATCH] Transition des beans depuis les constructeurs des services vers des setters pour faciliter les tests --- pom.xml | 32 ++++++++++----- .../core/model/Company.java | 3 +- ...nericService.java => AbstractService.java} | 6 +-- .../core/services/InventoryService.java | 4 +- .../core/services/model/CompanyService.java | 12 ++++-- .../core/services/model/MaterialService.java | 20 ++++++++-- .../services/model/MaterialTypeService.java | 18 ++++++--- .../services/model/MixQuantityService.java | 12 ++++-- .../core/services/model/MixService.java | 27 ++++++++++--- .../core/services/model/MixTypeService.java | 18 ++++++--- .../core/services/model/RecipeService.java | 28 +++++++++++-- .../core/services/model/StepService.java | 13 ++++--- .../colorrecipesexplorer/dao/MaterialDao.java | 7 ++-- src/main/resources/application.properties | 39 +++++++++++-------- 14 files changed, 166 insertions(+), 73 deletions(-) rename src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/{GenericService.java => AbstractService.java} (93%) 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