Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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)));
}

/**
Expand Down Expand Up @@ -228,4 +229,15 @@ public SedaVersion getSedaVersion() {
public void setSedaVersion(SedaVersion version) {
this.sedaVersion = version;
}

private SedaVersion parseSedaVersion(String version) {
final List<String> 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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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"));
}
}