From 850a0300c9bf6c30a34d182146bd78c7d2d21eb2 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Wed, 26 May 2021 13:49:00 +0200 Subject: [PATCH] checks before deleting subentities --- .../service/collections/BaseCollectionEntityService.java | 9 +++++++++ .../collections/BasePrimaryCollectionEntityService.java | 5 ++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/registry-service/src/main/java/org/gbif/registry/service/collections/BaseCollectionEntityService.java b/registry-service/src/main/java/org/gbif/registry/service/collections/BaseCollectionEntityService.java index 52c75f7c40..bb23813e03 100644 --- a/registry-service/src/main/java/org/gbif/registry/service/collections/BaseCollectionEntityService.java +++ b/registry-service/src/main/java/org/gbif/registry/service/collections/BaseCollectionEntityService.java @@ -119,6 +119,8 @@ public int addIdentifier(UUID entityKey, Identifier identifier) { @Override public void deleteIdentifier(UUID entityKey, int identifierKey) { Identifier identifierToDelete = identifierMapper.get(identifierKey); + checkArgument(identifierToDelete != null, "Identifier to delete doesn't exist"); + baseMapper.deleteIdentifier(entityKey, identifierKey); eventManager.post( @@ -156,6 +158,8 @@ public int addTag(UUID key, String value) { @Override public void deleteTag(UUID entityKey, int tagKey) { Tag tagToDelete = tagMapper.get(tagKey); + checkArgument(tagToDelete != null, "Tag to delete doesn't exist"); + baseMapper.deleteTag(entityKey, tagKey); eventManager.post( SubEntityCollectionEvent.newInstance( @@ -222,6 +226,8 @@ public int addMachineTag(UUID targetEntityKey, TagName tagName, String value) { @Override public void deleteMachineTag(UUID targetEntityKey, int machineTagKey) { MachineTag machineTagToDelete = machineTagMapper.get(machineTagKey); + checkArgument(machineTagToDelete != null, "Machine Tag to delete doesn't exist"); + baseMapper.deleteMachineTag(targetEntityKey, machineTagKey); eventManager.post( SubEntityCollectionEvent.newInstance( @@ -270,6 +276,7 @@ public void deleteMachineTags(UUID targetEntityKey, String namespace, String nam .collect(Collectors.toList()); baseMapper.deleteMachineTags(targetEntityKey, namespace, name); + machineTagsToDelete.forEach( mt -> eventManager.post( @@ -316,6 +323,8 @@ public int addComment(UUID targetEntityKey, Comment comment) { @Override public void deleteComment(UUID targetEntityKey, int commentKey) { Comment commentToDelete = commentMapper.get(commentKey); + checkArgument(commentToDelete != null, "Comment to delete doesn't exist"); + baseMapper.deleteComment(targetEntityKey, commentKey); eventManager.post( SubEntityCollectionEvent.newInstance( diff --git a/registry-service/src/main/java/org/gbif/registry/service/collections/BasePrimaryCollectionEntityService.java b/registry-service/src/main/java/org/gbif/registry/service/collections/BasePrimaryCollectionEntityService.java index fbaff84738..f4d79791ee 100644 --- a/registry-service/src/main/java/org/gbif/registry/service/collections/BasePrimaryCollectionEntityService.java +++ b/registry-service/src/main/java/org/gbif/registry/service/collections/BasePrimaryCollectionEntityService.java @@ -9,12 +9,9 @@ import org.gbif.api.model.collections.PrimaryCollectionEntity; import org.gbif.api.model.registry.Commentable; import org.gbif.api.model.registry.Identifiable; -import org.gbif.api.model.registry.Identifier; -import org.gbif.api.model.registry.MachineTag; import org.gbif.api.model.registry.MachineTaggable; import org.gbif.api.model.registry.PostPersist; import org.gbif.api.model.registry.PrePersist; -import org.gbif.api.model.registry.Tag; import org.gbif.api.model.registry.Taggable; import org.gbif.api.service.collections.PrimaryCollectionEntityService; import org.gbif.registry.events.EventManager; @@ -234,6 +231,8 @@ public List listOccurrenceMappings(@NotNull UUID uuid) { @Override public void deleteOccurrenceMapping(UUID entityKey, int occurrenceMappingKey) { OccurrenceMapping occurrenceMappingToDelete = occurrenceMappingMapper.get(occurrenceMappingKey); + checkArgument(occurrenceMappingToDelete != null, "Occurrence Mapping to delete doesn't exist"); + primaryEntityMapper.deleteOccurrenceMapping(entityKey, occurrenceMappingKey); eventManager.post( SubEntityCollectionEvent.newInstance(