From cd9735f5b315f89c206b660ccb5e6af77902795e Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Thu, 10 Oct 2024 12:51:50 +0200 Subject: [PATCH] OZG-6676 OZG-6878 add link relation for searching a fachstelle --- .../CollaborationVorgangProcessor.java | 7 +++++- .../alfa/collaboration/Fachstelle.java | 15 ++++++++++++ .../collaboration/FachstelleController.java | 24 +++++++++++++++++++ .../CollaborationVorgangProcessorTest.java | 16 +++++++++++-- 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java create mode 100644 alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java index c8c7378a3e..4edfc3a6fb 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessor.java @@ -23,6 +23,7 @@ class CollaborationVorgangProcessor implements RepresentationModelProcessor<Enti static final LinkRelation REL_COLLABORATIONS = LinkRelation.of("collaborations"); static final LinkRelation REL_SEARCH_ORGANISATIONS_EINHEIT = LinkRelation.of("searchOrganisationsEinheit"); + static final LinkRelation REL_SEARCH_FACHSTELLE = LinkRelation.of("searchFachstelle"); private final CurrentUserService currentUserService; private final CollaborationService collaborationService; @@ -35,9 +36,13 @@ class CollaborationVorgangProcessor implements RepresentationModelProcessor<Enti return model; } + var searchOrgnisationsEinheitLink = linkTo(methodOn(OrganisationsEinheitController.class).search(null)).withRel( + REL_SEARCH_ORGANISATIONS_EINHEIT); + var searchFachstelleLink = linkTo(methodOn(FachstelleController.class).search(null)).withRel(REL_SEARCH_FACHSTELLE); + return ModelBuilder.fromModel(model) .ifMatch(() -> !collaborationService.hasCollaboration(vorgang.getId())) - .addLink(linkTo(methodOn(OrganisationsEinheitController.class).search(null)).withRel(REL_SEARCH_ORGANISATIONS_EINHEIT)) + .addLinks(searchOrgnisationsEinheitLink, searchFachstelleLink) .addLink(linkTo(methodOn(CollaborationController.class).getAllByVorgangId(vorgang.getId())).withRel(REL_COLLABORATIONS)) .buildModel(); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java new file mode 100644 index 0000000000..604f6c1fe9 --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/Fachstelle.java @@ -0,0 +1,15 @@ +package de.ozgcloud.alfa.collaboration; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.Builder; +import lombok.Getter; + +@Builder +@Getter +class Fachstelle { + + @JsonIgnore + private String id; + +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java new file mode 100644 index 0000000000..3ac3e39ebb --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/FachstelleController.java @@ -0,0 +1,24 @@ +package de.ozgcloud.alfa.collaboration; + +import org.springframework.hateoas.CollectionModel; +import org.springframework.hateoas.EntityModel; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequestMapping(FachstelleController.PATH) +@RequiredArgsConstructor +class FachstelleController { + + static final String PATH = "/api/fachstelles"; // NOSONAR + static final String SEARCH_BY_PARAM = "searchBy"; + + @GetMapping(params = { SEARCH_BY_PARAM }) + public CollectionModel<EntityModel<Fachstelle>> search(@RequestParam String searchBy) { + return null; + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java index 8e28fca8d2..9379fab4b2 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/CollaborationVorgangProcessorTest.java @@ -124,8 +124,7 @@ class CollaborationVorgangProcessorTest { void shouldHaveThreeLinks() { var model = callProcessor(); - assertThat(model.getLinks()).hasSize(3); - + assertThat(model.getLinks()).hasSize(4); } @Test @@ -141,6 +140,19 @@ class CollaborationVorgangProcessorTest { .isEqualTo(expectedHref); } + @Test + void shouldAddSearchFachstelleLink() { + var expectedHref = UriComponentsBuilder.fromUriString(FachstelleController.PATH) + .queryParam(FachstelleController.SEARCH_BY_PARAM, "{" + FachstelleController.SEARCH_BY_PARAM + "}") + .build().toString(); + + var model = callProcessor(); + + assertThat(model.getLink(CollaborationVorgangProcessor.REL_SEARCH_FACHSTELLE)).get() + .extracting(Link::getHref) + .isEqualTo(expectedHref); + } + @Test void shouldAddCollaborationsLink() { var expectedHref = UriComponentsBuilder.fromUriString(CollaborationController.PATH) -- GitLab