diff --git a/validator-core/src/main/resources/error-code.json b/validator-core/src/main/resources/error-code.json index cf7ab042..d285084d 100644 --- a/validator-core/src/main/resources/error-code.json +++ b/validator-core/src/main/resources/error-code.json @@ -196,13 +196,13 @@ "documentation": "Voir la documentation de PostGIS : http://www.postgis.fr/chrome/site/docs/workshop-foss4g/doc/validity.html" }, { - "name":"ATTRIBUTE_GEOMETRY_INVALID_DATA_EXTENT", + "name": "ATTRIBUTE_GEOMETRY_INVALID_DATA_EXTENT", "level": "ERROR", "message": "Les coordonnées de la géométrie de l'objet ne correspondent pas à la zone attendue.", "documentation": "" }, { - "name":"ATTRIBUTE_GEOMETRY_INVALID_INTERNAL", + "name": "ATTRIBUTE_GEOMETRY_INVALID_INTERNAL", "level": "ERROR", "message": "Le processus de validation des géométries ne peut pas se résoudre. Essayez de simplifier vos géométries : https://postgis.net/docs/ST_Simplify.html", "documentation": "" @@ -735,6 +735,12 @@ "message": "Aucune assiette trouvée.", "documentation": "Selon la catégorie de SUP des géométries sont autorisées, au moins une doit être présente." }, + { + "name": "CNIG_PRESCRIPTION_NOT_FOUND", + "level": "WARNING", + "message": "Aucune prescription trouvée.", + "documentation": "Selon la catégorie de document, au moins une doit être présente." + }, { "name": "CNIG_TXT_REGEXP_INVALID", "level": "ERROR", @@ -819,12 +825,12 @@ "message": "Les {TABLE_NAME} {LIST_ID_ISO_HT} ne constituent pas une partition de {ID_S_INOND}. Leurs périmètres s'intersectent.", "documentation": "Cf. standard DI 2.0. Contrainte B.1.3 Topologie de graphe." }, - { - "name": "DGPR_ISO_HT_GEOM_ERROR", - "level": "ERROR", - "message": "Une ou plusieurs géométries sont invalides. Il n'est pas possible de tester le partitionnement des surfaces inondables par les iso_ht / iso_db. Erreur complète : {POSTGIS_ERROR}", - "documentation": "Cf. standard DI 2.0. Contrainte B.1.3 Topologie de graphe." - }, + { + "name": "DGPR_ISO_HT_GEOM_ERROR", + "level": "ERROR", + "message": "Une ou plusieurs géométries sont invalides. Il n'est pas possible de tester le partitionnement des surfaces inondables par les iso_ht / iso_db. Erreur complète : {POSTGIS_ERROR}", + "documentation": "Cf. standard DI 2.0. Contrainte B.1.3 Topologie de graphe." + }, { "name": "DGPR_UNMATCHED_SCENARIO", "level": "ERROR", diff --git a/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/CnigPlugin.java b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/CnigPlugin.java index 6f6c3a91..0d5aa66f 100644 --- a/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/CnigPlugin.java +++ b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/CnigPlugin.java @@ -14,6 +14,7 @@ import fr.ign.validator.cnig.validation.attribute.RegexpTxtValidator; import fr.ign.validator.cnig.validation.document.AtLeastOneAssietteValidator; import fr.ign.validator.cnig.validation.document.AtLeastOneGenerateurValidator; +import fr.ign.validator.cnig.validation.document.AtLeastOnePrescriptionValidator; import fr.ign.validator.cnig.validation.document.AtLeastOneWritingMaterialValidator; import fr.ign.validator.cnig.validation.document.DocumentNameValidator; import fr.ign.validator.cnig.validation.document.FileExtensionValidator; @@ -73,10 +74,7 @@ public void setup(Context context) { * PostProcess - Compute document.tag.typeref (must run before * document-info.json generation) */ - context.addListenerBefore( - new DocUrbaPostProcess(), - DocumentInfoExtractorPostProcess.class - ); + context.addListenerBefore(new DocUrbaPostProcess(), DocumentInfoExtractorPostProcess.class); /* * PostProcess - DOC_URBA_COM validation for PLUi @@ -95,6 +93,7 @@ public void setup(Context context) { context.addListener(new AtLeastOneWritingMaterialValidator()); context.addListener(new AtLeastOneGenerateurValidator()); context.addListener(new AtLeastOneAssietteValidator()); + context.addListener(new AtLeastOnePrescriptionValidator()); if (context.isFlatValidation()) { context.addListener(new FileExtensionValidator()); } else { diff --git a/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/error/CnigErrorCodes.java b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/error/CnigErrorCodes.java index 0a198d9e..8a4bc303 100644 --- a/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/error/CnigErrorCodes.java +++ b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/error/CnigErrorCodes.java @@ -20,9 +20,8 @@ public class CnigErrorCodes { /** * Overrides CORE_TABLE_MISSING_NULLABLE_ATTRIBUTE */ - public static final ErrorCode CNIG_TABLE_MISSING_PRESENCE_OPTIONAL_ATTRIBUTE = ErrorCode.valueOf( - "CNIG_TABLE_MISSING_PRESENCE_OPTIONAL_ATTRIBUTE" - ); + public static final ErrorCode CNIG_TABLE_MISSING_PRESENCE_OPTIONAL_ATTRIBUTE = ErrorCode + .valueOf("CNIG_TABLE_MISSING_PRESENCE_OPTIONAL_ATTRIBUTE"); /** * DU - Reported when ZONE_URBA.IDURBA doesn't match any format @@ -44,96 +43,74 @@ public class CnigErrorCodes { /** * DU/PLUi- Reported when less than one row are found in DOC_URBA_COM */ - public static final ErrorCode CNIG_DOC_URBA_COM_UNEXPECTED_SIZE = ErrorCode.valueOf( - "CNIG_DOC_URBA_COM_UNEXPECTED_SIZE" - ); + public static final ErrorCode CNIG_DOC_URBA_COM_UNEXPECTED_SIZE = ErrorCode + .valueOf("CNIG_DOC_URBA_COM_UNEXPECTED_SIZE"); /** * SCOT - Reported when number of rows in PERIMETRE_SCOT is not 1 */ - public static final ErrorCode CNIG_PERIMETRE_SCOT_UNEXPECTED_SIZE = ErrorCode.valueOf( - "CNIG_PERIMETRE_SCOT_UNEXPECTED_SIZE" - ); + public static final ErrorCode CNIG_PERIMETRE_SCOT_UNEXPECTED_SIZE = ErrorCode + .valueOf("CNIG_PERIMETRE_SCOT_UNEXPECTED_SIZE"); /** * SUP - Reported when IDGEN is not unique in GENERATEUR_SUP_P/L/S tables */ - public static final ErrorCode CNIG_SUP_IDGEN_NOT_UNIQUE = ErrorCode.valueOf( - "CNIG_SUP_IDGEN_NOT_UNIQUE" - ); + public static final ErrorCode CNIG_SUP_IDGEN_NOT_UNIQUE = ErrorCode.valueOf("CNIG_SUP_IDGEN_NOT_UNIQUE"); /** * SUP - Reported when IDASS is not unique in ASSIETTE_SUP_P/L/S tables */ - public static final ErrorCode CNIG_SUP_IDASS_NOT_UNIQUE = ErrorCode.valueOf( - "CNIG_SUP_IDASS_NOT_UNIQUE" - ); + public static final ErrorCode CNIG_SUP_IDASS_NOT_UNIQUE = ErrorCode.valueOf("CNIG_SUP_IDASS_NOT_UNIQUE"); /** * SUP - Reported when IDGEN referenced by an ASSIETTE_SUP_P/L/S table is not * found in GENERATEUR_SUP_P/L/S table. */ - public static final ErrorCode CNIG_SUP_IDGEN_NOT_FOUND = ErrorCode.valueOf( - "CNIG_SUP_IDGEN_NOT_FOUND" - ); + public static final ErrorCode CNIG_SUP_IDGEN_NOT_FOUND = ErrorCode.valueOf("CNIG_SUP_IDGEN_NOT_FOUND"); /** * SUP - reported when no generateur / assiette file found */ public static final ErrorCode CNIG_GENERATEUR_SUP_NOT_FOUND = ErrorCode.valueOf("CNIG_GENERATEUR_SUP_NOT_FOUND"); public static final ErrorCode CNIG_ASSIETTE_SUP_NOT_FOUND = ErrorCode.valueOf("CNIG_ASSIETTE_SUP_NOT_FOUND"); - public static final ErrorCode CNIG_METADATA_SPECIFICATION_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_SPECIFICATION_NOT_FOUND" - ); + public static final ErrorCode CNIG_PRESCRIPTION_NOT_FOUND = ErrorCode.valueOf("CNIG_PRESCRIPTION_NOT_FOUND"); + + public static final ErrorCode CNIG_METADATA_SPECIFICATION_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_SPECIFICATION_NOT_FOUND"); public static final ErrorCode CNIG_METADATA_TYPE_INVALID = ErrorCode.valueOf("CNIG_METADATA_TYPE_INVALID"); - public static final ErrorCode CNIG_METADATA_DATEOFLASTREVISION_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_DATEOFLASTREVISION_NOT_FOUND" - ); - - public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_NOT_FOUND" - ); - public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_NOT_FOUND" - ); - public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_INVALID = ErrorCode.valueOf( - "CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_INVALID" - ); - public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_NOT_FOUND" - ); - public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_UNEXPECTED = ErrorCode.valueOf( - "CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_UNEXPECTED" - ); - - public static final ErrorCode CNIG_METADATA_KEYWORD_NOT_FOUND = ErrorCode.valueOf( - "CNIG_METADATA_KEYWORD_NOT_FOUND" - ); - public static final ErrorCode CNIG_METADATA_KEYWORD_INVALID = ErrorCode.valueOf( - "CNIG_METADATA_KEYWORD_INVALID" - ); + public static final ErrorCode CNIG_METADATA_DATEOFLASTREVISION_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_DATEOFLASTREVISION_NOT_FOUND"); + + public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_NOT_FOUND"); + public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_NOT_FOUND"); + public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_INVALID = ErrorCode + .valueOf("CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_CODE_INVALID"); + public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_NOT_FOUND"); + public static final ErrorCode CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_UNEXPECTED = ErrorCode + .valueOf("CNIG_METADATA_REFERENCESYSTEMIDENTIFIER_URI_UNEXPECTED"); + + public static final ErrorCode CNIG_METADATA_KEYWORD_NOT_FOUND = ErrorCode + .valueOf("CNIG_METADATA_KEYWORD_NOT_FOUND"); + public static final ErrorCode CNIG_METADATA_KEYWORD_INVALID = ErrorCode.valueOf("CNIG_METADATA_KEYWORD_INVALID"); /** * Report geometry not suitable for web broadcasting */ - public static final ErrorCode CNIG_GEOMETRY_COMPLEXITY_WARNING = ErrorCode.valueOf( - "CNIG_GEOMETRY_COMPLEXITY_WARNING" - ); - public static final ErrorCode CNIG_GEOMETRY_COMPLEXITY_ERROR = ErrorCode.valueOf( - "CNIG_GEOMETRY_COMPLEXITY_ERROR" - ); + public static final ErrorCode CNIG_GEOMETRY_COMPLEXITY_WARNING = ErrorCode + .valueOf("CNIG_GEOMETRY_COMPLEXITY_WARNING"); + public static final ErrorCode CNIG_GEOMETRY_COMPLEXITY_ERROR = ErrorCode.valueOf("CNIG_GEOMETRY_COMPLEXITY_ERROR"); /** * Report geometry outsite the declared document emprise */ - public static final ErrorCode CNIG_GEOMETRY_OUTSIDE_DOCUMENT_EMPRISE_ERROR = ErrorCode.valueOf( - "CNIG_GEOMETRY_OUTSIDE_DOCUMENT_EMPRISE_ERROR" - ); + public static final ErrorCode CNIG_GEOMETRY_OUTSIDE_DOCUMENT_EMPRISE_ERROR = ErrorCode + .valueOf("CNIG_GEOMETRY_OUTSIDE_DOCUMENT_EMPRISE_ERROR"); /** * To report "88" instead of "088" */ - public static final ErrorCode CNIG_SUP_BAD_TERRITORY_CODE = ErrorCode.valueOf( - "CNIG_SUP_BAD_TERRITORY_CODE" - ); + public static final ErrorCode CNIG_SUP_BAD_TERRITORY_CODE = ErrorCode.valueOf("CNIG_SUP_BAD_TERRITORY_CODE"); } diff --git a/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/validation/document/AtLeastOnePrescriptionValidator.java b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/validation/document/AtLeastOnePrescriptionValidator.java new file mode 100644 index 00000000..ae4faf44 --- /dev/null +++ b/validator-plugin-cnig/src/main/java/fr/ign/validator/cnig/validation/document/AtLeastOnePrescriptionValidator.java @@ -0,0 +1,66 @@ +package fr.ign.validator.cnig.validation.document; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.Marker; +import org.apache.logging.log4j.MarkerManager; + +import fr.ign.validator.Context; +import fr.ign.validator.ValidatorListener; +import fr.ign.validator.cnig.error.CnigErrorCodes; +import fr.ign.validator.cnig.model.DocumentModelName; +import fr.ign.validator.data.Document; +import fr.ign.validator.data.DocumentFile; +import fr.ign.validator.model.FileModel; +import fr.ign.validator.model.TableModel; +import fr.ign.validator.validation.Validator; + +public class AtLeastOnePrescriptionValidator implements Validator, ValidatorListener { + + public static final Logger log = LogManager.getRootLogger(); + public static final Marker MARKER = MarkerManager.getMarker("AtLeastOnePrescriptionValidator"); + + @Override + public void validate(Context context, Document document) { + boolean hasPrescription = false; + for (FileModel fileModel : document.getDocumentModel().getFileModels()) { + if (fileModel.getName().contains("PRESCRIPTION")) { + hasPrescription = true; + } + } + if (!hasPrescription) { + log.info(MARKER, "Skip control if document model has no PRESCRIPTION table."); + return; + } + log.info(MARKER, "Ensure that document contains at least one PRESCRIPTION file..."); + int count = 0; + for (DocumentFile documentFile : document.getDocumentFiles()) { + if (!(documentFile.getFileModel() instanceof TableModel)) { + continue; + } + if (documentFile.getFileModel().getName().contains("PRESCRIPTION")) { + count++; + } + } + log.info(MARKER, "Found {} PRESCRIPTION file(s).", count); + if (count == 0) { + context.report(CnigErrorCodes.CNIG_PRESCRIPTION_NOT_FOUND); + } + } + + @Override + public void beforeMatching(Context context, Document document) throws Exception { + + } + + @Override + public void beforeValidate(Context context, Document document) throws Exception { + document.getDocumentModel().addValidator(this); + } + + @Override + public void afterValidate(Context context, Document document) throws Exception { + + } + +} diff --git a/validator-plugin-cnig/src/test/java/fr/ign/validator/cnig/regress/CnigValidatorRegressTest.java b/validator-plugin-cnig/src/test/java/fr/ign/validator/cnig/regress/CnigValidatorRegressTest.java index d6f3ace3..46fd7eae 100644 --- a/validator-plugin-cnig/src/test/java/fr/ign/validator/cnig/regress/CnigValidatorRegressTest.java +++ b/validator-plugin-cnig/src/test/java/fr/ign/validator/cnig/regress/CnigValidatorRegressTest.java @@ -147,14 +147,8 @@ public void test41175_PLU_20140603() throws Exception { ReportAssert.assertCount(1, CoreErrorCodes.ATTRIBUTE_INVALID_REGEXP, report); { ValidatorError error = report.getErrorsByCode(CoreErrorCodes.ATTRIBUTE_INVALID_REGEXP).get(0); - Assert.assertEquals( - "DOC_URBA.dbf", - error.getFile() - ); - Assert.assertEquals( - "DATEREF", - error.getAttribute() - ); + Assert.assertEquals("DOC_URBA.dbf", error.getFile()); + Assert.assertEquals("DATEREF", error.getAttribute()); Assert.assertEquals( "La valeur (2011) ne correspond pas à l'expression régulière ([0-9]{8}).", error.getMessage() @@ -449,28 +443,20 @@ public void test172014607_AC1_2A_20180130() throws Exception { ReportAssert.assertCount(104, CoreErrorCodes.ATTRIBUTE_INVALID_FORMAT, report); { for (ValidatorError error : report.getErrorsByCode(CoreErrorCodes.ATTRIBUTE_INVALID_FORMAT)) { - Assert.assertEquals( - "Donnees_geographiques/AC1_SERVITUDE.dbf", - error.getFile() - ); - Assert.assertEquals( - "DATEMAJ", - error.getAttribute() - ); + Assert.assertEquals("Donnees_geographiques/AC1_SERVITUDE.dbf", error.getFile()); + Assert.assertEquals("DATEMAJ", error.getAttribute()); } } ReportAssert.assertCount(4, CoreErrorCodes.ATTRIBUTE_NOT_UNIQUE, report); { List errors = report.getErrorsByCode(CoreErrorCodes.ATTRIBUTE_NOT_UNIQUE); Assert.assertEquals( - 2, - errors.stream().filter(error -> error.getAttribute().equals("IDACTE")).collect(Collectors.toList()) - .size() + 2, errors.stream().filter(error -> error.getAttribute().equals("IDACTE")) + .collect(Collectors.toList()).size() ); Assert.assertEquals( - 2, - errors.stream().filter(error -> error.getAttribute().equals("IDSUP")).collect(Collectors.toList()) - .size() + 2, errors.stream().filter(error -> error.getAttribute().equals("IDSUP")) + .collect(Collectors.toList()).size() ); } ReportAssert.assertCount(2, CnigErrorCodes.CNIG_SUP_IDASS_NOT_UNIQUE, report); @@ -528,27 +514,23 @@ public void test172014607_AC1_2A_20180130() throws Exception { List errors = report.getErrorsByCode(CoreErrorCodes.ATTRIBUTE_INVALID_REGEXP); // http://cnig.gouv.fr/wp-content/uploads/2019/04/190321_Standard_CNIG_SUP.pdf#page=27&zoom=auto,-260,407 Assert.assertEquals( - 206, - errors.stream().filter(error -> error.getAttribute().equals("IDASS")).collect(Collectors.toList()) - .size() + 206, errors.stream().filter(error -> error.getAttribute().equals("IDASS")) + .collect(Collectors.toList()).size() ); // http://cnig.gouv.fr/wp-content/uploads/2019/04/190321_Standard_CNIG_SUP.pdf#page=27&zoom=auto,-260,407 Assert.assertEquals( - 310, - errors.stream().filter(error -> error.getAttribute().equals("IDGEN")).collect(Collectors.toList()) - .size() + 310, errors.stream().filter(error -> error.getAttribute().equals("IDGEN")) + .collect(Collectors.toList()).size() ); // http://cnig.gouv.fr/wp-content/uploads/2019/04/190321_Standard_CNIG_SUP.pdf#page=30&zoom=auto,-260,406 Assert.assertEquals( - 206, - errors.stream().filter(error -> error.getAttribute().equals("NOMASS")).collect(Collectors.toList()) - .size() + 206, errors.stream().filter(error -> error.getAttribute().equals("NOMASS")) + .collect(Collectors.toList()).size() ); // http://cnig.gouv.fr/wp-content/uploads/2019/04/190321_Standard_CNIG_SUP.pdf#page=30&zoom=auto,-260,406 Assert.assertEquals( - 104, - errors.stream().filter(error -> error.getAttribute().equals("NOMSUP")).collect(Collectors.toList()) - .size() + 104, errors.stream().filter(error -> error.getAttribute().equals("NOMSUP")) + .collect(Collectors.toList()).size() ); } ReportAssert.assertCount(206 + 310 + 206 + 104, CoreErrorCodes.ATTRIBUTE_INVALID_REGEXP, report); @@ -561,18 +543,16 @@ public void test172014607_AC1_2A_20180130() throws Exception { * à une valeur autorisée (Égale au générateur, Zone tampon,[...]) */ Assert.assertEquals( - 104, - errors.stream().filter(error -> error.getAttribute().equals("MODEGEOASS")).collect(Collectors.toList()) - .size() + 104, errors.stream().filter(error -> error.getAttribute().equals("MODEGEOASS")) + .collect(Collectors.toList()).size() ); /* * ex : La valeur renseignée (Périmètre de protection) ne correspond pas à une * valeur autorisée (Périmètre des abords, Monument historique). */ Assert.assertEquals( - 206, - errors.stream().filter(error -> error.getAttribute().equals("TYPEASS")).collect(Collectors.toList()) - .size() + 206, errors.stream().filter(error -> error.getAttribute().equals("TYPEASS")) + .collect(Collectors.toList()).size() ); } ReportAssert.assertCount(104 + 206, CoreErrorCodes.ATTRIBUTE_UNEXPECTED_VALUE, report); @@ -889,7 +869,9 @@ public void test200011781_PLUi_20180101() throws Exception { * check warnings */ ReportAssert.assertCount(1, CnigErrorCodes.CNIG_TABLE_MISSING_PRESENCE_OPTIONAL_ATTRIBUTE, report); - ReportAssert.assertCount(1, ErrorLevel.WARNING, report); + ReportAssert.assertCount(1, CnigErrorCodes.CNIG_PRESCRIPTION_NOT_FOUND, report); + + ReportAssert.assertCount(1 + 1, ErrorLevel.WARNING, report); /* * check document-info.json @@ -1030,10 +1012,7 @@ public void testSupWithCodeDepOn2Characters() throws Exception { ReportAssert.assertCount(1, CnigErrorCodes.CNIG_SUP_BAD_TERRITORY_CODE, report); { ValidatorError error = report.getErrorsByCode(CnigErrorCodes.CNIG_SUP_BAD_TERRITORY_CODE).get(0); - assertEquals( - "Le code de territoire '88' est invalide dans le nom de dossier.", - error.getMessage() - ); + assertEquals("Le code de territoire '88' est invalide dans le nom de dossier.", error.getMessage()); } ReportAssert.assertCount(1, CnigErrorCodes.CNIG_METADATA_KEYWORD_INVALID, report); // see https://github.com/IGNF/validator/issues/260 - inconsistency is reported @@ -1109,21 +1088,13 @@ private void assertEqualsJsonFile(File producedInfosCnigPath, File expectedInfos ); FileUtils.writeStringToFile( new File(originalPath), - FileUtils.readFileToString( - producedInfosCnigPath, - StandardCharsets.UTF_8 - ), - StandardCharsets.UTF_8 + FileUtils.readFileToString(producedInfosCnigPath, StandardCharsets.UTF_8), StandardCharsets.UTF_8 ); fail("restart test switching updateDocumentInfos to false in assertEqualsJsonFile"); } else { String actual = FileUtils.readFileToString(producedInfosCnigPath, StandardCharsets.UTF_8).trim(); String expected = FileUtils.readFileToString(expectedInfosCnigPath, StandardCharsets.UTF_8).trim(); - JSONAssert.assertEquals( - expected, - actual, - JSONCompareMode.STRICT - ); + JSONAssert.assertEquals(expected, actual, JSONCompareMode.STRICT); } }