diff --git a/arc-core/src/main/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargement.java b/arc-core/src/main/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargement.java index 3c918d6a8..a50469ac9 100644 --- a/arc-core/src/main/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargement.java +++ b/arc-core/src/main/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargement.java @@ -1,39 +1,39 @@ package fr.insee.arc.core.service.p2chargement.factory; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import fr.insee.arc.utils.exception.ArcException; +import fr.insee.arc.utils.exception.ArcExceptionMessage; + public enum TypeChargement { - CLEF_VALEUR("clef-valeur"), - XML("xml"), - PLAT("plat"), - XML_COMPLEXE("xml-complexe"); - - private String nom; - - private TypeChargement(String nom) { - this.nom = nom; - } - - public String getNom() { - return nom; - } - - public void setNom(String nom) { - this.nom = nom; - } - - public static TypeChargement getEnum(String code) { - - switch (code) { - case "clef-valeur": - return CLEF_VALEUR; - case "xml": - return XML; - case "plat": - return PLAT; - case "xml-complexe": - return XML_COMPLEXE; - default: - return null; - } - } - + CLEF_VALEUR("clef-valeur"), XML("xml"), PLAT("plat"), XML_COMPLEXE("xml-complexe"); + + private String nom; + + private TypeChargement(String nom) { + this.nom = nom; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public static TypeChargement getEnum(String code) throws ArcException { + + List filtered = Arrays.asList(TypeChargement.values()).stream() + .filter(t -> t.getNom().equals(code)).collect(Collectors.toList()); + + if (filtered.isEmpty()) { + throw new ArcException(ArcExceptionMessage.LOAD_TYPE_NOT_FOUND, code); + } + + return filtered.get(0); + } + } diff --git a/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/bo/TypeNormage.java b/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/bo/TypeNormage.java index 9f7520198..9cfb27a88 100644 --- a/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/bo/TypeNormage.java +++ b/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/bo/TypeNormage.java @@ -1,5 +1,12 @@ package fr.insee.arc.core.service.p3normage.bo; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import fr.insee.arc.utils.exception.ArcException; +import fr.insee.arc.utils.exception.ArcExceptionMessage; + public enum TypeNormage { RELATION("relation"), CARTESIAN("cartesian"), @@ -25,4 +32,19 @@ public void setNom(String nom) { this.nom = nom; } + + public static TypeNormage getEnum(String code) throws ArcException { + + List filtered = Arrays.asList(TypeNormage.values()).stream().filter(t -> t.getNom().equals(code)).collect(Collectors.toList()); + + if (filtered.isEmpty()) + { + throw new ArcException(ArcExceptionMessage.NORMAGE_TYPE_NOT_FOUND, code); + } + + return filtered.get(0); + } + + + } diff --git a/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/operation/NormageRulesOperation.java b/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/operation/NormageRulesOperation.java index 27dfcf03c..3102b200e 100644 --- a/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/operation/NormageRulesOperation.java +++ b/arc-core/src/main/java/fr/insee/arc/core/service/p3normage/operation/NormageRulesOperation.java @@ -38,7 +38,7 @@ public static void fillNormageRules(Connection connection, String envExecution, List listRegles = new ArrayList<>(); for(int i = 0; i < regle.get(ColumnEnum.ID_CLASSE.getColumnName()).size(); i++) { listRegles.add(new RegleNormage( - TypeNormage.valueOf(regle.get(ColumnEnum.ID_CLASSE.getColumnName()).get(0)), + TypeNormage.getEnum(regle.get(ColumnEnum.ID_CLASSE.getColumnName()).get(0)), regle.get(ColumnEnum.RUBRIQUE.getColumnName()).get(0), regle.get(ColumnEnum.RUBRIQUE_NMCL.getColumnName()).get(0) )); diff --git a/arc-core/src/test/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargementTest.java b/arc-core/src/test/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargementTest.java new file mode 100644 index 000000000..beba52cdc --- /dev/null +++ b/arc-core/src/test/java/fr/insee/arc/core/service/p2chargement/factory/TypeChargementTest.java @@ -0,0 +1,24 @@ +package fr.insee.arc.core.service.p2chargement.factory; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import fr.insee.arc.core.service.p3normage.bo.TypeNormage; +import fr.insee.arc.utils.exception.ArcException; + +public class TypeChargementTest { + + + @Test + public void getEnum_test_ok() throws ArcException { + + assertEquals(TypeChargement.XML_COMPLEXE, TypeChargement.getEnum("xml-complexe")); + } + + @Test(expected = ArcException.class) + public void getEnum_test_ko() throws ArcException { + TypeChargement.getEnum("type de chargement inexistant"); + } + +} diff --git a/arc-core/src/test/java/fr/insee/arc/core/service/p3normage/bo/TypeNormageTest.java b/arc-core/src/test/java/fr/insee/arc/core/service/p3normage/bo/TypeNormageTest.java new file mode 100644 index 000000000..4db266a97 --- /dev/null +++ b/arc-core/src/test/java/fr/insee/arc/core/service/p3normage/bo/TypeNormageTest.java @@ -0,0 +1,22 @@ +package fr.insee.arc.core.service.p3normage.bo; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import fr.insee.arc.utils.exception.ArcException; + +public class TypeNormageTest { + + @Test + public void getEnum_test_ok() throws ArcException { + + assertEquals(TypeNormage.RELATION, TypeNormage.getEnum("relation")); + } + + @Test(expected = ArcException.class) + public void getEnum_test_ko() throws ArcException { + TypeNormage.getEnum("type de norme inexistant"); + } + +} diff --git a/arc-utils/src/main/java/fr/insee/arc/utils/exception/ArcExceptionMessage.java b/arc-utils/src/main/java/fr/insee/arc/utils/exception/ArcExceptionMessage.java index e6989f89f..fd38603f0 100644 --- a/arc-utils/src/main/java/fr/insee/arc/utils/exception/ArcExceptionMessage.java +++ b/arc-utils/src/main/java/fr/insee/arc/utils/exception/ArcExceptionMessage.java @@ -39,6 +39,8 @@ public enum ArcExceptionMessage { LOAD_SEVERAL_NORM_FOUND("Plusieurs normes ou validité correspondent à l'expression : %s"), LOAD_NORM_NOT_FOUND("Aucune norme trouvée pour le fichier %s"), LOAD_ZERO_NORM_FOUND("Aucune norme trouvée"), + LOAD_TYPE_NOT_FOUND("Le type de chargement %s n'existe pas"), + MAPPING_PRIMARY_KEY_INVALID_FORMAT("La règle de clé primaire pour la variable %s n'est pas de la forme : \"{\"pk:mapping___ok\"}\""), MAPPING_EXPRESSION_INVALID("L'expression \"%s\" est invalide"), @@ -54,7 +56,7 @@ public enum ArcExceptionMessage { NORMAGE_VALIDITE_DATE_PARSE_FAILED ("Le champ validite %s ne peut être converti en date"), NORMAGE_INDEPENDANCE_BLOC_INVALID_IDENTIFIER("La rubrique %s n'identifie pas un bloc"), NORMAGE_INDEPENDANCE_BLOC_INVALID_FATHER("La rubrique %s n'a pas le même pere que les autres rubriques du bloc"), - + NORMAGE_TYPE_NOT_FOUND("Le type de normage %s n'existe pas"), CONTROLE_XSD_ENUM_EMPTY("L'énumération XSD pour le type de règle de contrôle ENUM_BRUTE ne peut pas être vide"), CONTROLE_XSD_RUBRIQUE_RELATION_ALREADY_DEFINED("La relation entre %s et %s est déjà décrite sous forme de séquence dans les règles XSD"), @@ -101,7 +103,7 @@ public enum ArcExceptionMessage { DATE_PARSE_FAILED_VALIDITE_INF("La validité inf %s n'a pu être parsée"), DATE_PARSE_FAILED_VALIDITE_SUP("La validité sup %s n'a pu être parsée") - + ; private String message;