From a349d8a6f43545ec5d2dc6bdf0e337a48e90e496 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 1 Jun 2022 10:26:28 +0200 Subject: [PATCH] OZG-1274 map client attribute 'hasPostfachNachricht' --- .../BinaryFileMaxSizeConstraint.java | 2 +- .../common/binaryfile/BinaryFileUnit.java | 6 ---- .../UploadBinaryFileSizeValidator.java | 6 ++-- .../java/de/itvsh/goofy/vorgang/Eingang.java | 4 ++- .../de/itvsh/goofy/vorgang/VorgangHeader.java | 3 +- .../goofy/vorgang/VorgangHeaderMapper.java | 25 ++++++++++----- .../WiedervorlageRemoteService.java | 6 ++-- .../wiedervorlage/WiedervorlageService.java | 10 ++---- .../src/main/resources/application.yml | 2 +- .../common/binaryfile/BinaryFileITCase.java | 2 +- .../callcontext/CallContextTestFactory.java | 5 +-- .../GrpcClientAttributeTestFactory.java | 31 +++++++++++++++++++ .../vorgang/VorgangHeaderMapperTest.java | 23 +++++++++++++- .../WiedervorlageServiceTest.java | 4 +-- 14 files changed, 93 insertions(+), 36 deletions(-) delete mode 100644 goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileUnit.java create mode 100644 goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcClientAttributeTestFactory.java diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileMaxSizeConstraint.java b/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileMaxSizeConstraint.java index 422f1d3598..58995022a3 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileMaxSizeConstraint.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileMaxSizeConstraint.java @@ -25,5 +25,5 @@ public @interface BinaryFileMaxSizeConstraint { int max() default UploadBinaryFileSizeValidator.DEFAULT_MAX_SIZE; - String unit() default UploadBinaryFileSizeValidator.DEFAULT_UNIT; + String unit() default UploadBinaryFileSizeValidator.DEFAULT_UNIT_STRING; } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileUnit.java b/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileUnit.java deleted file mode 100644 index f485e7eec2..0000000000 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/BinaryFileUnit.java +++ /dev/null @@ -1,6 +0,0 @@ -package de.itvsh.goofy.common.binaryfile; - -class BinaryFileUnit {// NOSONAR - - static final String MB = "MB"; -} \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/UploadBinaryFileSizeValidator.java b/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/UploadBinaryFileSizeValidator.java index 017fedfbfd..71bbb5d8ec 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/UploadBinaryFileSizeValidator.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/binaryfile/UploadBinaryFileSizeValidator.java @@ -13,10 +13,12 @@ import org.springframework.util.unit.DataUnit; class UploadBinaryFileSizeValidator implements ConstraintValidator<BinaryFileMaxSizeConstraint, UploadBinaryFileRequest> { - static final String DEFAULT_UNIT = BinaryFileUnit.MB; + static final String DEFAULT_UNIT_STRING = "MB"; + static final DataUnit DEFAULT_UNIT = DataUnit.fromSuffix(DEFAULT_UNIT_STRING); + static final int DEFAULT_MAX_SIZE = 40; - private final DataSize defaultDataSize = DataSize.of(DEFAULT_MAX_SIZE, DataUnit.fromSuffix(DEFAULT_UNIT)); + private final DataSize defaultDataSize = DataSize.of(DEFAULT_MAX_SIZE, DEFAULT_UNIT); @Autowired private BinaryFileProperties binaryFileProperties; diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java index 69fd514e91..480a0fb12c 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/Eingang.java @@ -4,9 +4,11 @@ import java.util.Map; import lombok.Builder; import lombok.Getter; +import lombok.ToString; @Getter @Builder +@ToString public class Eingang { private String id; @@ -18,6 +20,6 @@ public class Eingang { private Antragsteller antragsteller; private EingangHeader header; - + @ToString.Exclude private Map<String, Object> formData; } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeader.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeader.java index 3d7bb25ced..da48d2c4e9 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeader.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeader.java @@ -42,6 +42,5 @@ class VorgangHeader implements Vorgang { @JsonProperty(access = Access.READ_ONLY) private LocalDate nextFrist; - @Builder.Default - private boolean hasPostfachNachricht = true; + private boolean hasPostfachNachricht; } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeaderMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeaderMapper.java index 65c2d8620e..3b2e7405e2 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeaderMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/vorgang/VorgangHeaderMapper.java @@ -2,6 +2,7 @@ package de.itvsh.goofy.vorgang; import java.time.LocalDate; import java.util.List; +import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; import org.mapstruct.CollectionMappingStrategy; @@ -18,19 +19,27 @@ import de.itvsh.ozg.pluto.vorgang.GrpcVorgangHeader; interface VorgangHeaderMapper { static final String WIEDERVORLAGE_NEXT_FRIST_ATTRIBUTE_NAME = "nextWiedervorlageFrist"; + static final String HAS_POSTFACH_NACHRICHT_ATTRIBUTE_NAME = "hasPostfachNachricht"; @Mapping(target = "nextFrist", source = "clientAttributesList") + @Mapping(target = "hasPostfachNachricht", source = "clientAttributesList") VorgangHeader toVorgangHeader(GrpcVorgangHeader vorgangHeader); default LocalDate mapNextFrist(List<GrpcClientAttribute> clientAttributes) { - var clientAttributeList = clientAttributes.stream() - .filter(attribute -> StringUtils.equals(attribute.getAttributeName(), WIEDERVORLAGE_NEXT_FRIST_ATTRIBUTE_NAME)) - .map(GrpcClientAttribute::getValue) + return findByName(WIEDERVORLAGE_NEXT_FRIST_ATTRIBUTE_NAME, clientAttributes) .map(GrpcClientAttributeValue::getStringValue) - .map(LocalDate::parse).toList(); - if (clientAttributeList.isEmpty()) { - return null; - } - return clientAttributeList.get(0); + .map(LocalDate::parse).findFirst().orElse(null); + } + + default boolean mapHasPostfachNachricht(List<GrpcClientAttribute> clientAttributes) { + return findByName(HAS_POSTFACH_NACHRICHT_ATTRIBUTE_NAME, clientAttributes) + .map(GrpcClientAttributeValue::getBoolValue) + .findFirst().orElse(false); + } + + default Stream<GrpcClientAttributeValue> findByName(String attributeName, List<GrpcClientAttribute> clientAttributes) { + return clientAttributes.stream() + .filter(attribute -> StringUtils.equals(attribute.getAttributeName(), attributeName)) + .map(GrpcClientAttribute::getValue); } } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java index e7acc36fec..90a4a74b07 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java @@ -28,10 +28,12 @@ public class WiedervorlageRemoteService { static final String CLIENT_ATTRIBUTE_NEXT_WIEDERVORLAGE_FRIST = "nextWiedervorlageFrist"; static final String ITEM_NAME = "Wiedervorlage"; - @GrpcClient(GoofyServerApplication.GRPC_CLIENT) - private ClientAttributeServiceBlockingStub clientAttributeServiceStub; @GrpcClient(GoofyServerApplication.GRPC_CLIENT) private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub; + + @GrpcClient(GoofyServerApplication.GRPC_CLIENT) + private ClientAttributeServiceBlockingStub clientAttributeServiceStub; + @Autowired private WiedervorlageMapper mapper; @Autowired diff --git a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageService.java b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageService.java index 84e1333f4d..4d6961375b 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageService.java @@ -30,15 +30,11 @@ class WiedervorlageService { } Optional<LocalDate> calculateNextFrist(Stream<Wiedervorlage> wiedervorlagen) { - var sortedWiedervorlagen = wiedervorlagen + return wiedervorlagen .filter(IS_NOT_DONE) .sorted(Comparator.comparing(Wiedervorlage::getFrist)) - .toList(); - - if (sortedWiedervorlagen.isEmpty()) { - return Optional.empty(); - } - return Optional.of(sortedWiedervorlagen.get(0).getFrist()); + .map(Wiedervorlage::getFrist) + .findFirst(); } public Stream<Wiedervorlage> findByVorgangId(String vorgangId) { diff --git a/goofy-server/src/main/resources/application.yml b/goofy-server/src/main/resources/application.yml index 375e521387..d8cb5523c3 100644 --- a/goofy-server/src/main/resources/application.yml +++ b/goofy-server/src/main/resources/application.yml @@ -10,7 +10,7 @@ spring: pathmatch: matching-strategy: ant-path-matcher application: - name: Goofy + name: goofy jackson: deserialization: 'ADJUST_DATES_TO_CONTEXT_TIME_ZONE': false diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/binaryfile/BinaryFileITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/common/binaryfile/BinaryFileITCase.java index d9ef671334..314dd0914e 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/binaryfile/BinaryFileITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/binaryfile/BinaryFileITCase.java @@ -78,7 +78,7 @@ class BinaryFileITCase { .andExpect(jsonPath("issues[0].messageCode").value("validation_field_file_size_exceeded")) .andExpect(jsonPath("issues[0].message").value("validation_field_file_size_exceeded")) .andExpect(jsonPath("issues[0].parameters[0].name").value("unit")) - .andExpect(jsonPath("issues[0].parameters[0].value").value(BinaryFileUnit.MB)); + .andExpect(jsonPath("issues[0].parameters[0].value").value(UploadBinaryFileSizeValidator.DEFAULT_UNIT_STRING)); } @Test diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/callcontext/CallContextTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/common/callcontext/CallContextTestFactory.java index f8cfa40b1e..c283db65e2 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/callcontext/CallContextTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/callcontext/CallContextTestFactory.java @@ -1,7 +1,6 @@ package de.itvsh.goofy.common.callcontext; -import static de.itvsh.goofy.common.callcontext.ContextService.KEY_USER_ID; -import static de.itvsh.goofy.common.callcontext.ContextService.KEY_USER_NAME; +import static de.itvsh.goofy.common.callcontext.ContextService.*; import java.util.Map; @@ -9,6 +8,8 @@ import de.itvsh.goofy.common.user.UserTestFactory; public class CallContextTestFactory { + public static final String CLIENT_NAME = "TEST_CLIENT"; + static Map<String, String> createContextMap() { return Map.of( KEY_USER_ID, UserTestFactory.ID.toString(), diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcClientAttributeTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcClientAttributeTestFactory.java new file mode 100644 index 0000000000..aed0796d6e --- /dev/null +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcClientAttributeTestFactory.java @@ -0,0 +1,31 @@ + +package de.itvsh.goofy.vorgang; + +import de.itvsh.goofy.common.callcontext.CallContextTestFactory; +import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcAccessPermission; +import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcClientAttribute; +import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcClientAttribute.Builder; +import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcClientAttributeValue; + +class GrpcClientAttributeTestFactory { + + static final String CLIENT = CallContextTestFactory.CLIENT_NAME; + static final GrpcAccessPermission ACCESS = GrpcAccessPermission.READ_WRITE; + + static final GrpcClientAttribute create() { + return createBuilder().build(); + } + + static final Builder createBuilder() { + return GrpcClientAttribute.newBuilder() + .setClientName(CLIENT) + .setAccess(ACCESS); + } + + static final GrpcClientAttribute createWith(String attributeName, boolean value) { + return createBuilder().setAttributeName(attributeName) + .setValue(GrpcClientAttributeValue.newBuilder().setBoolValue(value).build()) + .build(); + } + +} diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/VorgangHeaderMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/VorgangHeaderMapperTest.java index d547eefa87..7ef7bfd6a8 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/VorgangHeaderMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/VorgangHeaderMapperTest.java @@ -75,7 +75,6 @@ class VorgangHeaderMapperTest { var header = mapper.toVorgangHeader(vorgangHeaderWithEmptyClientAttributes); assertThat(header.getNextFrist()).isNull(); - ; } @Test @@ -94,6 +93,28 @@ class VorgangHeaderMapperTest { } } + @Nested + class HasPostfachNachricht { + @Test + void shouldSetFalseIfNotExists() { + var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().clearClientAttributes().build(); + + var mapped = mapper.toVorgangHeader(vorgangHeader); + + assertThat(mapped.isHasPostfachNachricht()).isFalse(); + } + + @Test + void shouldBeTrue() { + var clientAttribute = GrpcClientAttributeTestFactory.createWith("hasPostfachNachricht", true); + var vorgangHeader = GrpcVorgangHeaderTestFactory.createBuilder().addClientAttributes(clientAttribute).build(); + + var mapped = mapper.toVorgangHeader(vorgangHeader); + + assertThat(mapped.isHasPostfachNachricht()).isTrue(); + } + } + private VorgangHeader callMapper() { return mapper.toVorgangHeader(GrpcVorgangHeaderTestFactory.create()); } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageServiceTest.java index db6195cb72..1609042fd1 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageServiceTest.java @@ -113,7 +113,7 @@ class WiedervorlageServiceTest { var nextFrist = calculateNextFrist(Stream.of(fristPast2Days, fristPast1Day, fristFuture1Day, fristFuture2Days)); - assertThat(nextFrist.get()).isEqualTo(LocalDate.now().minus(2, ChronoUnit.DAYS)); + assertThat(nextFrist).contains(LocalDate.now().minus(2, ChronoUnit.DAYS)); } @Test @@ -125,7 +125,7 @@ class WiedervorlageServiceTest { var nextFrist = calculateNextFrist(Stream.of(fristPast1DayNotDone, fristPast1DayDone)); - assertThat(nextFrist.get()).isEqualTo(LocalDate.now().plus(1, ChronoUnit.DAYS)); + assertThat(nextFrist).contains(LocalDate.now().plus(1, ChronoUnit.DAYS)); } private Optional<LocalDate> calculateNextFrist(Stream<Wiedervorlage> wiedervorlagen) { -- GitLab