@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 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; }
ids.setVisibility(getMostFromCollection(ids.getExternalIdentifier()));