diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java index 1c6c26979e5d5c0e58c3d3b939890fb433555c89..510b7c92779fa39758cf3da4855a7af4dec20fe1 100644 --- a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java @@ -1,7 +1,6 @@ package de.ozgcloud.eingang.common.vorgang; import java.time.LocalDate; -import java.util.Random; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.stereotype.Component; @@ -12,18 +11,15 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class VorgangNummerSupplier { - static final String VORGANGNUMMER_TEMPLATE = "%d%02X%02d-%s"; + static final String VORGANGNUMMER_TEMPLATE = "%d%X%02d-%s"; static final char[] BASE30_ALPHABET = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z' }; static final int SUFFIX_LENGTH = 6; - static final int NEXT_MAX_HEX_NUMBER = 256; - - private final Random randomGenerator = new Random(); public String get() { var today = LocalDate.now(); var lastYearNumber = today.getYear() % 10; - return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, randomGenerator.nextInt(NEXT_MAX_HEX_NUMBER), today.getDayOfMonth(), + return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), RandomStringUtils.random(SUFFIX_LENGTH, BASE30_ALPHABET)); } diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java index 3ae655895f61f58158803bb5bbfd16f94b55ca8e..2fc9a524f5e23d2bebd9721eb5612d96ad879782 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java @@ -20,15 +20,13 @@ class VorgangNummerSupplierTest { @InjectMocks private VorgangNummerSupplier vorgangNummerSupplier; - @Mock - private Random randomGenerator; @Test @DisplayName("should add random suffix of length 6") void shouldAddSuffix() { var result = vorgangNummerSupplier.get(); - assertThat(result).hasSize(12); + assertThat(result).hasSize(11); } @Test @@ -44,7 +42,7 @@ class VorgangNummerSupplierTest { void shouldHaveSize() { var result = vorgangNummerSupplier.get(); - assertThat(getPrefix(result)).hasSize(6); + assertThat(getPrefix(result)).hasSize(5); } private String getPrefix(String string) { @@ -62,14 +60,11 @@ class VorgangNummerSupplierTest { @Test void shouldAddMonthValueSecond() { - var value = 244; - var hexValue = "F4"; - when(randomGenerator.nextInt(anyInt())).thenReturn(value); - ReflectionTestUtils.setField(vorgangNummerSupplier, "randomGenerator", randomGenerator); + var monthHexValue = "%X".formatted(LocalDate.now().getMonthValue()); var result = vorgangNummerSupplier.get(); - assertThat(result.substring(1, 3)).isEqualTo(hexValue); + assertThat(result.substring(1, 2)).isEqualTo(monthHexValue); } @Test @@ -78,14 +73,14 @@ class VorgangNummerSupplierTest { var result = vorgangNummerSupplier.get(); - assertThat(result.substring(3, 5)).isEqualTo(dayValue); + assertThat(result.substring(2, 4)).isEqualTo(dayValue); } @Test void shouldAddHyphenAtEnd() { var result = vorgangNummerSupplier.get(); - assertThat(result.charAt(5)).isEqualTo('-'); + assertThat(result.charAt(4)).isEqualTo('-'); } } \ No newline at end of file