/**
* =============================================================================
*
* ORCID (R) Open Source
* http://orcid.org
*
* Copyright (c) 2012-2014 ORCID, Inc.
* Licensed under an MIT-Style License (MIT)
* http://orcid.org/open-source-license
*
* This copyright and license information (including a link to the full license)
* shall be included in its entirety in all copies or substantial portion of
* the software.
*
* =============================================================================
*/
package org.orcid.core.adapter.v2.latest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.orcid.core.adapter.JpaJaxbEntityAdapter;
import org.orcid.jaxb.model.message.Address;
import org.orcid.jaxb.model.message.Affiliation;
import org.orcid.jaxb.model.message.Citation;
import org.orcid.jaxb.model.message.CitationType;
import org.orcid.jaxb.model.message.ContactDetails;
import org.orcid.jaxb.model.message.Contributor;
import org.orcid.jaxb.model.message.CreditName;
import org.orcid.jaxb.model.message.Delegation;
import org.orcid.jaxb.model.message.DelegationDetails;
import org.orcid.jaxb.model.message.DisambiguatedOrganization;
import org.orcid.jaxb.model.message.Email;
import org.orcid.jaxb.model.message.ExternalIdentifier;
import org.orcid.jaxb.model.message.ExternalIdentifiers;
import org.orcid.jaxb.model.message.FamilyName;
import org.orcid.jaxb.model.message.Funding;
import org.orcid.jaxb.model.message.FundingList;
import org.orcid.jaxb.model.message.GivenNames;
import org.orcid.jaxb.model.message.Iso3166Country;
import org.orcid.jaxb.model.message.Keywords;
import org.orcid.jaxb.model.message.OrcidBio;
import org.orcid.jaxb.model.message.OrcidHistory;
import org.orcid.jaxb.model.message.OrcidInternal;
import org.orcid.jaxb.model.message.OrcidMessage;
import org.orcid.jaxb.model.message.OrcidProfile;
import org.orcid.jaxb.model.message.OrcidWork;
import org.orcid.jaxb.model.message.OrcidWorks;
import org.orcid.jaxb.model.message.OrganizationAddress;
import org.orcid.jaxb.model.message.OtherNames;
import org.orcid.jaxb.model.message.PersonalDetails;
import org.orcid.jaxb.model.message.Preferences;
import org.orcid.jaxb.model.message.ResearcherUrl;
import org.orcid.jaxb.model.message.ResearcherUrls;
import org.orcid.jaxb.model.message.SecurityDetails;
import org.orcid.jaxb.model.message.Source;
import org.orcid.jaxb.model.message.Url;
import org.orcid.jaxb.model.message.Visibility;
import org.orcid.jaxb.model.message.WorkContributors;
import org.orcid.jaxb.model.message.WorkType;
import org.orcid.persistence.dao.GenericDao;
import org.orcid.persistence.jpa.entities.ProfileEntity;
import org.orcid.test.DBUnitTest;
import org.orcid.test.OrcidJUnit4ClassRunner;
import org.orcid.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.xml.sax.SAXException;
/**
* orcid-persistence - Dec 7, 2011 - JpaJaxbEntityAdapterTest
*
* @author Declan Newman (declan)
*/
@RunWith(OrcidJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:orcid-core-context.xml" })
public class JpaJaxbEntityAdapterToOrcidProfileTest extends DBUnitTest {
private static final List<String> DATA_FILES = Arrays.asList("/data/SecurityQuestionEntityData.xml", "/data/SourceClientDetailsEntityData.xml",
"/data/ProfileEntityData.xml", "/data/RecordNameEntityData.xml", "/data/BiographyEntityData.xml", "/data/WorksEntityData.xml", "/data/ClientDetailsEntityData.xml",
"/data/Oauth2TokenDetailsData.xml", "/data/OrgsEntityData.xml", "/data/ProfileFundingEntityData.xml",
"/data/OrgAffiliationEntityData.xml");
@Autowired
private GenericDao<ProfileEntity, String> profileDao;
@Autowired
private JpaJaxbEntityAdapter adapter;
@BeforeClass
public static void initDBUnitData() throws Exception {
initDBUnitData(DATA_FILES);
}
@AfterClass
public static void removeDBUnitData() throws Exception {
List<String> reversedDataFiles = new ArrayList<String>(DATA_FILES);
Collections.reverse(reversedDataFiles);
removeDBUnitData(reversedDataFiles);
}
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void testToOrcidProfile() throws SAXException, IOException {
ProfileEntity profileEntity = profileDao.find("4444-4444-4444-4443");
long start = System.currentTimeMillis();
OrcidProfile orcidProfile = adapter.toOrcidProfile(profileEntity);
System.out.println("Took: " + Long.toString(System.currentTimeMillis() - start));
System.out.println(orcidProfile);
checkOrcidProfile(orcidProfile);
validateAgainstSchema(new OrcidMessage(orcidProfile));
}
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void testToOrcidProfileWithNewWayOfDoingEmails() throws SAXException, IOException {
ProfileEntity profileEntity = profileDao.find("4444-4444-4444-4445");
long start = System.currentTimeMillis();
OrcidProfile orcidProfile = adapter.toOrcidProfile(profileEntity);
System.out.println("Took: " + Long.toString(System.currentTimeMillis() - start));
ContactDetails contactDetails = orcidProfile.getOrcidBio().getContactDetails();
Email primaryEmail = contactDetails.retrievePrimaryEmail();
assertNotNull(primaryEmail);
assertTrue(primaryEmail.isPrimary());
assertTrue(primaryEmail.isCurrent());
assertFalse(primaryEmail.isVerified());
assertEquals(Visibility.PRIVATE, primaryEmail.getVisibility());
assertEquals("andrew@timothy.com", primaryEmail.getValue());
assertEquals("4444-4444-4444-4441", primaryEmail.getSource());
Email nonPrimaryEmail = contactDetails.getEmailByString("andrew2@timothy.com");
assertNotNull(nonPrimaryEmail);
assertFalse(nonPrimaryEmail.isPrimary());
assertFalse(nonPrimaryEmail.isCurrent());
assertFalse(nonPrimaryEmail.isVerified());
assertEquals(Visibility.PRIVATE, nonPrimaryEmail.getVisibility());
assertEquals("andrew2@timothy.com", nonPrimaryEmail.getValue());
assertEquals("4444-4444-4444-4441", nonPrimaryEmail.getSource());
assertEquals(2, contactDetails.getEmail().size());
validateAgainstSchema(new OrcidMessage(orcidProfile));
}
@Test
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void testToOrcidProfileWithNewWayOfDoingWorkContributors() {
ProfileEntity profileEntity = profileDao.find("4444-4444-4444-4445");
long start = System.currentTimeMillis();
OrcidProfile orcidProfile = adapter.toOrcidProfile(profileEntity);
System.out.println("Took: " + Long.toString(System.currentTimeMillis() - start));
List<OrcidWork> worksList = orcidProfile.getOrcidActivities().getOrcidWorks().getOrcidWork();
assertEquals(1, worksList.size());
OrcidWork orcidWork = worksList.get(0);
WorkContributors contributors = orcidWork.getWorkContributors();
assertNotNull(contributors);
List<Contributor> contributorList = contributors.getContributor();
assertEquals(1, contributorList.size());
Contributor contributor = contributorList.get(0);
assertEquals("Jason Contributor", contributor.getCreditName().getContent());
}
public void testToOrcidProfileWithDeprecationMessage() throws SAXException, IOException {
ProfileEntity profileEntity = profileDao.find("4444-4444-4444-444X");
long start = System.currentTimeMillis();
OrcidProfile orcidProfile = adapter.toOrcidProfile(profileEntity);
System.out.println("Took: " + Long.toString(System.currentTimeMillis() - start));
assertNotNull(orcidProfile.getOrcidDeprecated());
assertNotNull(orcidProfile.getOrcidDeprecated().getDate());
assertNotNull(orcidProfile.getOrcidDeprecated().getPrimaryRecord());
assertNotNull(orcidProfile.getOrcidDeprecated().getPrimaryRecord().getOrcid());
assertNotNull(orcidProfile.getOrcidDeprecated().getPrimaryRecord().getOrcidId());
assertEquals("4444-4444-4444-4441", orcidProfile.getOrcidDeprecated().getPrimaryRecord().getOrcidIdentifier().getPath());
assertTrue(orcidProfile.getOrcidDeprecated().getPrimaryRecord().getOrcidId().getValue().endsWith("/4444-4444-4444-4441"));
validateAgainstSchema(new OrcidMessage(orcidProfile));
}
private void checkOrcidProfile(OrcidProfile orcidProfile) {
assertNotNull(orcidProfile);
assertNotNull(orcidProfile.getOrcidBio());
checkOrcidProfile(orcidProfile.getOrcidBio());
assertNotNull(orcidProfile.getOrcidHistory());
checkOrcidHistory(orcidProfile.getOrcidHistory());
checkAffiliations(orcidProfile.getOrcidActivities().getAffiliations().getAffiliation());
assertNotNull(orcidProfile.retrieveOrcidWorks());
checkOrcidWorks(orcidProfile.retrieveOrcidWorks());
checkOrcidFundings(orcidProfile.retrieveFundings());
assertEquals("4444-4444-4444-4443", orcidProfile.getOrcidIdentifier().getPath());
assertNotNull(orcidProfile.getOrcidInternal());
checkOrcidInternal(orcidProfile.getOrcidInternal());
}
private void checkOrcidWorks(OrcidWorks orcidWorks) {
assertNotNull(orcidWorks);
List<OrcidWork> orcidWorkList = orcidWorks.getOrcidWork();
assertEquals(3, orcidWorkList.size());
boolean putCode1Found = false;
boolean putCode4Found = false;
for (OrcidWork orcidWork : orcidWorkList) {
if (orcidWork.getPutCode().equals("1")) {
putCode1Found = true;
assertEquals("1", orcidWork.getPutCode());
Citation workCitation = orcidWork.getWorkCitation();
assertNotNull(workCitation);
assertEquals("Bobby Ewing, ", workCitation.getCitation());
assertEquals(CitationType.FORMATTED_IEEE, workCitation.getWorkCitationType());
WorkContributors contributors = orcidWork.getWorkContributors();
assertNotNull(contributors);
assertEquals(2, contributors.getContributor().size());
assertEquals("Jaylen Kessler", contributors.getContributor().get(0).getCreditName().getContent());
assertEquals(Visibility.PUBLIC, contributors.getContributor().get(0).getCreditName().getVisibility());
assertEquals(Visibility.PUBLIC, orcidWork.getVisibility());
assertNull(orcidWork.getJournalTitle());
} else if (orcidWork.getPutCode().equals("3")) {
WorkContributors contributors = orcidWork.getWorkContributors();
assertNotNull(contributors);
assertEquals(1, contributors.getContributor().size());
assertEquals("0000-0003-0172-7925", contributors.getContributor().get(0).getContributorOrcid().getPath());
} else if (orcidWork.getPutCode().equals("4")) {
putCode4Found = true;
assertNotNull(orcidWork.getWorkTitle());
assertNotNull(orcidWork.getWorkTitle().getTitle());
assertEquals("A book with a Journal Title", orcidWork.getWorkTitle().getTitle().getContent());
assertNotNull(orcidWork.getJournalTitle());
assertEquals("My Journal Title", orcidWork.getJournalTitle().getContent());
assertNotNull(orcidWork.getPublicationDate());
assertNotNull(orcidWork.getPublicationDate().getDay());
assertNotNull(orcidWork.getPublicationDate().getMonth());
assertNotNull(orcidWork.getPublicationDate().getYear());
assertEquals("01", orcidWork.getPublicationDate().getDay().getValue());
assertEquals("02", orcidWork.getPublicationDate().getMonth().getValue());
assertEquals("2011", orcidWork.getPublicationDate().getYear().getValue());
assertNotNull(orcidWork.getWorkCitation());
assertEquals("Sue Ellen ewing", orcidWork.getWorkCitation().getCitation());
assertEquals(CitationType.FORMATTED_IEEE, orcidWork.getWorkCitation().getWorkCitationType());
assertNotNull(orcidWork.getWorkType());
assertEquals(WorkType.BOOK, orcidWork.getWorkType());
}
}
assertTrue(putCode1Found);
assertTrue(putCode4Found);
}
private void checkOrcidFundings(FundingList orcidFunding) {
assertNotNull(orcidFunding);
List<Funding> orcidFundingList = orcidFunding.getFundings();
assertEquals(3, orcidFundingList.size());
}
private void checkOrcidHistory(OrcidHistory orcidHistory) {
assertNotNull(orcidHistory);
Source sponsor = orcidHistory.getSource();
assertNotNull(sponsor);
assertEquals("Credit Name", sponsor.getSourceName().getContent());
assertEquals("4444-4444-4444-4441", sponsor.retrieveSourcePath());
assertEquals(DateUtils.convertToDate("2011-07-02T15:31:00"), orcidHistory.getLastModifiedDate().getValue().toGregorianCalendar().getTime());
assertEquals(DateUtils.convertToDate("2011-06-29T15:31:00"), orcidHistory.getSubmissionDate().getValue().toGregorianCalendar().getTime());
assertEquals(DateUtils.convertToDate("2011-07-02T15:31:00"), orcidHistory.getCompletionDate().getValue().toGregorianCalendar().getTime());
}
private void checkOrcidProfile(OrcidBio orcidBio) {
checkPersonalDetails(orcidBio.getPersonalDetails());
assertNotNull(orcidBio.getContactDetails());
checkContactDetails(orcidBio.getContactDetails());
assertNotNull(orcidBio.getExternalIdentifiers());
checkExternalIdentifiers(orcidBio.getExternalIdentifiers());
assertNotNull(orcidBio.getDelegation());
checkDelegation(orcidBio.getDelegation());
assertNull(orcidBio.getScope());
// Applications are not linked with OrcidProfile object anymore.
// assertNotNull(orcidBio.getApplications());
// checkApplications(orcidBio.getApplications());
ResearcherUrls researcherUrls = orcidBio.getResearcherUrls();
List<ResearcherUrl> urls = researcherUrls.getResearcherUrl();
Collections.sort(urls);
assertEquals(6, urls.size());
Url url1 = urls.get(0).getUrl();
String url1Name = urls.get(0).getUrlName().getContent();
assertEquals(url1Name, "443_1");
assertEquals("http://www.researcherurl2.com?id=1", url1.getValue());
Url url2 = urls.get(1).getUrl();
String url2Name = urls.get(1).getUrlName().getContent();
assertEquals(url2Name, "443_2");
assertEquals("http://www.researcherurl2.com?id=2", url2.getValue());
Url url3 = urls.get(2).getUrl();
String url3Name = urls.get(2).getUrlName().getContent();
assertEquals(url3Name, "443_3");
assertEquals("http://www.researcherurl2.com?id=5", url3.getValue());
Url url4 = urls.get(3).getUrl();
String url4Name = urls.get(3).getUrlName().getContent();
assertEquals(url4Name, "443_4");
assertEquals("http://www.researcherurl2.com?id=6", url4.getValue());
Url url5 = urls.get(4).getUrl();
String url5Name = urls.get(4).getUrlName().getContent();
assertEquals(url5Name, "443_5");
assertEquals("http://www.researcherurl2.com?id=7", url5.getValue());
Url url6 = urls.get(5).getUrl();
String url6Name = urls.get(5).getUrlName().getContent();
assertEquals(url6Name, "443_6");
assertEquals("http://www.researcherurl2.com?id=8", url6.getValue());
checkKeywords(orcidBio.getKeywords());
}
private void checkKeywords(Keywords keywords) {
assertNotNull(keywords);
assertEquals(Visibility.PRIVATE, keywords.getVisibility());
assertNotNull(keywords.getKeyword());
assertEquals(4, keywords.getKeyword().size());
//They are alpha ordered
assertEquals("chocolat making", keywords.getKeyword().get(0).getContent());
assertEquals(Visibility.PRIVATE, keywords.getKeyword().get(0).getVisibility());
assertEquals("coffee making", keywords.getKeyword().get(1).getContent());
assertEquals(Visibility.LIMITED, keywords.getKeyword().get(1).getVisibility());
assertEquals("tea making", keywords.getKeyword().get(2).getContent());
assertEquals(Visibility.PUBLIC, keywords.getKeyword().get(2).getVisibility());
assertEquals("what else can we make?", keywords.getKeyword().get(3).getContent());
assertEquals(Visibility.PRIVATE, keywords.getKeyword().get(3).getVisibility());
}
private void checkPersonalDetails(PersonalDetails personalDetails) {
assertNotNull(personalDetails);
FamilyName familyName = personalDetails.getFamilyName();
assertNotNull(familyName);
assertEquals("Sellers", familyName.getContent());
GivenNames givenNames = personalDetails.getGivenNames();
assertNotNull(givenNames);
assertEquals("Peter", givenNames.getContent());
CreditName creditName = personalDetails.getCreditName();
assertNotNull(creditName);
assertEquals("P. Sellers III", creditName.getContent());
assertEquals("LIMITED", creditName.getVisibility().name());
OtherNames otherNames = personalDetails.getOtherNames();
assertNotNull(otherNames);
List<String> otherNameList = otherNames.getOtherNamesAsStrings();
Collections.sort(otherNameList);
assertEquals(2, otherNameList.size());
assertEquals("Flibberdy Flabinah", otherNameList.get(0));
assertEquals("Slibberdy Slabinah", otherNameList.get(1));
}
private void checkAffiliations(List<Affiliation> affiliations) {
assertNotNull(affiliations);
assertEquals(3, affiliations.size());
Affiliation affiliation = affiliations.get(2);
assertEquals(Visibility.LIMITED, affiliation.getVisibility());
assertEquals("An institution", affiliation.getOrganization().getName());
assertEquals("A Department", affiliation.getDepartmentName());
assertEquals("2010-07-02", affiliation.getStartDate().toString());
assertEquals("2011-07-02", affiliation.getEndDate().toString());
assertEquals("Primary Researcher", affiliation.getRoleTitle());
DisambiguatedOrganization disambiguatedAffiliation = affiliation.getOrganization().getDisambiguatedOrganization();
assertNotNull(disambiguatedAffiliation);
assertEquals("abc456", disambiguatedAffiliation.getDisambiguatedOrganizationIdentifier());
assertEquals("WDB", disambiguatedAffiliation.getDisambiguationSource());
checkAddress(affiliation.getOrganization().getAddress());
}
private void checkExternalIdentifiers(ExternalIdentifiers externalIdentifiers) {
assertNotNull(externalIdentifiers);
assertEquals(Visibility.PUBLIC, externalIdentifiers.getVisibility());
assertEquals(1, externalIdentifiers.getExternalIdentifier().size());
ExternalIdentifier externalIdentifier = externalIdentifiers.getExternalIdentifier().get(0);
assertEquals("4444-4444-4444-4441", externalIdentifier.getSource().retrieveSourcePath());
assertEquals("d3clan", externalIdentifier.getExternalIdReference().getContent());
assertEquals("Facebook", externalIdentifier.getExternalIdCommonName().getContent());
assertNotNull(externalIdentifier.getVisibility());
assertNotNull("PUBLIC", externalIdentifier.getVisibility().value());
}
private void checkDelegation(Delegation delegation) {
assertNotNull(delegation);
assertEquals(1, delegation.getGivenPermissionTo().getDelegationDetails().size());
DelegationDetails givenPermssionToDetails = delegation.getGivenPermissionTo().getDelegationDetails().iterator().next();
assertEquals("4444-4444-4444-4446", givenPermssionToDetails.getDelegateSummary().getOrcidIdentifier().getPath());
assertTrue(givenPermssionToDetails.getApprovalDate().getValue().toXMLFormat().startsWith("2011-10-17T16:59:32.000"));
assertEquals(1, delegation.getGivenPermissionBy().getDelegationDetails().size());
DelegationDetails givenPermissionByDetails = delegation.getGivenPermissionBy().getDelegationDetails().iterator().next();
assertEquals("4444-4444-4444-4441", givenPermissionByDetails.getDelegateSummary().getOrcidIdentifier().getPath());
assertTrue(givenPermissionByDetails.getApprovalDate().getValue().toXMLFormat().startsWith("2011-08-24T11:28:16.000"));
}
private void checkContactDetails(ContactDetails contactDetails) {
assertNotNull(contactDetails);
List<Email> emails = contactDetails.getEmail();
assertEquals(6, emails.size());
Map<String, Email> emailMap = new HashMap<>();
for (Email email : emails) {
emailMap.put(email.getValue(), email);
}
Email primaryEmail = emailMap.get("peter@sellers.com");
assertNotNull(primaryEmail);
assertEquals("PRIVATE", primaryEmail.getVisibility().name());
assertTrue(primaryEmail.isPrimary());
assertTrue(primaryEmail.isCurrent());
assertFalse(primaryEmail.isVerified());
String[] alternativeEmails = new String[] { "teddybass@semantico.com", "teddybass2@semantico.com", "teddybass3public@semantico.com", "teddybass3private@semantico.com" };
for (String alternativeEmail : alternativeEmails) {
Email email = emailMap.get(alternativeEmail);
assertNotNull(email);
switch(email.getValue()) {
case "teddybass@semantico.com":
assertEquals("PRIVATE", email.getVisibility().name());
assertFalse(email.isPrimary());
assertFalse(email.isVerified());
break;
case "teddybass2@semantico.com":
assertEquals("LIMITED", email.getVisibility().name());
assertFalse(email.isPrimary());
assertFalse(email.isVerified());
break;
case "teddybass3public@semantico.com":
assertEquals("PUBLIC", email.getVisibility().name());
assertFalse(email.isPrimary());
assertFalse(email.isVerified());
break;
case "teddybass3private@semantico.com":
assertEquals("PRIVATE", email.getVisibility().name());
assertTrue(email.isPrimary());
assertTrue(email.isVerified());
break;
}
assertTrue(email.isCurrent());
}
Address contactDetailsAddress = contactDetails.getAddress();
assertNotNull(contactDetailsAddress);
assertEquals(Visibility.LIMITED, contactDetailsAddress.getCountry().getVisibility());
}
private void checkAddress(OrganizationAddress address) {
assertNotNull(address);
assertEquals(Iso3166Country.GB, address.getCountry());
}
private void checkOrcidInternal(OrcidInternal orcidInternal) {
SecurityDetails securityDetails = orcidInternal.getSecurityDetails();
assertNotNull(securityDetails);
assertEquals("e9adO9I4UpBwqI5tGR+qDodvAZ7mlcISn+T+kyqXPf2Z6PPevg7JijqYr6KGO8VOskOYqVOEK2FEDwebxWKGDrV/TQ9gRfKWZlzxssxsOnA=", securityDetails
.getEncryptedPassword().getContent());
assertEquals(1, securityDetails.getSecurityQuestionId().getValue());
assertEquals("iTlIoR2JsFl5guE56cazmg==", securityDetails.getEncryptedSecurityAnswer().getContent());
assertEquals("1vLkD2Lm8c24TyALcW0Brg==", securityDetails.getEncryptedVerificationCode().getContent());
Preferences preferences = orcidInternal.getPreferences();
assertNotNull(preferences);
assertTrue(preferences.getSendChangeNotifications().isValue());
assertFalse(preferences.getSendOrcidNews().isValue());
}
private void validateAgainstSchema(OrcidMessage orcidMessage) throws SAXException, IOException {
//We need to manually remove the visibility from the given and family names to match the schema
removeVisibilityAttributeFromNames(orcidMessage);
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = factory.newSchema(getClass().getResource("/orcid-message-" + OrcidMessage.DEFAULT_VERSION + ".xsd"));
Validator validator = schema.newValidator();
validator.validate(orcidMessage.toSource());
}
private void removeVisibilityAttributeFromNames(OrcidMessage orcidMessage) {
if(orcidMessage != null && orcidMessage.getOrcidProfile() != null && orcidMessage.getOrcidProfile().getOrcidBio() != null && orcidMessage.getOrcidProfile().getOrcidBio().getPersonalDetails() != null) {
if(orcidMessage.getOrcidProfile().getOrcidBio().getPersonalDetails().getFamilyName() != null) {
orcidMessage.getOrcidProfile().getOrcidBio().getPersonalDetails().getFamilyName().setVisibility(null);
}
if(orcidMessage.getOrcidProfile().getOrcidBio().getPersonalDetails().getGivenNames() != null) {
orcidMessage.getOrcidProfile().getOrcidBio().getPersonalDetails().getGivenNames().setVisibility(null);
}
}
}
}