diff --git a/src/main/java/de/ozgcloud/admin/AdministrationRepositoryRestConfigurer.java b/src/main/java/de/ozgcloud/admin/AdministrationRepositoryRestConfigurer.java index 31bcf3b864fd772838ebe1ef3555084c984af6b6..413e34e2660a44eebad1fbfd3301e7b470fea264 100644 --- a/src/main/java/de/ozgcloud/admin/AdministrationRepositoryRestConfigurer.java +++ b/src/main/java/de/ozgcloud/admin/AdministrationRepositoryRestConfigurer.java @@ -34,9 +34,12 @@ import de.ozgcloud.admin.common.DelegatingValidatorAdapter; @Configuration public class AdministrationRepositoryRestConfigurer implements RepositoryRestConfigurer { + private static final DelegatingValidatorAdapter DELEGATING_VALIDATOR_ADAPTER = new DelegatingValidatorAdapter( + Validation.buildDefaultValidatorFactory().getValidator()); + @Override public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener listener) { - var validator = Validation.buildDefaultValidatorFactory().getValidator(); - listener.addValidator("beforeCreate", new DelegatingValidatorAdapter(validator)); + listener.addValidator("beforeCreate", DELEGATING_VALIDATOR_ADAPTER); + listener.addValidator("beforeSave", DELEGATING_VALIDATOR_ADAPTER); } } diff --git a/src/main/java/de/ozgcloud/admin/reporting/AggregationMapping.java b/src/main/java/de/ozgcloud/admin/reporting/AggregationMapping.java index 532c3ad607f2f5627bc25ffeb75e7bae09127eed..888b17da08a84f217a5794788582c916f146252b 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/AggregationMapping.java +++ b/src/main/java/de/ozgcloud/admin/reporting/AggregationMapping.java @@ -23,6 +23,8 @@ */ package de.ozgcloud.admin.reporting; +import static de.ozgcloud.admin.common.errorhandling.ValidationMessageCodes.*; + import java.util.List; import jakarta.validation.Valid; @@ -41,26 +43,28 @@ import lombok.Singular; import lombok.ToString; import lombok.extern.jackson.Jacksonized; -@Document("settings") +@Document(AggregationMapping.COLLECTION_NAME) @TypeAlias(AggregationMapping.TYPE_ALIAS) @Jacksonized @Builder @Getter @ToString public class AggregationMapping { + static final String COLLECTION_NAME = "aggregationMapping"; public static final String TYPE_ALIAS = "AggregationMapping"; @Id @JsonIgnore private String id; - @Builder.Default - private String name = "aggregationMapping"; + + @NotEmpty(message = FIELD_IS_EMPTY) + private String name; @Valid private FormIdentifier formIdentifier; - @NotEmpty + @NotEmpty(message = FIELD_IS_EMPTY) @Singular @Valid private List<FieldMapping> mappings; @@ -69,9 +73,9 @@ public class AggregationMapping { @Getter @ToString static class FieldMapping { - @NotBlank + @NotBlank(message = FIELD_IS_EMPTY) private String sourcePath; -// @NotBlank //TODO reactivate in OZG-7668 + @NotBlank(message = FIELD_IS_EMPTY) private String targetPath; } @@ -79,9 +83,9 @@ public class AggregationMapping { @Getter @ToString static class FormIdentifier { - @NotBlank + @NotBlank(message = FIELD_IS_EMPTY) private String formEngineName; - @NotBlank + @NotBlank(message = FIELD_IS_EMPTY) private String formId; } } diff --git a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java index 81a25c3042c172767fa810162764de2d72b9b3d9..90409fd551d3006d2e935e89630033391b6c22a9 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java +++ b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java @@ -34,5 +34,5 @@ public interface AggregationMappingMapper { @Mapping(target = "fieldMapping", ignore = true) @Mapping(target = "fieldMappings", source = "mappings") - AggregationMappingDto toMapping(AggregationMapping setting); + AggregationMappingDto toMapping(AggregationMapping aggregationMapping); } diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java index 0e0ad48f395146377f054202154acad18819ccae..afaaaed64b05413fff0613a1c63a6cd83be5e2e0 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoService.java @@ -23,12 +23,11 @@ */ package de.ozgcloud.admin.reporting; -import java.util.stream.Stream; +import java.util.List; import de.ozgcloud.admin.common.DtoService; import de.ozgcloud.admin.common.SettingDtoService; import de.ozgcloud.admin.setting.SettingConstants; -import de.ozgcloud.admin.setting.SettingRepository; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @@ -37,16 +36,16 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService private final AggregationMappingMapper mapper; - private final SettingRepository repository; + private final AggregationMappingRepository repository; @Override public ReportingAggregationManagerSettingDto getDataTransferObject() { - return mapToDto(repository.findByType("AggregationMapping", AggregationMapping.class)); + return mapToDto(repository.findAll()); } - ReportingAggregationManagerSettingDto mapToDto(Stream<AggregationMapping> settings) { + ReportingAggregationManagerSettingDto mapToDto(List<AggregationMapping> aggregationMappings) { return ReportingAggregationManagerSettingDto.builder() - .aggregationMappings(settings.map(mapper::toMapping).toList()) + .aggregationMappings(aggregationMappings.stream().map(mapper::toMapping).toList()) .build(); } diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java index 0457a9e38745efb52c02b6c24edd9a5169cd6073..6425ab46f63a9444d8a18261d29c32b5155bd10d 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java @@ -98,7 +98,7 @@ public class AggregationMappingEnvironmentSettingITCase { .targetPath(YamlTestFactory.TARGET_PATH_2_2).build()) .build(); - mongoOperations.dropCollection("settings"); + mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME); mongoOperations.save(aggregationMapping1); mongoOperations.save(aggregationMapping2); } diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java index a92bcc6b3e210f27a066f54f3dc28db551f45086..8012939ce12cd2313b32e28bc7a116f6d267ebe5 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingRepositoryITCase.java @@ -47,7 +47,7 @@ class AggregationMappingRepositoryITCase { @BeforeEach void dropCollection() { - operations.dropCollection("settings"); + operations.dropCollection(AggregationMapping.COLLECTION_NAME); } @Test diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingTestFactory.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingTestFactory.java index 5d41bec21628058b6a5f84ef2858746b1b348d26..e005eda541b797c10d47f8c6f161b92d80bb2e26 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingTestFactory.java @@ -31,6 +31,7 @@ import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier; public class AggregationMappingTestFactory { public static final String ID = UUID.randomUUID().toString(); + public static final String NAME = "Test Auswertung"; public static final String FORM_ENGINE_NAME = "A12"; public static final String FORM_ID = "42"; @@ -44,6 +45,7 @@ public class AggregationMappingTestFactory { public static AggregationMapping.AggregationMappingBuilder createBuilder() { return AggregationMapping.builder() .id(UUID.randomUUID().toString()) + .name(NAME) .formIdentifier(FormIdentifier.builder() .formEngineName(FORM_ENGINE_NAME) .formId(FORM_ID) diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java index 38b5d5e310295cecf06d3fd9d4ff723f14c00d54..412869536adf67ea9f470d6840d2c1d0a1ff1630 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDtoServiceTest.java @@ -27,7 +27,7 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; -import java.util.stream.Stream; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -38,8 +38,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; -import de.ozgcloud.admin.setting.SettingRepository; - class ReportingAggregationManagerSettingDtoServiceTest { @Spy @@ -49,7 +47,7 @@ class ReportingAggregationManagerSettingDtoServiceTest { @Mock private AggregationMappingMapper mapper; @Mock - private SettingRepository repository; + private AggregationMappingRepository repository; @Nested class TestMapToDto { @@ -62,14 +60,14 @@ class ReportingAggregationManagerSettingDtoServiceTest { @Test void shouldCallMapper() { var mapping = AggregationMappingTestFactory.create(); - service.mapToDto(Stream.of(mapping)); + service.mapToDto(List.of(mapping)); verify(mapper).toMapping(mapping); } @Test void shouldBuildDto() { - var dto = service.mapToDto(Stream.of(AggregationMappingTestFactory.create())); + var dto = service.mapToDto(List.of(AggregationMappingTestFactory.create())); assertThat(dto).usingRecursiveComparison().isEqualTo(ReportingAggregationMAnagerSettingDtoTestFactory.create()); } @@ -79,7 +77,7 @@ class ReportingAggregationManagerSettingDtoServiceTest { class TestGetDataTransferObject { @Captor - private ArgumentCaptor<Stream<AggregationMapping>> streamCaptor; + private ArgumentCaptor<List<AggregationMapping>> listCaptor; @BeforeEach void disableMapToDtoFunction() { @@ -90,18 +88,18 @@ class ReportingAggregationManagerSettingDtoServiceTest { void shouldCallRepository() { service.getDataTransferObject(); - verify(repository).findByType(AggregationMapping.TYPE_ALIAS, AggregationMapping.class); + verify(repository).findAll(); } @Test void shouldCallMapToDto() { AggregationMapping mapping = AggregationMappingTestFactory.create(); - when(repository.findByType(any(), any())).thenReturn(Stream.of(mapping)); + when(repository.findAll()).thenReturn(List.of(mapping)); service.getDataTransferObject(); - verify(service).mapToDto(streamCaptor.capture()); - assertThat(streamCaptor.getValue()).contains(mapping); + verify(service).mapToDto(listCaptor.capture()); + assertThat(listCaptor.getValue()).contains(mapping); } } diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java index 45942aee4876e9513dbc9f98a935be6b4054bbc5..1df9ae404b79593bb578f2a9e7dcef5b6bcd8ee7 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java @@ -56,7 +56,7 @@ class ReportingSettingITCase { @BeforeEach void clearDatabase() { - mongoOperations.dropCollection("settings"); + mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME); } @Test @@ -110,7 +110,7 @@ class ReportingSettingITCase { .contentType(MediaType.APPLICATION_JSON).content(TestUtils.loadTextFile("reporting/request.json"))) .andExpect(status().isCreated()); - var collection = mongoOperations.getCollection("settings"); + var collection = mongoOperations.getCollection(AggregationMapping.COLLECTION_NAME); assertThat(collection.countDocuments()).isEqualTo(1); var mapping = mongoOperations.findAll(AggregationMapping.class).getFirst(); assertThat(mapping).usingRecursiveComparison().ignoringFields("id").isEqualTo(AggregationMappingTestFactory.create()); diff --git a/src/test/resources/reporting/request.json b/src/test/resources/reporting/request.json index c2db9de85906742429d7bcd56bc4ae61a28f2580..7bae80abf63f69d1139c4090dde398a6b9daeb04 100644 --- a/src/test/resources/reporting/request.json +++ b/src/test/resources/reporting/request.json @@ -1,4 +1,5 @@ { + "name": "Test Auswertung", "formIdentifier": { "formEngineName": "A12", "formId": "42"