diff --git a/pom.xml b/pom.xml index 35c9b13..c846f8a 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ dev.fyloz.trial.colorrecipesexplorer ColorRecipesExplorer - 1.2.0 + 1.3.0 Color Recipes Explorer diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/ColorRecipesExplorerApplication.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/ColorRecipesExplorerApplication.java index dd2a30a..8fab003 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/ColorRecipesExplorerApplication.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/ColorRecipesExplorerApplication.java @@ -1,74 +1,13 @@ package dev.fyloz.trial.colorrecipesexplorer; -import dev.fyloz.trial.colorrecipesexplorer.core.services.PasswordService; -import dev.fyloz.trial.colorrecipesexplorer.core.services.files.FilesService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.MessageSource; - -import java.io.File; -import java.io.IOException; -import java.util.List; @SpringBootApplication public class ColorRecipesExplorerApplication { - public static final Logger LOGGER = LoggerFactory.getLogger(ColorRecipesExplorerApplication.class); - public static String UPLOAD_LOCATION; - public static final String USERS_FILE_NAME = "passwords"; - public static boolean USE_PORT; - - public static ColorRecipesExplorerApplication CREApp; - - private MessageSource messageSource; - private FilesService filesService; - public static void main(String[] args) { - UPLOAD_LOCATION = args[0] != null ? args[0] : "./"; - SpringApplication.run(ColorRecipesExplorerApplication.class, args); } - @Autowired - public ColorRecipesExplorerApplication(MessageSource messageSource, FilesService filesService) { - this.messageSource = messageSource; - this.filesService = filesService; - - CREApp = this; - LOGGER.info("Le fichier des utilisateurs se situe à: " + new File(UPLOAD_LOCATION + "/" + USERS_FILE_NAME).getAbsolutePath()); - - loadPasswords(); - } - - /** - * Charge les mots de passes contenus dans le fichier. - *

- * Un mot de passe correspond à une ligne dans le fichier passwords.txt. - */ - private void loadPasswords() { - String filePath = String.format("%s/%s.txt", UPLOAD_LOCATION, USERS_FILE_NAME); - - try { - if(filesService.exists(filePath)) filesService.create(filePath); - List fileContent = filesService.readAsStrings(filePath); - - if (fileContent.size() < 1) { - LOGGER.warn("Aucun mot de passe trouvé. Il sera impossible d'utiliser certaines fonctionnalités de l'application."); - } - - for (String line : fileContent) { - PasswordService.addPassword(line); - } - } catch (IOException e) { - LOGGER.error("Une erreur est survenue lors du chargement du fichier des utilisateurs", e); - LOGGER.warn("Il sera impossible d'utiliser certaines fonctionnalités de l'application."); - } - } - - public MessageSource getMessageSource() { - return messageSource; - } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/Preferences.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/Preferences.java new file mode 100644 index 0000000..ea815c7 --- /dev/null +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/Preferences.java @@ -0,0 +1,18 @@ +package dev.fyloz.trial.colorrecipesexplorer.core; + +import org.slf4j.Logger; +import org.springframework.context.MessageSource; + +public class Preferences { + + public static Logger logger; + + public static MessageSource messageSource; + + public static boolean urlUsePort; + + public static String uploadDirectory; + + public static String passwordsFileName; + +} diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/InitialDataLoader.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/InitialDataLoader.java index b64b288..d907b11 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/InitialDataLoader.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/InitialDataLoader.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.configuration; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException; import dev.fyloz.trial.colorrecipesexplorer.core.model.MaterialType; import dev.fyloz.trial.colorrecipesexplorer.core.services.model.MaterialTypeService; @@ -34,7 +35,7 @@ public class InitialDataLoader implements ApplicationListenermap(MethodParameter::getContainingClass) - .orElseGet(() -> - ofNullable(ip.getField()) - .map(Field::getDeclaringClass) - .orElseThrow(IllegalArgumentException::new) - ) - ); - } -} diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/SpringConfiguration.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/SpringConfiguration.java index fc61ecd..733233c 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/SpringConfiguration.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/configuration/SpringConfiguration.java @@ -1,19 +1,72 @@ package dev.fyloz.trial.colorrecipesexplorer.core.configuration; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; +import dev.fyloz.trial.colorrecipesexplorer.core.services.PasswordService; +import dev.fyloz.trial.colorrecipesexplorer.core.services.files.FilesService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.io.IOException; +import java.util.List; + @Configuration public class SpringConfiguration { - @Value("${response.useport}") - public boolean usePort; + @Value("${url.useport}") + private boolean usePort; + + @Value("${server.upload-directory}") + private String uploadDirectory; + + @Value("${server.passwords.file-name}") + private String passwordsFileName; + + private FilesService filesService; + private MessageSource messageSource; + + @Autowired + public SpringConfiguration(FilesService filesService, MessageSource messageSource) { + this.filesService = filesService; + this.messageSource = messageSource; + } @Bean - public void setUsePort() { - ColorRecipesExplorerApplication.USE_PORT = usePort; + public void setPreferences() { + Preferences.urlUsePort = usePort; + Preferences.uploadDirectory = uploadDirectory; + Preferences.passwordsFileName = passwordsFileName; + Preferences.logger = LoggerFactory.getLogger(ColorRecipesExplorerApplication.class); + Preferences.messageSource = messageSource; + } + + @Bean + public void initializePasswords() { + Logger logger = Preferences.logger; + String filePath = filesService.getPath(passwordsFileName); + + logger.info("Le fichier des utilisateurs se situe à: " + filesService.getFile(filePath).getAbsolutePath()); + + try { + if (!filesService.exists(filePath)) filesService.create(filePath); + List fileContent = filesService.readAsStrings(filePath); + + if (fileContent.size() < 1) { + logger.warn("Aucun mot de passe trouvé. Il sera impossible d'utiliser certaines fonctionnalités de l'application."); + } + + for (String line : fileContent) { + PasswordService.addPassword(line); + } + } catch (IOException e) { + logger.error("Une erreur est survenue lors du chargement du fichier des utilisateurs", e); + logger.warn("Il sera impossible d'utiliser certaines fonctionnalités de l'application."); + } } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/FileHandler.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/FileHandler.java index 3dd158a..24b9bc8 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/FileHandler.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/FileHandler.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.io.file; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import org.slf4j.Logger; import java.io.File; @@ -13,7 +14,7 @@ import java.nio.file.Paths; public class FileHandler { protected String name; - protected Logger logger = ColorRecipesExplorerApplication.LOGGER; + protected Logger logger = Preferences.logger; private FileContext context; private FileExtension extension; @@ -90,7 +91,7 @@ public class FileHandler { } public Path getPath() { - return Paths.get(String.format("%s/%s/%s%s", ColorRecipesExplorerApplication.UPLOAD_LOCATION, context.getPath(), name, extension.getExtension())); + return Paths.get(String.format("%s/%s/%s%s", Preferences.uploadDirectory, context.getPath(), name, extension.getExtension())); } public File getFile() { diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/ImageHandler.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/ImageHandler.java index 6186745..b351df0 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/ImageHandler.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/file/ImageHandler.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.io.file; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe; import dev.fyloz.trial.colorrecipesexplorer.core.services.model.RecipeService; @@ -10,7 +11,7 @@ import java.util.stream.Collectors; @Deprecated(since = "1.3.0") public class ImageHandler extends FileHandler { - public static final String IMAGES_LOCATION = ColorRecipesExplorerApplication.UPLOAD_LOCATION + "/images"; + public static final String IMAGES_LOCATION = Preferences.uploadDirectory + "/images"; private Recipe recipe; private int index = 0; diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/JSONResponseBuilder.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/JSONResponseBuilder.java index 755bec6..a833243 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/JSONResponseBuilder.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/JSONResponseBuilder.java @@ -1,6 +1,6 @@ package dev.fyloz.trial.colorrecipesexplorer.core.io.response; -import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import org.springframework.context.i18n.LocaleContextHolder; import java.util.HashMap; @@ -13,7 +13,7 @@ public class JSONResponseBuilder extends ResponseBuilder attributeContent = new HashMap<>(); // Récupère le message depuis le fichier des messages de la bonne language et rajoute ces paramètres. - String message = ColorRecipesExplorerApplication.CREApp.getMessageSource().getMessage(responseMessagePath, parameters, LocaleContextHolder.getLocale()); + String message = Preferences.messageSource.getMessage(responseMessagePath, parameters, LocaleContextHolder.getLocale()); attributeContent.put("message", message); addAttribute(responseCodeType, attributeContent); diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/ResponseBuilder.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/ResponseBuilder.java index 61d50fd..e45cd03 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/ResponseBuilder.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/io/response/ResponseBuilder.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.io.response; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.core.utils.ControllerUtils; import javax.validation.constraints.NotNull; @@ -53,7 +54,7 @@ public abstract class ResponseBuilder { // Avertit s'il y a plus de paramètres que le nombre de paramètres supporté par le template thymeleaf (aussi MAX_PARAMETERS_NUMBER) int maxParametersNumber = ResponseCode.MAX_PARAMETERS_NUMBER; if (givenParametersNumber > maxParametersNumber) { - ColorRecipesExplorerApplication.LOGGER.warn(String.format("Trop de paramètres fournis pour le code de réponse %s: %s maximum, %s fournis", responseCode.name(), maxParametersNumber, givenParametersNumber)); + Preferences.logger.warn(String.format("Trop de paramètres fournis pour le code de réponse %s: %s maximum, %s fournis", responseCode.name(), maxParametersNumber, givenParametersNumber)); } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java index 60ecf28..10f37d7 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/model/Recipe.java @@ -59,6 +59,7 @@ public class Recipe implements IModel { * * @return Les mélanges triés par leur identifiant */ + @JsonIgnore public List getMixesSortedById() { List sortedMixes = new ArrayList<>(mixes); sortedMixes.sort(Comparator.comparing(Mix::getId)); @@ -70,6 +71,7 @@ public class Recipe implements IModel { * * @return Les types de mélange contenus dans la recette */ + @JsonIgnore public Collection getMixTypes() { return mixes.stream() .map(Mix::getMixType) @@ -82,6 +84,7 @@ public class Recipe implements IModel { * @param mixType Le type de mélange * @return Si la recette contient le type de mélange */ + @JsonIgnore public boolean hasMixType(MixType mixType) { return getMixTypes().contains(mixType); } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java index 6ba789a..6fe3a91 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/GenericService.java @@ -3,6 +3,7 @@ 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; import dev.fyloz.trial.colorrecipesexplorer.core.exception.model.ModelException; @@ -21,7 +22,7 @@ import java.util.stream.Collectors; public class GenericService> implements IGenericService { - protected Logger logger = ColorRecipesExplorerApplication.LOGGER; + protected Logger logger = Preferences.logger; protected R dao; protected Class type; @@ -127,7 +128,7 @@ public class GenericService> try { return objectMapper.writeValueAsString(obj); } catch (JsonProcessingException e) { - logger.error("Une erreur est survenue lors de la transformation d'un objet en Json", e); + Preferences.logger.error("Une erreur est survenue lors de la transformation d'un objet en Json", e); return null; } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/FilesService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/FilesService.java index eae4782..43f48b8 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/FilesService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/FilesService.java @@ -1,7 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.services.files; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; -import org.slf4j.Logger; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; @@ -20,7 +20,6 @@ import java.util.List; public class FilesService { private ResourceLoader resources; - private Logger logger = ColorRecipesExplorerApplication.LOGGER; @Autowired public FilesService(ResourceLoader resources) { @@ -92,7 +91,7 @@ public class FilesService { multipartFile.transferTo(file.toPath()); return true; } catch (IOException ex) { - ColorRecipesExplorerApplication.LOGGER.error("Impossible d'écrire un fichier Multipart: " + ex.getMessage()); + Preferences.logger.error("Impossible d'écrire un fichier Multipart: " + ex.getMessage()); return false; } } @@ -107,19 +106,22 @@ public class FilesService { public File create(String path) throws IOException { File file = getFile(path); - if (!file.exists() || file.isDirectory()) { - Files.createDirectories(file.getParentFile().toPath()); - Files.createFile(file.toPath()); - } + try { + if (!file.exists() || file.isDirectory()) { + Files.createDirectories(file.getParentFile().toPath()); + Files.createFile(file.toPath()); + } - return file; + return file; + } catch (IOException ex) { + throw new RuntimeException("Impossible de créer un fichier: " + ex.getMessage()); + } } /** * Supprime un fichier sur le disque. * * @param path Le chemin vers le fichier - * @throws IOException La suppression du fichier échoue */ public void delete(String path) { File file = getFile(path); @@ -127,7 +129,7 @@ public class FilesService { try { if (file.exists() && !file.isDirectory()) Files.delete(file.toPath()); } catch (IOException ex) { - logger.error("Impossible de supprimer un fichier: " + ex.getMessage()); + throw new RuntimeException("Impossible de supprimer un fichier: " + ex.getMessage()); } } @@ -143,8 +145,12 @@ public class FilesService { return file.exists() && !file.isDirectory(); } - private File getFile(String path) { + public File getFile(String path) { return new File(path); } + public String getPath(String fileName) { + return String.format("%s/%s", Preferences.uploadDirectory, fileName); + } + } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/ImagesService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/ImagesService.java index 76ba379..ae91dec 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/ImagesService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/ImagesService.java @@ -75,7 +75,7 @@ public class ImagesService { } private String getPath(String name) { - return String.format("%s/%s/%s", ColorRecipesExplorerApplication.UPLOAD_LOCATION, IMAGES_DIRECTORY, name); + return filesService.getPath(String.format("%s/%s", IMAGES_DIRECTORY, name)); } } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/SimdutService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/SimdutService.java index b7caba0..fe81d61 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/SimdutService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/SimdutService.java @@ -115,7 +115,7 @@ public class SimdutService { * @return Le chemin vers le fichier SIMDUT du produit */ private String getPath(Material material) { - return String.format("%s/%s/%s", ColorRecipesExplorerApplication.UPLOAD_LOCATION, SIMDUT_DIRECTORY, getSimdutFileName(material)); + return filesService.getPath(String.format("%s/%s", SIMDUT_DIRECTORY, getSimdutFileName(material))); } /** diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/TouchUpKitService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/TouchUpKitService.java similarity index 95% rename from src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/TouchUpKitService.java rename to src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/TouchUpKitService.java index a0f4065..d899171 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/TouchUpKitService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/TouchUpKitService.java @@ -1,4 +1,4 @@ -package dev.fyloz.trial.colorrecipesexplorer.core.services; +package dev.fyloz.trial.colorrecipesexplorer.core.services.files; import dev.fyloz.trial.colorrecipesexplorer.core.utils.PdfBuilder; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/XlsService.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/XlsService.java index 2efb7cd..5f12a7e 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/XlsService.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/services/files/XlsService.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.services.files; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe; import dev.fyloz.trial.colorrecipesexplorer.core.services.model.RecipeService; import dev.fyloz.trial.colorrecipesexplorer.xlsx.XlsxExporter; @@ -49,7 +50,7 @@ public class XlsService { * @return Le fichier ZIP contenant tous les fichiers XLS */ public byte[] generateForAll() { - ColorRecipesExplorerApplication.LOGGER.info("Exportation de toutes les couleurs en XLS"); + Preferences.logger.info("Exportation de toutes les couleurs en XLS"); Collection recipes = recipeService.getAll(); try (ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(); ZipOutputStream zipOutput = new ZipOutputStream(byteOutput)) { diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/utils/ControllerUtils.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/utils/ControllerUtils.java index d627e1e..823d9c8 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/utils/ControllerUtils.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/core/utils/ControllerUtils.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.core.utils; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -32,7 +33,7 @@ public class ControllerUtils { HttpServletRequest request = attributes.getRequest(); - String port = ":" + (ColorRecipesExplorerApplication.USE_PORT ? request.getServerPort() : ""); + String port = ":" + (Preferences.urlUsePort ? request.getServerPort() : ""); return String.format("%s://%s%s%s", request.getScheme(), request.getServerName(), port, request.getContextPath()); } diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/files/TouchUpKitController.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/files/TouchUpKitController.java index a6ca7ec..e7a624f 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/files/TouchUpKitController.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/web/controller/files/TouchUpKitController.java @@ -2,7 +2,7 @@ package dev.fyloz.trial.colorrecipesexplorer.web.controller.files; import dev.fyloz.trial.colorrecipesexplorer.core.io.response.ModelResponseBuilder; import dev.fyloz.trial.colorrecipesexplorer.core.io.response.ResponseDataType; -import dev.fyloz.trial.colorrecipesexplorer.core.services.TouchUpKitService; +import dev.fyloz.trial.colorrecipesexplorer.core.services.files.TouchUpKitService; import dev.fyloz.trial.colorrecipesexplorer.core.services.model.RecipeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/XlsxExporter.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/XlsxExporter.java index 71cbe20..f52e881 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/XlsxExporter.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/XlsxExporter.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.xlsx; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.core.model.Mix; import dev.fyloz.trial.colorrecipesexplorer.core.model.MixQuantity; import dev.fyloz.trial.colorrecipesexplorer.core.model.Recipe; @@ -22,7 +23,7 @@ import java.util.Collection; public class XlsxExporter { public byte[] generate(Recipe recipe) { - ColorRecipesExplorerApplication.LOGGER.info(String.format("Génération du XLS de la couleur %s (%s)", recipe.getName(), recipe.getId())); + Preferences.logger.info(String.format("Génération du XLS de la couleur %s (%s)", recipe.getName(), recipe.getId())); Document document = new Document(recipe.getName()); Sheet sheet = document.getSheet(); diff --git a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/component/Document.java b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/component/Document.java index 93a9f65..e32619d 100644 --- a/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/component/Document.java +++ b/src/main/java/dev/fyloz/trial/colorrecipesexplorer/xlsx/component/Document.java @@ -1,6 +1,7 @@ package dev.fyloz.trial.colorrecipesexplorer.xlsx.component; import dev.fyloz.trial.colorrecipesexplorer.ColorRecipesExplorerApplication; +import dev.fyloz.trial.colorrecipesexplorer.core.Preferences; import dev.fyloz.trial.colorrecipesexplorer.xlsx.builder.SheetBuilder; import dev.fyloz.trial.colorrecipesexplorer.xlsx.exception.InvalidCellTypeException; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -23,7 +24,7 @@ public class Document extends XSSFWorkbook { try { new SheetBuilder(sheet).build(); } catch (InvalidCellTypeException e) { - ColorRecipesExplorerApplication.LOGGER.error("Une erreur est survenue lors de la génération du document: " + e.getLocalizedMessage()); + Preferences.logger.error("Une erreur est survenue lors de la génération du document: " + e.getLocalizedMessage()); } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..e382a3d --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,31 @@ +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 + +spring.h2.console.path=/dbconsole +spring.h2.console.settings.trace=true +spring.h2.console.settings.web-allow-others=true + +server.port=9090 +server.http2.enabled=true +server.error.whitelabel.enabled=false +server.upload-directory=./workdir +server.passwords.file-name=passwords.txt + +url.useport=true + +# DEBUG +spring.jpa.show-sql=true +spring.h2.console.enabled=true diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml.bak similarity index 98% rename from src/main/resources/application.yml rename to src/main/resources/application.yml.bak index ff15ef3..0a2b2b6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml.bak @@ -30,5 +30,5 @@ server: error: whitelabel: enabled: false -response: +url: useport: true diff --git a/src/main/resources/static/js/main.js b/src/main/resources/static/js/main.js index a2b0853..d2490bb 100644 --- a/src/main/resources/static/js/main.js +++ b/src/main/resources/static/js/main.js @@ -73,16 +73,16 @@ $(() => { })); // Imprimante - let src = `${baseUrl}/icons/printerError.svg`; - let title = printErrorTitle; - if ($(".bpac-extension-installed").length) { - src = `${baseUrl}/icons/printer.svg`; - title = printOkTitle; - } - $("#printStatusIcon").attr({ - src: src, - title: title - }); + let src = `${baseUrl}/icons/printerError.svg`; + let title = printErrorTitle; + if ($(".bpac-extension-installed").length) { + src = `${baseUrl}/icons/printer.svg`; + title = printOkTitle; + } + $("#printStatusIcon").attr({ + src: src, + title: title + }); }); function confirmDatabaseExport() { diff --git a/src/main/resources/updates.md b/src/main/resources/updates.md index 9b2a816..7c5ed43 100644 --- a/src/main/resources/updates.md +++ b/src/main/resources/updates.md @@ -2,6 +2,7 @@ ### Note: Cette mise à jour n'est pas compatible avec les anciennes versions. ### Corrections * Réusinage des modèles. (Empêche la compatibilité avec les anciennes versions) +* Réusinage des contrôleurs et des services (Améliore la maintenabilité) # v1.2.0 (Imprimante P-touch) ### Corrections @@ -59,14 +60,14 @@ ### Corrections * Désactivation de l'autocomplétion dans les étapes des recettes (permet d'éviter un bug qui affiche les suggestion par dessus toutes les étapes sur Edge) * Correction d'un bug qui permettait d'envoyer les formulaires demandant des mots de passe sans donner un mot de passe valide. -* Amélioration des contrôlleurs et du service des mélanges. +* Amélioration des contrôleurs et du service des mélanges. * Correction d'un bug avec la création des mélanges. ### Ajouts * L'onglet se ferme automatiquement lorsqu'un utilisateur tente d'accéder à un fichier SIMDUT inexistant. * Meilleure sélection des produits dans l'éditeur de mélange. -* Retravail de l'affichage de la plupart des tables, les rendant moins chargées. -* Retravail de l'affichage des étapes et des images dans l'explorateur et l'éditeur de recette. +* Amélioration de l'affichage de la plupart des tables, les rendant moins chargées. +* Amélioration de l'affichage des étapes et des images dans l'explorateur et l'éditeur de recette. * Ajout de la page de l'historique des mises à jour. * Ajout de la journalisation.