diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/CustomVorgangHeaderRepository.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/CustomVorgangHeaderRepository.java index 6fb75d05fe7bc956ce88e181f5adeda9d198ef22..a9d6d45a1994f7c1122a0649bfaf10a244e3182e 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/CustomVorgangHeaderRepository.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/CustomVorgangHeaderRepository.java @@ -5,6 +5,4 @@ import org.springframework.data.domain.Page; interface CustomVorgangHeaderRepository { Page<VorgangHeader> findAll(FindVorgangRequest request); - - Page<VorgangHeader> searchBy(FindVorgangRequest request); } \ No newline at end of file diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java index a02a13ebe833a094f81f3aa686fa72242447a421..855e6aa9e7ae642d713bafc1acbb147c8a3ca7a6 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryImpl.java @@ -42,11 +42,6 @@ class VorgangHeaderRepositoryImpl implements CustomVorgangHeaderRepository { return checkAndExecuteRequest(request, buildFilterQuery(request.getFilterBy())); } - @Override - public Page<VorgangHeader> searchBy(FindVorgangRequest request) { - return checkAndExecuteRequest(request, buildFilterQuery(request.getFilterBy(), request.getSearchBy())); - } - private Page<VorgangHeader> checkAndExecuteRequest(FindVorgangRequest request, Query totalQuery) { if (hasNoPermissionByOrganisationseinheitenId(request.getFilterBy())) { return new PageImpl<>(Collections.emptyList()); @@ -83,10 +78,6 @@ class VorgangHeaderRepositoryImpl implements CustomVorgangHeaderRepository { return Query.query(filterToCriteria(filterCriteria)); } - Query buildFilterQuery(FilterCriteria filterCriteria, String searchBy) { - return Query.query(new Criteria().andOperator(filterToCriteria(filterCriteria), CriteriaUtil.searchCriteria(searchBy))); - } - private Criteria filterToCriteria(FilterCriteria filterCriteria) { var organisationseinheitenIdCriteria = buildOrganisationseinheitenCriteria(filterCriteria); var assignedToCriteria = buildAssignedToCriteria(filterCriteria); diff --git a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderService.java b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderService.java index 7baa10cfda9f27e143384053922ec88d63e3dfc5..844bd0ccff2d1f9820be087aa1d4600c0db5d5b2 100644 --- a/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderService.java +++ b/pluto-server/src/main/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderService.java @@ -1,9 +1,7 @@ package de.itvsh.ozg.pluto.vorgang; import java.util.Objects; -import java.util.Optional; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -26,11 +24,8 @@ class VorgangHeaderService { public Page<VorgangHeader> findAll(FindVorgangRequest request) { if (Objects.nonNull(searchService) && Objects.nonNull(request.getSearchBy())) { return removeUnpermitted(searchService.find(request)); - } else { - return removeUnpermitted(Optional.ofNullable(StringUtils.trimToNull(request.getSearchBy())) - .map(searchString -> repository.searchBy(request)) - .orElseGet(() -> repository.findAll(request))); } + return removeUnpermitted(repository.findAll(request)); } private Page<VorgangHeader> removeUnpermitted(Page<VorgangHeader> loaded) { diff --git a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java index 122567b8d0dc1a3ec8da95facacb7bfe2891b1be..e0fddca0f70d32db79adfd0e5e407d1f817a84f2 100644 --- a/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java +++ b/pluto-server/src/test/java/de/itvsh/ozg/pluto/vorgang/VorgangHeaderRepositoryITCase.java @@ -16,7 +16,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource.Mode; import org.springframework.beans.factory.annotation.Autowired; @@ -48,239 +47,6 @@ class VorgangHeaderRepositoryITCase { mongoOperations.dropCollection(Vorgang.class); } - @Nested - class TestSearchBy { - - @ParameterizedTest - @CsvSource({ "test--", "--test", "-test-", "TEst--" }) - void shouldFindByAktenzeichen(String aktenzeichen) { - mongoOperations.save(buildWithAktenzeichen(aktenzeichen)); - - var result = repository.searchBy(createRequestWithSearchBy("test")).getContent(); - - assertThat(result).hasSize(1); - } - - @ParameterizedTest - @CsvSource({ "Paul", "Pauline", "testpauler", "PaULie" }) - void shouldFindByVornamen(String vornamen) { - mongoOperations.save(buildVorgangWithVornamen(vornamen)); - - var result = repository.searchBy(createRequestWithSearchBy("Paul")).getContent(); - - assertThat(result).hasSize(1); - } - - private Vorgang buildVorgangWithVornamen(String vornamen) { - return VorgangTestFactory.createBuilder() - .id(null) - .clearEingangs() - .eingang(EingangTestFactory.createBuilder() - .antragsteller(AntragstellerTestFactory.createBuilder() - .vorname(vornamen) - .build()) - .build()) - .build(); - } - - @ParameterizedTest - @CsvSource({ "Maier", "Biermaier", "Maiertest", "Testmaiertest" }) - void shouldFindByNachnamen(String nachname) { - mongoOperations.save(buildWithNachname(nachname)); - - var result = repository.searchBy(createRequestWithSearchBy("Maier")).getContent(); - - assertThat(result).hasSize(1); - } - - @ParameterizedTest - @CsvSource({ "Fischereischein", "Fischer", "AFischereischein", "xFischEreischEinx" }) - void shouldFindByVorgangName(String name) { - mongoOperations.save(buildWithVorgangName(name)); - - var result = repository.searchBy(createRequestWithSearchBy("Fischer")).getContent(); - - assertThat(result).hasSize(1); - } - - @ParameterizedTest - @CsvSource({ "32456 0815 34", "0815 123 456", "123 456 0815" }) - void shouldFindByRequestId(String requestId) { - mongoOperations.save(buildVorgangWithRequestId(requestId)); - - var result = repository.searchBy(createRequestWithSearchBy("0815")).getContent(); - - assertThat(result).hasSize(1); - } - - private Vorgang buildVorgangWithRequestId(String requestId) { - return VorgangTestFactory.createBuilder() - .eingang(EingangTestFactory.createBuilder() - .header(EingangHeaderTestFactory.createBuilder() - .requestId(requestId) - .build()) - .build()) - .build(); - } - - @ParameterizedTest - @CsvSource({ "Testaktenzeichen, Paultest, Testmaier, TEstvorgang", "Aktenzeichentest, Test-Marie, Meiertest, vorgangTEst" }) - void shouldFindByInSomeFields(String aktenzeichen, String vorname, String nachname, String vorgangId) { - mongoOperations.save(buildWithAktenzeichen(aktenzeichen)); - mongoOperations.save(buildVorgangWithVornamen(vorname)); - mongoOperations.save(buildWithNachname(nachname)); - mongoOperations.save(buildWithVorgangName(vorgangId)); - - var result = repository.searchBy(createRequestWithSearchBy("test")).getContent(); - - assertThat(result).hasSize(4); - } - - @ParameterizedTest - @CsvSource({ "Testaktenzeichen, Pinguin, bla, bla-vorgang", "Aktenzeichentest, Pechbla, blub, vorgang-blub" }) - void shouldNotFindMultipleWordsByInSomeFields(String aktenzeichen, String vorname, String nachname, String vorgangId) { - mongoOperations.save(buildWithAktenzeichen(aktenzeichen)); - mongoOperations.save(buildWithVorgangName(vorname)); - mongoOperations.save(buildWithNachname(nachname)); - mongoOperations.save(buildWithVorgangName(vorgangId)); - - var result = repository.searchBy(createRequestWithSearchBy("test bla")).getContent(); - - assertThat(result).isEmpty(); - } - - private Vorgang buildWithAktenzeichen(String aktenzeichen) { - return VorgangTestFactory.createBuilder().id(null).aktenzeichen(aktenzeichen).status(Status.ANGENOMMEN).build(); - } - - private Vorgang buildWithVorgangName(String name) { - return VorgangTestFactory.createBuilder().id(null).name(name).build(); - } - - private Vorgang buildWithNachname(String nachname) { - return VorgangTestFactory.createBuilder().id(null) - .clearEingangs().eingang(EingangTestFactory.createBuilder() - .antragsteller(AntragstellerTestFactory.createBuilder() - .nachname(nachname) - .build()) - .build()) - .build(); - } - - @ParameterizedTest - @CsvSource({ "Testaktenzeichen, bla-vorgang", "Aktenzeichentest, vorgang-bla" }) - void shouldFindMultipleWordsByInSomeFields(String aktenzeichen, String vorgangId) { - mongoOperations.save(buildWithAktenzeichenAndVorgangnamen(aktenzeichen, vorgangId)); - mongoOperations.save(buildWithAktenzeichenAndVorgangnamen(aktenzeichen, vorgangId)); - - var result = repository.searchBy(createRequestWithSearchBy("test bla")).getContent(); - - assertThat(result).hasSize(2); - } - - private Vorgang buildWithAktenzeichenAndVorgangnamen(String aktenzeichen, String name) { - return VorgangTestFactory.createBuilder() - .id(UUID.randomUUID().toString()) - .name(name) - .aktenzeichen(aktenzeichen) - .build(); - } - - @ParameterizedTest - @CsvSource({ "vorgangNummer1234", "--Nummer1234", "-ngNu-", "VorgangNu--" }) - void shouldFindByNummer(String nummer) { - mongoOperations.save(buildWithNummer(nummer)); - - var result = repository.searchBy(createRequestWithSearchBy("Nu")).getContent(); - - assertThat(result).hasSize(1); - } - - private Vorgang buildWithNummer(String nummer) { - return VorgangTestFactory.createBuilder().id(null).nummer(nummer).build(); - } - - private FindVorgangRequest createRequestWithSearchBy(String searchTerm) { - return FindVorgangRequestTestFactory.createBuilder() - .searchBy(searchTerm).filterBy(null).limit(10).offset(0) - .build(); - } - } - - @Nested - class TestSearchByEingangsKennzeichen { - - private final String NO_DEFAULT_MATCH = "no match"; - private final String EINGANGSKENNZEICHEN = "0815"; - - @ParameterizedTest - @EnumSource - void shouldFindInAnyStatus(Status status) { - mongoOperations.save(buildWithEingangsKennzeichen(EINGANGSKENNZEICHEN, status)); - mongoOperations.save(buildWithEingangsKennzeichen(NO_DEFAULT_MATCH, status)); - - var request = FindVorgangRequestTestFactory.createBuilder() - .searchBy(EINGANGSKENNZEICHEN).filterBy(null) - .build(); - var result = repository.searchBy(request).getContent(); - - assertThat(result).hasSize(1); - } - - @Test - void shouldHaveTotalByEingangskennzeichenAndOrganisationseinheitenId() { - mongoOperations.save(buildWithEingangsKennzeichen(EINGANGSKENNZEICHEN)); - mongoOperations.save(buildWithEingangsKennzeichen(EINGANGSKENNZEICHEN)); - mongoOperations.save(buildWithEingangsKennzeichen(EINGANGSKENNZEICHEN)); - mongoOperations.save(buildWithEingangsKennzeichen(NO_DEFAULT_MATCH)); - mongoOperations.save(buildWithEingangsKennzeichenAndOrganisationseinheitenId(NO_DEFAULT_MATCH, NO_DEFAULT_MATCH, Status.NEU)); - - var request = FindVorgangRequestTestFactory.createBuilder() - .searchBy(EINGANGSKENNZEICHEN).filterBy(FilterCriteriaTestFactory.create()).limit(1).offset(0) - .build(); - var result = repository.searchBy(request); - - assertThat(result.getTotalElements()).isEqualTo(3); - } - - private Vorgang buildWithEingangsKennzeichen(String eingangskennzeichen) { - return buildWithEingangsKennzeichen(eingangskennzeichen, Status.NEU); - } - - @Nested - class TestWithFilterByOrganisationseinheit { - - @ParameterizedTest - @EnumSource - void shouldFindInAnyStatus(Status status) { - mongoOperations.save(buildWithEingangsKennzeichen(EINGANGSKENNZEICHEN, status)); - mongoOperations.save(buildWithEingangsKennzeichen(NO_DEFAULT_MATCH, status)); - mongoOperations.save(buildWithEingangsKennzeichenAndOrganisationseinheitenId(NO_DEFAULT_MATCH, NO_DEFAULT_MATCH, status)); - - var request = FindVorgangRequestTestFactory.createBuilder() - .searchBy(EINGANGSKENNZEICHEN).filterBy(FilterCriteriaTestFactory.createBuilder().clearStatus().assignedTo(null).build()) - .build(); - var result = repository.searchBy(request).getContent(); - - assertThat(result).hasSize(1); - } - } - - private Vorgang buildWithEingangsKennzeichen(String kennz, Status status) { - var header = EingangHeaderTestFactory.createBuilder().requestId(kennz).build(); - var eingang = EingangTestFactory.createBuilder().header(header).build(); - return VorgangTestFactory.createBuilder().id(null).status(status).clearEingangs().eingang(eingang).build(); - } - - private Vorgang buildWithEingangsKennzeichenAndOrganisationseinheitenId(String kennz, String organisationseinheitenId, Status status) { - var header = EingangHeaderTestFactory.createBuilder().requestId(kennz).build(); - var zustaendigeStelle = ZustaendigeStelleTestFactory.createBuilder().organisationseinheitenId(organisationseinheitenId) - .build(); - var eingang = EingangTestFactory.createBuilder().header(header).zustaendigeStelle(zustaendigeStelle).build(); - return VorgangTestFactory.createBuilder().id(null).status(status).clearEingangs().eingang(eingang).build(); - } - } - @Nested class TestSortByPriority {