diff --git a/resip/src/main/java/fr/gouv/vitam/tools/resip/parameters/TreatmentParameters.java b/resip/src/main/java/fr/gouv/vitam/tools/resip/parameters/TreatmentParameters.java index 231c8ade..8e719bc1 100644 --- a/resip/src/main/java/fr/gouv/vitam/tools/resip/parameters/TreatmentParameters.java +++ b/resip/src/main/java/fr/gouv/vitam/tools/resip/parameters/TreatmentParameters.java @@ -102,11 +102,12 @@ public TreatmentParameters(Preferences preferences) { dupMax = 1000; } - final String sedaVersion = preferences + final String defaultConfiguredSedaVersion = SedaVersion.V2_1.toString(); + final String configuredSedaVersion = preferences .getPrefProperties() - .getProperty("treatmentParameters.seda2Version", SedaVersion.V2_1.toString()); + .getProperty("treatmentParameters.seda2Version", defaultConfiguredSedaVersion); - EventBus.publish(new SedaVersionChangedEvent(SedaVersion.from(sedaVersion))); + EventBus.publish(new SedaVersionChangedEvent(parseSedaVersion(configuredSedaVersion))); } /** @@ -228,4 +229,15 @@ public SedaVersion getSedaVersion() { public void setSedaVersion(SedaVersion version) { this.sedaVersion = version; } + + private SedaVersion parseSedaVersion(String version) { + final List allowedVersions = List.of("1", "2", "3", "2.1", "2.2", "2.3"); + final String defaultVersion = allowedVersions.get(0); + final String finalVersion = allowedVersions.stream() + .filter(allowedVersion -> allowedVersion.equals(version)) + .findFirst() + .orElse(defaultVersion); + + return SedaVersion.from(finalVersion); + } } \ No newline at end of file diff --git a/sedalib/src/main/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersion.java b/sedalib/src/main/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersion.java index b7cad80a..1d93213a 100644 --- a/sedalib/src/main/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersion.java +++ b/sedalib/src/main/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersion.java @@ -42,14 +42,22 @@ public static SedaVersion from(int major, int minor) { public static SedaVersion from(String version) { String[] fragments = version.split("[.]"); + int major = 2; + int minor; - if (fragments.length != 2) { - throw new IllegalArgumentException("Unsupported SEDA version: " + version); + if (fragments.length == 1) { + minor = Integer.parseInt(fragments[0]); + + return from(major, minor); } - int major = Integer.parseInt(fragments[0]); - int minor = Integer.parseInt(fragments[1]); + if (fragments.length == 2) { + major = Integer.parseInt(fragments[0]); + minor = Integer.parseInt(fragments[1]); + + return from(major, minor); + } - return from(major, minor); + throw new IllegalArgumentException("Unsupported SEDA version: " + version); } } diff --git a/sedalib/src/test/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersionTest.java b/sedalib/src/test/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersionTest.java new file mode 100644 index 00000000..694964dd --- /dev/null +++ b/sedalib/src/test/java/fr/gouv/vitam/tools/sedalib/core/seda/SedaVersionTest.java @@ -0,0 +1,47 @@ +package fr.gouv.vitam.tools.sedalib.core.seda; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SedaVersionTest { + + @Test + void shouldParseMinorOnlyVersions() { + assertEquals(SedaVersion.V2_0, SedaVersion.from("0")); + assertEquals(SedaVersion.V2_1, SedaVersion.from("1")); + assertEquals(SedaVersion.V2_2, SedaVersion.from("2")); + assertEquals(SedaVersion.V2_3, SedaVersion.from("3")); + } + + @Test + void shouldParseMajorMinorVersions() { + assertEquals(SedaVersion.V2_0, SedaVersion.from("2.0")); + assertEquals(SedaVersion.V2_1, SedaVersion.from("2.1")); + assertEquals(SedaVersion.V2_2, SedaVersion.from("2.2")); + assertEquals(SedaVersion.V2_3, SedaVersion.from("2.3")); + } + + @Test + void shouldThrowExceptionForUnsupportedMinorOnlyVersion() { + IllegalArgumentException exception = + assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("4")); + + assertEquals("Unsupported SEDA version: 2.4", exception.getMessage()); + } + + @Test + void shouldThrowExceptionForUnsupportedMajorMinorVersion() { + IllegalArgumentException exception = + assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("3.0")); + + assertEquals("Unsupported SEDA version: 3.0", exception.getMessage()); + } + + @Test + void shouldThrowExceptionForInvalidFormat() { + assertThrows(IllegalArgumentException.class, () -> SedaVersion.from("2.1.0")); + assertThrows(NumberFormatException.class, () -> SedaVersion.from("a")); + assertThrows(NumberFormatException.class, () -> SedaVersion.from("2.a")); + } +} \ No newline at end of file