diff --git a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/BaseChangeSuggestionService.java b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/BaseChangeSuggestionService.java index d3dd695b6..6f71687c2 100644 --- a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/BaseChangeSuggestionService.java +++ b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/BaseChangeSuggestionService.java @@ -29,12 +29,15 @@ import org.gbif.api.model.common.paging.PagingResponse; 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.MachineTaggable; import org.gbif.api.model.registry.Taggable; import org.gbif.api.service.collections.ChangeSuggestionService; +import org.gbif.api.service.collections.CollectionService; import org.gbif.api.service.collections.ContactService; import org.gbif.api.service.collections.CrudService; import org.gbif.api.vocabulary.Country; +import org.gbif.api.vocabulary.IdentifierType; import org.gbif.api.vocabulary.UserRole; import org.gbif.registry.events.EventManager; import org.gbif.registry.events.collections.EventType; @@ -113,6 +116,7 @@ public abstract class BaseChangeSuggestionService< private final GrSciCollAuthorizationService grSciCollAuthorizationService; private final CollectionsMailConfigurationProperties collectionsMailConfigurationProperties; private CollectionEntityType collectionEntityType; + private final CollectionService collectionService; protected BaseChangeSuggestionService( ChangeSuggestionMapper changeSuggestionMapper, @@ -126,7 +130,8 @@ protected BaseChangeSuggestionService( CollectionsEmailManager emailManager, EventManager eventManager, GrSciCollAuthorizationService grSciCollAuthorizationService, - CollectionsMailConfigurationProperties collectionsMailConfigurationProperties) { + CollectionsMailConfigurationProperties collectionsMailConfigurationProperties, + CollectionService collectionService) { this.changeSuggestionMapper = changeSuggestionMapper; this.mergeService = mergeService; this.crudService = crudService; @@ -139,6 +144,7 @@ protected BaseChangeSuggestionService( this.eventManager = eventManager; this.grSciCollAuthorizationService = grSciCollAuthorizationService; this.collectionsMailConfigurationProperties = collectionsMailConfigurationProperties; + this.collectionService = collectionService; if (clazz == Institution.class) { collectionEntityType = CollectionEntityType.INSTITUTION; @@ -437,6 +443,10 @@ public UUID applyChangeSuggestion(int suggestionKey) { } } + if (dto.getProposedBy().equals("ih-sync")){ + collectionService.addIdentifier(createdEntity,new Identifier(IdentifierType.IH_IRN, + dto.getIhIdentifier())); + } return createdEntity; } diff --git a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/CollectionChangeSuggestionService.java b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/CollectionChangeSuggestionService.java index 77ec0908a..ce48f600d 100644 --- a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/CollectionChangeSuggestionService.java +++ b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/CollectionChangeSuggestionService.java @@ -18,8 +18,10 @@ import org.gbif.api.model.collections.Institution; import org.gbif.api.model.collections.suggestions.CollectionChangeSuggestion; import org.gbif.api.model.collections.suggestions.Type; +import org.gbif.api.model.registry.Identifier; import org.gbif.api.service.collections.CollectionService; import org.gbif.api.service.collections.InstitutionService; +import org.gbif.api.vocabulary.IdentifierType; import org.gbif.registry.events.EventManager; import org.gbif.registry.mail.EmailSender; import org.gbif.registry.mail.collections.CollectionsEmailManager; @@ -74,7 +76,8 @@ public CollectionChangeSuggestionService( emailManager, eventManager, grSciCollAuthorizationService, - collectionsMailConfigurationProperties); + collectionsMailConfigurationProperties, + collectionService); this.changeSuggestionMapper = changeSuggestionMapper; this.institutionService = institutionService; } @@ -95,7 +98,9 @@ public UUID applyChangeSuggestion(int suggestionKey){ UUID createdInstitution = createInstitutionForCollectionSuggestion(dto); Collection suggestedCollection = readJson(dto.getSuggestedEntity(), Collection.class); suggestedCollection.setInstitutionKey(createdInstitution); + suggestedCollection.getIdentifiers().add(new Identifier(IdentifierType.IH_IRN, suggestedCollection.getIdentifiers().get(0).getIdentifier())); dto.setSuggestedEntity(toJson(suggestedCollection)); + changeSuggestionMapper.update(dto); } } @@ -135,10 +140,12 @@ public UUID createInstitutionForCollectionSuggestion(ChangeSuggestionDto dto){ CollectionChangeSuggestion changeSuggestion = dtoToChangeSuggestion(dto); UUID createdEntity = null; if (dto.getType() == Type.CREATE) { - - if (dto.getCreateInstitution()) { + if (Boolean.TRUE.equals(dto.getCreateInstitution())) { Institution institution = collectionChangeSuggestionToInstitution(dto); + createdEntity = institutionService.create(institution); + institutionService.addIdentifier(createdEntity,new Identifier(IdentifierType.IH_IRN, + dto.getIhIdentifier())); createContacts(changeSuggestion,createdEntity); } } @@ -150,10 +157,14 @@ private Institution collectionChangeSuggestionToInstitution(ChangeSuggestionDto if (dto.getSuggestedEntity() != null) { Collection collection = readJson(dto.getSuggestedEntity(), Collection.class); - institution.setName(collection.getName()); + + String name = collection.getName(); + if(name.startsWith("Herbarium - ")) { + name = name.substring("Herbarium - ".length()); + } + institution.setName(name); institution.setCode(collection.getCode()); institution.setActive(collection.isActive()); - institution.setAddress(collection.getAddress()); institution.setEmail(collection.getEmail()); institution.setPhone(collection.getPhone()); diff --git a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/InstitutionChangeSuggestionService.java b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/InstitutionChangeSuggestionService.java index 3539a1ead..3cc88694a 100644 --- a/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/InstitutionChangeSuggestionService.java +++ b/registry-service/src/main/java/org/gbif/registry/service/collections/suggestions/InstitutionChangeSuggestionService.java @@ -16,6 +16,7 @@ import org.gbif.api.model.collections.CollectionEntityType; import org.gbif.api.model.collections.Institution; import org.gbif.api.model.collections.suggestions.InstitutionChangeSuggestion; +import org.gbif.api.service.collections.CollectionService; import org.gbif.api.service.collections.InstitutionService; import org.gbif.registry.events.EventManager; import org.gbif.registry.mail.EmailSender; @@ -67,7 +68,8 @@ public InstitutionChangeSuggestionService( CollectionsEmailManager emailManager, EventManager eventManager, GrSciCollAuthorizationService grSciCollAuthorizationService, - CollectionsMailConfigurationProperties collectionsMailConfigurationProperties) { + CollectionsMailConfigurationProperties collectionsMailConfigurationProperties, + CollectionService collectionService) { super( changeSuggestionMapper, institutionMergeService, @@ -80,7 +82,8 @@ public InstitutionChangeSuggestionService( emailManager, eventManager, grSciCollAuthorizationService, - collectionsMailConfigurationProperties); + collectionsMailConfigurationProperties, + collectionService); this.changeSuggestionMapper = changeSuggestionMapper; this.institutionMergeService = institutionMergeService; this.institutionService = institutionService;