diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/BescheidProperty.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/BescheidProperty.java deleted file mode 100644 index 51a41ed780a5c1a6468db8743b3e40e39866cc18..0000000000000000000000000000000000000000 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/BescheidProperty.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.ozgcloud.alfa.vorgang; - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -@Builder -@Setter -@Getter -public class BescheidProperty { - - private String formEngineName; - private String formId; - -} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java index 0647a245296477304a91217f511bc607b996b061..21caca760eaa8e83b9c9af8ec1dfd2b0c6a475e8 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java @@ -6,6 +6,7 @@ import java.util.List; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -21,5 +22,15 @@ class VorgangProperties { * Konfiguriert für welche Art von Anträgen der Button zur Erstellung von Bescheiden angezeigt wird. Der Art eines Antrags wird basierend auf form * id und form engine name bestimmt. */ - private List<BescheidProperty> bescheid = Collections.emptyList(); -} \ No newline at end of file + private List<VorgangProperty> vorgangProperties = Collections.emptyList(); + + @Builder + @Setter + @Getter + static class VorgangProperty { + + private String formId; + private String formEngineName; + + } +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java index 41820bab72cc3476b84ad15ed0b308fed07f4f43..994cc342ac3629aa81a18845d6e6d04d34cc9ec7 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java @@ -30,6 +30,7 @@ import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; @@ -48,6 +49,7 @@ import de.ozgcloud.alfa.historie.HistorieController; import de.ozgcloud.alfa.kommentar.KommentarController.KommentarByVorgangController; import de.ozgcloud.alfa.postfach.PostfachMailController; import de.ozgcloud.alfa.representation.RepresentationController; +import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty; import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController; @Component @@ -65,6 +67,9 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted"; static final String USER_PROFILE_SEARCH_ORGANISATIONS_EINHEIT_ID_PARAM = "organisationsEinheitId"; + private static final Predicate<EingangHeader> HAS_FORM_ID_WITH_ENGINE_NAME = + eingangHeader -> ObjectUtils.allNotNull(eingangHeader.getFormEngineName(), eingangHeader.getFormId()); + @Autowired private PostfachMailController postfachMailController; @Autowired @@ -142,15 +147,17 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity boolean hasVorgangCreateBescheidEnabled(VorgangWithEingang vorgang) { return ofNullable(vorgang.getEingang()) - .flatMap(eingang -> ofNullable(eingang.getHeader()) - .flatMap(eingangHeader -> ofNullable(eingangHeader.getFormId()) - .flatMap(formId -> ofNullable(eingangHeader.getFormEngineName()) - .map(formEngineName -> isCreateBescheidEnabled(formId, formEngineName))))) + .map(Eingang::getHeader) + .filter(HAS_FORM_ID_WITH_ENGINE_NAME) + .map(this::isCreateBescheidEnabled) .orElse(false); } - private boolean isCreateBescheidEnabled(String formId, String formEngineName) { - return vorgangProperties.getBescheid().stream().filter(prop -> - prop.getFormId().equals(formId) && prop.getFormEngineName().equals(formEngineName)).count() > 0; + private boolean isCreateBescheidEnabled(EingangHeader eingangHeader) { + return vorgangProperties.getVorgangProperties().stream().filter(prop -> isFormIdAndFormEngineNameMatching(eingangHeader, prop)).count() > 0; + } + + private boolean isFormIdAndFormEngineNameMatching(EingangHeader eingangHeader, VorgangProperty prop) { + return prop.getFormId().equals(eingangHeader.getFormId()) && prop.getFormEngineName().equals(eingangHeader.getFormEngineName()); } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java index 722568708098ce0b1a6a0253996a7888c4dffd48..4886c79aceafd2b31cfc686644538322b85d50c7 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangPropertyTestFactory.java @@ -1,13 +1,15 @@ package de.ozgcloud.alfa.vorgang; +import de.ozgcloud.alfa.vorgang.VorgangProperties.VorgangProperty; + public class VorgangPropertyTestFactory { - public static BescheidProperty create() { + public static VorgangProperty create() { return createBuilder().build(); } - public static BescheidProperty.BescheidPropertyBuilder createBuilder() { - return BescheidProperty.builder() + public static VorgangProperty.VorgangPropertyBuilder createBuilder() { + return VorgangProperty.builder() .formEngineName(EingangHeaderTestFactory.FORM_ENGINE_NAME) .formId(EingangHeaderTestFactory.FORM_ID); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java index e4381a62ec741930f7f90f8ef93e68117f5f4eb6..e613e73ae1008ad2c3cb4025ea128f283b7532c8 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java @@ -294,7 +294,7 @@ class VorgangWithEingangProzessorTest { @BeforeEach void setUp() { - when(vorgangProperties.getBescheid()).thenReturn(Collections.emptyList()); + when(vorgangProperties.getVorgangProperties()).thenReturn(Collections.emptyList()); } @Test @@ -311,16 +311,17 @@ class VorgangWithEingangProzessorTest { @BeforeEach void setUp() { - when(vorgangProperties.getBescheid()).thenReturn(List.of(VorgangPropertyTestFactory.create())); + when(vorgangProperties.getVorgangProperties()).thenReturn(List.of(VorgangPropertyTestFactory.create())); } @Test void shouldReturnFalseIfFormEngineNameNotEquals() { - var hasEnabled = callProcessor( - VorgangWithEingangTestFactory.createBuilder().eingang( - EingangTestFactory.createBuilder() - .header(EingangHeaderTestFactory.createBuilder().formEngineName("different").build()) - .build()).build()); + var vorgang = createVorgang(EingangTestFactory.createBuilder() + .header(EingangHeaderTestFactory.createBuilder() + .formEngineName("different").build()) + .build()); + + var hasEnabled = callProcessor(vorgang); assertThat(hasEnabled).isFalse(); } @@ -366,8 +367,7 @@ class VorgangWithEingangProzessorTest { var vorgangWithEmptyFormId = createVorgang( EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formId(null).build()).build()); - var hasEnabled = callProcessor( - vorgangWithEmptyFormId); + var hasEnabled = callProcessor(vorgangWithEmptyFormId); assertThat(hasEnabled).isFalse(); }