/** * Create an instance of {@link ExternalIdentifiers } * */ public ExternalIdentifiers createExternalIdentifiers() { return new ExternalIdentifiers(); }
private ExternalIdentifiers getExternalIdentifiers(ProfileEntity profileEntity) { Set<ExternalIdentifierEntity> externalIdentifierEntities = profileEntity.getExternalIdentifiers(); ExternalIdentifiers externalIdentifiers = new ExternalIdentifiers(); Visibility mostRestrictive = Visibility.PUBLIC; if (externalIdentifierEntities != null) { for (ExternalIdentifierEntity externalIdentifierEntity : externalIdentifierEntities) { //will only be null if there's an issue with the data or you're using this layer directly Visibility vis = (externalIdentifierEntity.getVisibility() != null)?Visibility.valueOf(externalIdentifierEntity.getVisibility()):Visibility.PRIVATE; if (vis.isMoreRestrictiveThan(mostRestrictive)) mostRestrictive = vis; ExternalIdentifier externalIdentifier = new ExternalIdentifier(vis); externalIdentifier.setSource(getSource(externalIdentifierEntity)); externalIdentifier.setExternalIdReference(StringUtils.isNotBlank(externalIdentifierEntity.getExternalIdReference()) ? new ExternalIdReference( externalIdentifierEntity.getExternalIdReference()) : null); externalIdentifier.setExternalIdCommonName(StringUtils.isNotBlank(externalIdentifierEntity.getExternalIdCommonName()) ? new ExternalIdCommonName( externalIdentifierEntity.getExternalIdCommonName()) : null); externalIdentifier.setExternalIdUrl(StringUtils.isNotBlank(externalIdentifierEntity.getExternalIdUrl()) ? new ExternalIdUrl(externalIdentifierEntity .getExternalIdUrl()) : null); externalIdentifiers.getExternalIdentifier().add(externalIdentifier); } } externalIdentifiers.setVisibility(mostRestrictive); return externalIdentifiers; }
/** * 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; } }