@Override public void copyUpdatedExternalIdentifiersToExistingPreservingVisibility(OrcidBio existing, OrcidBio updated) { if (updated.getExternalIdentifiers() == null) { return; } ExternalIdentifiers existingExternalIdentifiers = existing.getExternalIdentifiers(); ExternalIdentifiers updatedExternalIdentifiers = updated.getExternalIdentifiers(); Visibility existingExternalIdentifiersVisibility = existingExternalIdentifiers != null ? existingExternalIdentifiers.getVisibility() : null; Visibility updatedExternalIdentifiersVisibility = updatedExternalIdentifiers.getVisibility(); if (updatedExternalIdentifiersVisibility == null && existingExternalIdentifiersVisibility == null) { updatedExternalIdentifiers.setVisibility(OrcidVisibilityDefaults.EXTERNAL_IDENTIFIER_DEFAULT.getVisibility()); } else if (updatedExternalIdentifiersVisibility == null && existingExternalIdentifiersVisibility != null) { updatedExternalIdentifiers.setVisibility(existingExternalIdentifiersVisibility); } existing.setExternalIdentifiers(updatedExternalIdentifiers); }
private OrcidBio getOrcidBio(ProfileEntity profileEntity) { OrcidBio orcidBio = new OrcidBio(); orcidBio.setContactDetails(getContactDetails(profileEntity)); orcidBio.setExternalIdentifiers(getExternalIdentifiers(profileEntity)); orcidBio.setDelegation(getDelegation(profileEntity)); orcidBio.setPersonalDetails(getPersonalDetails(profileEntity)); orcidBio.setKeywords(getKeywords(profileEntity)); orcidBio.setBiography(getBiography(profileEntity)); orcidBio.setResearcherUrls(getResearcherUrls(profileEntity)); return orcidBio; }
/** * Add new external identifiers to an existing profile * * @param updatedOrcidProfile * @return */ @Override public OrcidProfile addExternalIdentifiers(OrcidProfile updatedOrcidProfile) { OrcidProfile existingProfile = retrieveOrcidProfile(updatedOrcidProfile.getOrcidIdentifier().getPath(), LoadOptions.ALL_WITH_NEW_AFFILIATION_TYPES); if (existingProfile != null && existingProfile.getOrcidBio() != null) { OrcidBio orcidBio = existingProfile.getOrcidBio(); ExternalIdentifiers externalIdentifiers = orcidBio.getExternalIdentifiers(); if (externalIdentifiers == null) { orcidBio.setExternalIdentifiers(new ExternalIdentifiers()); } ExternalIdentifiers externalIdentifier = updatedOrcidProfile.getOrcidBio().getExternalIdentifiers(); List<ExternalIdentifier> updatedExternalIdentifiers = externalIdentifier.getExternalIdentifier(); List<ExternalIdentifier> existingExternalIdentifiers = orcidBio.getExternalIdentifiers().getExternalIdentifier(); // Copy all the existing external identifiers to the updated profile for (ExternalIdentifier ei : existingExternalIdentifiers) { updatedExternalIdentifiers.add(ei); } orcidJaxbCopyManager.copyUpdatedExternalIdentifiersToExistingPreservingVisibility(orcidBio, updatedOrcidProfile.getOrcidBio()); OrcidProfile profileToReturn = updateOrcidProfile(existingProfile); notificationManager.sendAmendEmail(updatedOrcidProfile.getOrcidIdentifier().getPath(), AmendedSection.EXTERNAL_IDENTIFIERS, null); return profileToReturn; } else { return null; } }