From 423e75b4485a3d0d5fe9aa29d96e50597afebdd9 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Thu, 1 Aug 2024 18:44:11 +0200 Subject: [PATCH] added delete descriptor group endpoint --- .../resource/CollectionResourceIT.java | 20 +++++++++- .../client/collections/CollectionClient.java | 11 +++++- .../collections/CollectionResource.java | 39 +++++++++++++++---- 3 files changed, 59 insertions(+), 11 deletions(-) diff --git a/registry-integration-tests/src/test/java/org/gbif/registry/ws/it/collections/resource/CollectionResourceIT.java b/registry-integration-tests/src/test/java/org/gbif/registry/ws/it/collections/resource/CollectionResourceIT.java index 2f721b2ef..bf8a93f30 100644 --- a/registry-integration-tests/src/test/java/org/gbif/registry/ws/it/collections/resource/CollectionResourceIT.java +++ b/registry-integration-tests/src/test/java/org/gbif/registry/ws/it/collections/resource/CollectionResourceIT.java @@ -33,8 +33,8 @@ import org.gbif.api.model.collections.descriptors.DescriptorGroup; import org.gbif.api.model.collections.latimercore.ObjectGroup; import org.gbif.api.model.collections.request.CollectionSearchRequest; -import org.gbif.api.model.collections.request.DescriptorSearchRequest; import org.gbif.api.model.collections.request.DescriptorGroupSearchRequest; +import org.gbif.api.model.collections.request.DescriptorSearchRequest; import org.gbif.api.model.collections.suggestions.CollectionChangeSuggestion; import org.gbif.api.model.collections.suggestions.Type; import org.gbif.api.model.collections.view.CollectionView; @@ -239,7 +239,8 @@ public void createFromDatasetTest() { @SneakyThrows @Test public void createDescriptorGroupTest() { - when(descriptorsService.createDescriptorGroup(any(), any(), any(), any(), any())).thenReturn(1L); + when(descriptorsService.createDescriptorGroup(any(), any(), any(), any(), any())) + .thenReturn(1L); Resource descriptorsResource = new ClassPathResource("collections/descriptors.csv"); MultipartFile descriptorsFile = @@ -350,6 +351,21 @@ public void getDescriptorTest() { assertEquals(descriptor, getClient().getCollectionDescriptor(collectionKey, 1L, 1L)); } + @Test + public void deleteDescriptorTest() { + UUID collectionKey = UUID.randomUUID(); + + DescriptorGroup descriptorGroup = new DescriptorGroup(); + descriptorGroup.setKey(1L); + descriptorGroup.setCollectionKey(collectionKey); + descriptorGroup.setTitle("title"); + + when(resourceNotFoundService.entityExists(any(), any())).thenReturn(true); + when(descriptorsService.getDescriptorGroup(anyLong())).thenReturn(descriptorGroup); + + assertDoesNotThrow(() -> getClient().deleteCollectionDescriptorGroup(collectionKey, 1L)); + } + protected CollectionClient getClient() { return (CollectionClient) baseClient; } diff --git a/registry-ws-client/src/main/java/org/gbif/registry/ws/client/collections/CollectionClient.java b/registry-ws-client/src/main/java/org/gbif/registry/ws/client/collections/CollectionClient.java index 19d22d78e..cc5d96b6f 100644 --- a/registry-ws-client/src/main/java/org/gbif/registry/ws/client/collections/CollectionClient.java +++ b/registry-ws-client/src/main/java/org/gbif/registry/ws/client/collections/CollectionClient.java @@ -22,8 +22,8 @@ import org.gbif.api.model.collections.descriptors.DescriptorGroup; import org.gbif.api.model.collections.latimercore.ObjectGroup; import org.gbif.api.model.collections.request.CollectionSearchRequest; -import org.gbif.api.model.collections.request.DescriptorSearchRequest; import org.gbif.api.model.collections.request.DescriptorGroupSearchRequest; +import org.gbif.api.model.collections.request.DescriptorSearchRequest; import org.gbif.api.model.collections.suggestions.CollectionChangeSuggestion; import org.gbif.api.model.collections.view.CollectionView; import org.gbif.api.model.common.export.ExportFormat; @@ -131,7 +131,14 @@ DescriptorGroup getCollectionDescriptorGroup( @PathVariable("collectionKey") UUID collectionKey, @PathVariable("key") long descriptorGroupKey); - @GetMapping(value = "{collectionKey}/descriptorGroup", produces = MediaType.APPLICATION_JSON_VALUE) + @DeleteMapping(value = "{collectionKey}/descriptorGroup/{key}") + void deleteCollectionDescriptorGroup( + @PathVariable("collectionKey") UUID collectionKey, + @PathVariable("key") long descriptorGroupKey); + + @GetMapping( + value = "{collectionKey}/descriptorGroup", + produces = MediaType.APPLICATION_JSON_VALUE) PagingResponse listCollectionDescriptorGroups( @PathVariable("collectionKey") UUID collectionKey, @SpringQueryMap DescriptorGroupSearchRequest searchRequest); diff --git a/registry-ws/src/main/java/org/gbif/registry/ws/resources/collections/CollectionResource.java b/registry-ws/src/main/java/org/gbif/registry/ws/resources/collections/CollectionResource.java index 2825193ba..9f181acbf 100644 --- a/registry-ws/src/main/java/org/gbif/registry/ws/resources/collections/CollectionResource.java +++ b/registry-ws/src/main/java/org/gbif/registry/ws/resources/collections/CollectionResource.java @@ -45,12 +45,10 @@ import org.gbif.api.model.collections.SourceableField; import org.gbif.api.model.collections.descriptors.Descriptor; import org.gbif.api.model.collections.descriptors.DescriptorGroup; -import org.gbif.api.model.collections.descriptors.DescriptorGroup; import org.gbif.api.model.collections.latimercore.ObjectGroup; import org.gbif.api.model.collections.request.CollectionSearchRequest; import org.gbif.api.model.collections.request.DescriptorGroupSearchRequest; import org.gbif.api.model.collections.request.DescriptorSearchRequest; -import org.gbif.api.model.collections.request.DescriptorGroupSearchRequest; import org.gbif.api.model.collections.suggestions.CollectionChangeSuggestion; import org.gbif.api.model.collections.view.CollectionView; import org.gbif.api.model.common.export.ExportFormat; @@ -478,12 +476,15 @@ public List getSourceableFields() { name = "Order", properties = @ExtensionProperty(name = "Order", value = "0500"))) @Docs.DefaultEntityKeyParameter - @ApiResponse(responseCode = "200", description = "Collection descriptor groups found and returned") + @ApiResponse( + responseCode = "200", + description = "Collection descriptor groups found and returned") @Docs.DefaultUnsuccessfulReadResponses @GetMapping("{collectionKey}/descriptorGroup") @NullToNotFound("/grscicoll/collection/{collectionKey}/descriptorGroup") public PagingResponse listCollectionDescriptorGroups( - @PathVariable("collectionKey") UUID collectionKey, DescriptorGroupSearchRequest searchRequest) { + @PathVariable("collectionKey") UUID collectionKey, + DescriptorGroupSearchRequest searchRequest) { return descriptorsService.listDescriptorGroups(collectionKey, searchRequest); } @@ -542,7 +543,8 @@ public void updateDescriptorGroup( @RequestPart("descriptorsFile") MultipartFile descriptorsFile, @RequestParam("title") @Trim String title, @RequestParam(value = "description", required = false) @Trim String description) { - DescriptorGroup existingDescriptorGroup = descriptorsService.getDescriptorGroup(descriptorGroupKey); + DescriptorGroup existingDescriptorGroup = + descriptorsService.getDescriptorGroup(descriptorGroupKey); Preconditions.checkArgument(existingDescriptorGroup.getCollectionKey().equals(collectionKey)); descriptorsService.updateDescriptorGroup( @@ -554,7 +556,7 @@ public void updateDescriptorGroup( } @Operation( - operationId = "getCollectionDescriptor", + operationId = "getCollectionDescriptorGroup", summary = "Get details of a single collection descriptor", description = "Details of a single collection descriptor", extensions = @@ -569,11 +571,34 @@ public void updateDescriptorGroup( public DescriptorGroup getCollectionDescriptorGroup( @PathVariable("collectionKey") UUID collectionKey, @PathVariable("key") long descriptorGroupKey) { - DescriptorGroup existingDescriptorGroup = descriptorsService.getDescriptorGroup(descriptorGroupKey); + DescriptorGroup existingDescriptorGroup = + descriptorsService.getDescriptorGroup(descriptorGroupKey); Preconditions.checkArgument(existingDescriptorGroup.getCollectionKey().equals(collectionKey)); return existingDescriptorGroup; } + @Operation( + operationId = "deleteCollectionDescriptorGroup", + summary = "Get details of a single collection descriptor group", + description = "Details of a single collection descriptor group", + extensions = + @Extension( + name = "Order", + properties = @ExtensionProperty(name = "Order", value = "0510"))) + @Docs.DefaultEntityKeyParameter + @ApiResponse(responseCode = "204", description = "Descriptor group marked as deleted") + @Docs.DefaultUnsuccessfulReadResponses + @Docs.DefaultUnsuccessfulWriteResponses + @DeleteMapping("{collectionKey}/descriptorGroup/{key}") + public void deleteCollectionDescriptorGroup( + @PathVariable("collectionKey") UUID collectionKey, + @PathVariable("key") long descriptorGroupKey) { + DescriptorGroup existingDescriptorGroup = + descriptorsService.getDescriptorGroup(descriptorGroupKey); + Preconditions.checkArgument(existingDescriptorGroup.getCollectionKey().equals(collectionKey)); + descriptorsService.deleteDescriptorGroup(descriptorGroupKey); + } + @Operation( operationId = "getCollectionDescriptors", summary = "Lists the descriptors.",