Search in sources :

Example 1 with ResearcherUrl

use of org.orcid.jaxb.model.message.ResearcherUrl in project ORCID-Source by ORCID.

the class OrcidProfileManagerImplTest method testDefaultVisibilityForItemsAppliedOnUpdate.

@Test
@Transactional
@Rollback(true)
public void testDefaultVisibilityForItemsAppliedOnUpdate() {
    OrcidProfile profile = createBasicProfile();
    OrcidHistory orcidHistory = new OrcidHistory();
    orcidHistory.setClaimed(new Claimed(true));
    orcidHistory.setCreationMethod(CreationMethod.DIRECT);
    orcidHistory.setSubmissionDate(new SubmissionDate(DateUtils.convertToXMLGregorianCalendar(new Date())));
    profile.setOrcidHistory(orcidHistory);
    Keyword k = new Keyword("word", null);
    Keywords kk = new Keywords();
    kk.getKeyword().add(k);
    kk.setVisibility(Visibility.LIMITED);
    ResearcherUrl r = new ResearcherUrl(new Url("http://whatever.com"), null);
    ResearcherUrls rr = new ResearcherUrls();
    rr.getResearcherUrl().add(r);
    rr.setVisibility(Visibility.LIMITED);
    ExternalIdentifier i = new ExternalIdentifier(null);
    i.setExternalIdReference(new ExternalIdReference("ref"));
    i.setExternalIdCommonName(new ExternalIdCommonName("cn"));
    ExternalIdentifiers ii = new ExternalIdentifiers();
    ii.getExternalIdentifier().add(i);
    ii.setVisibility(Visibility.LIMITED);
    OtherNames oo = new OtherNames();
    oo.addOtherName("other", null);
    oo.setVisibility(Visibility.LIMITED);
    profile.getOrcidBio().setKeywords(kk);
    profile.getOrcidBio().setResearcherUrls(rr);
    profile.getOrcidBio().setExternalIdentifiers(ii);
    profile.getOrcidBio().getPersonalDetails().setOtherNames(oo);
    //Create the profile
    profile = orcidProfileManager.createOrcidProfile(profile, true, false);
    Preferences preferences = new Preferences();
    preferences.setSendChangeNotifications(new SendChangeNotifications(true));
    preferences.setSendOrcidNews(new SendOrcidNews(true));
    //Default visibility for user will be LIMITED
    preferences.setActivitiesVisibilityDefault(new ActivitiesVisibilityDefault(Visibility.LIMITED));
    preferences.setNotificationsEnabled(DefaultPreferences.NOTIFICATIONS_ENABLED);
    preferences.setSendEmailFrequencyDays(DefaultPreferences.SEND_EMAIL_FREQUENCY_DAYS);
    preferences.setSendMemberUpdateRequests(DefaultPreferences.SEND_MEMBER_UPDATE_REQUESTS);
    OrcidInternal internal = new OrcidInternal();
    internal.setPreferences(preferences);
    profile.setOrcidInternal(internal);
    profile.getOrcidInternal().getPreferences().setActivitiesVisibilityDefault(new ActivitiesVisibilityDefault(Visibility.LIMITED));
    //Claim the profile
    profile = orcidProfileManager.updateOrcidProfile(profile);
    //now attempt to alter privacy.  It should fail as record has been claimed.
    profile.getOrcidBio().getKeywords().setVisibility(Visibility.PUBLIC);
    profile.getOrcidBio().getResearcherUrls().setVisibility(Visibility.PUBLIC);
    profile.getOrcidBio().getExternalIdentifiers().setVisibility(Visibility.PUBLIC);
    profile.getOrcidBio().getPersonalDetails().getOtherNames().setVisibility(Visibility.PUBLIC);
    profile = orcidProfileManager.updateOrcidProfile(profile);
    assertEquals("word", profile.getOrcidBio().getKeywords().getKeyword().iterator().next().getContent());
    assertEquals(Visibility.LIMITED, profile.getOrcidBio().getKeywords().getKeyword().iterator().next().getVisibility());
    assertEquals(new Url("http://whatever.com"), profile.getOrcidBio().getResearcherUrls().getResearcherUrl().iterator().next().getUrl());
    assertEquals(Visibility.LIMITED, profile.getOrcidBio().getResearcherUrls().getResearcherUrl().iterator().next().getVisibility());
    assertEquals("cn", profile.getOrcidBio().getExternalIdentifiers().getExternalIdentifier().iterator().next().getExternalIdCommonName().getContent());
    assertEquals(Visibility.LIMITED, profile.getOrcidBio().getExternalIdentifiers().getExternalIdentifier().iterator().next().getVisibility());
    assertEquals("other", profile.getOrcidBio().getPersonalDetails().getOtherNames().getOtherName().iterator().next().getContent());
    assertEquals(Visibility.LIMITED, profile.getOrcidBio().getPersonalDetails().getOtherNames().getOtherName().iterator().next().getVisibility());
}
Also used : SendOrcidNews(org.orcid.jaxb.model.message.SendOrcidNews) Keywords(org.orcid.jaxb.model.message.Keywords) Keyword(org.orcid.jaxb.model.message.Keyword) ExternalIdReference(org.orcid.jaxb.model.message.ExternalIdReference) ExternalIdentifier(org.orcid.jaxb.model.message.ExternalIdentifier) WorkExternalIdentifier(org.orcid.jaxb.model.message.WorkExternalIdentifier) FundingExternalIdentifier(org.orcid.jaxb.model.message.FundingExternalIdentifier) OtherNames(org.orcid.jaxb.model.message.OtherNames) OrcidInternal(org.orcid.jaxb.model.message.OrcidInternal) SubmissionDate(org.orcid.jaxb.model.message.SubmissionDate) Claimed(org.orcid.jaxb.model.message.Claimed) SubmissionDate(org.orcid.jaxb.model.message.SubmissionDate) Date(java.util.Date) ApprovalDate(org.orcid.jaxb.model.message.ApprovalDate) Url(org.orcid.jaxb.model.message.Url) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) ExternalIdUrl(org.orcid.jaxb.model.message.ExternalIdUrl) OrcidProfile(org.orcid.jaxb.model.message.OrcidProfile) ExternalIdCommonName(org.orcid.jaxb.model.message.ExternalIdCommonName) OrcidHistory(org.orcid.jaxb.model.message.OrcidHistory) ResearcherUrls(org.orcid.jaxb.model.message.ResearcherUrls) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) ActivitiesVisibilityDefault(org.orcid.jaxb.model.message.ActivitiesVisibilityDefault) WorkExternalIdentifiers(org.orcid.jaxb.model.message.WorkExternalIdentifiers) FundingExternalIdentifiers(org.orcid.jaxb.model.message.FundingExternalIdentifiers) ExternalIdentifiers(org.orcid.jaxb.model.message.ExternalIdentifiers) Preferences(org.orcid.jaxb.model.message.Preferences) DefaultPreferences(org.orcid.core.constants.DefaultPreferences) SendChangeNotifications(org.orcid.jaxb.model.message.SendChangeNotifications) Test(org.junit.Test) Rollback(org.springframework.test.annotation.Rollback) Transactional(org.springframework.transaction.annotation.Transactional)

Example 2 with ResearcherUrl

use of org.orcid.jaxb.model.message.ResearcherUrl in project ORCID-Source by ORCID.

the class OrcidProfileManagerImplTest method testUpdateOrcidBioKeepTheUserVisibility.

@Test
@Transactional
public void testUpdateOrcidBioKeepTheUserVisibility() {
    OrcidProfile profile = createBasicProfile();
    String orcidIdentifier = null;
    profile.setOrcidIdentifier(orcidIdentifier);
    setBio(profile, Visibility.LIMITED);
    OrcidHistory orcidHistory = new OrcidHistory();
    orcidHistory.setClaimed(new Claimed(true));
    orcidHistory.setCreationMethod(CreationMethod.DIRECT);
    orcidHistory.setSubmissionDate(new SubmissionDate(DateUtils.convertToXMLGregorianCalendar(new Date())));
    profile.setOrcidHistory(orcidHistory);
    Preferences preferences = new Preferences();
    preferences.setSendChangeNotifications(new SendChangeNotifications(true));
    preferences.setSendOrcidNews(new SendOrcidNews(true));
    //Default visibility for user will be LIMITED
    preferences.setActivitiesVisibilityDefault(new ActivitiesVisibilityDefault(Visibility.LIMITED));
    preferences.setNotificationsEnabled(DefaultPreferences.NOTIFICATIONS_ENABLED);
    preferences.setSendEmailFrequencyDays(DefaultPreferences.SEND_EMAIL_FREQUENCY_DAYS);
    preferences.setSendMemberUpdateRequests(DefaultPreferences.SEND_MEMBER_UPDATE_REQUESTS);
    OrcidInternal internal = new OrcidInternal();
    internal.setPreferences(preferences);
    profile.setOrcidInternal(internal);
    profile = orcidProfileManager.createOrcidProfile(profile, true, false);
    //Update it setting it to PUBLIC and check
    profile = orcidProfileManager.retrieveOrcidProfile(profile.getOrcidIdentifier().getPath());
    assertNotNull(profile);
    assertNotNull(profile.getOrcidBio());
    OrcidBio bioToUpdate = profile.getOrcidBio();
    assertEquals(Visibility.LIMITED, bioToUpdate.getBiography().getVisibility());
    assertEquals("This is my biography", bioToUpdate.getBiography().getContent());
    assertEquals(Visibility.LIMITED, bioToUpdate.getContactDetails().getAddress().getCountry().getVisibility());
    assertEquals(Iso3166Country.US, bioToUpdate.getContactDetails().getAddress().getCountry().getValue());
    assertEquals(Visibility.LIMITED, bioToUpdate.getExternalIdentifiers().getVisibility());
    assertEquals(1, bioToUpdate.getExternalIdentifiers().getExternalIdentifier().size());
    assertEquals(Visibility.LIMITED, bioToUpdate.getKeywords().getVisibility());
    assertEquals(1, bioToUpdate.getKeywords().getKeyword().size());
    assertEquals(Visibility.LIMITED, bioToUpdate.getPersonalDetails().getOtherNames().getVisibility());
    assertEquals(1, bioToUpdate.getPersonalDetails().getOtherNames().getOtherName().size());
    assertEquals(Visibility.LIMITED, bioToUpdate.getResearcherUrls().getVisibility());
    assertEquals(1, bioToUpdate.getResearcherUrls().getResearcherUrl().size());
    //Update bio
    bioToUpdate.getBiography().setContent("Updated biography");
    bioToUpdate.getBiography().setVisibility(Visibility.PRIVATE);
    //Update address
    bioToUpdate.getContactDetails().getAddress().getCountry().setValue(Iso3166Country.CR);
    bioToUpdate.getContactDetails().getAddress().getCountry().setVisibility(Visibility.PRIVATE);
    //Update external identifiers
    ExternalIdentifier extId = new ExternalIdentifier();
    extId.setExternalIdCommonName(new ExternalIdCommonName("common-name-2"));
    extId.setExternalIdReference(new ExternalIdReference("ext-id-reference-2"));
    extId.setExternalIdUrl(new ExternalIdUrl("http://orcid.org/ext-id/2"));
    extId.setVisibility(Visibility.PRIVATE);
    bioToUpdate.getExternalIdentifiers().setVisibility(Visibility.PRIVATE);
    bioToUpdate.getExternalIdentifiers().getExternalIdentifier().add(extId);
    //Update keywords
    Keyword k = new Keyword();
    k.setContent("keyword-2");
    k.setVisibility(Visibility.PRIVATE);
    bioToUpdate.getKeywords().getKeyword().add(k);
    bioToUpdate.getKeywords().setVisibility(Visibility.PRIVATE);
    //Update researcher urls
    ResearcherUrl rUrl = new ResearcherUrl();
    rUrl.setUrl(new Url("http://orcid.org/researcher-url-2"));
    rUrl.setUrlName(new UrlName("url-name-2"));
    rUrl.setVisibility(Visibility.PRIVATE);
    bioToUpdate.getResearcherUrls().getResearcherUrl().add(rUrl);
    bioToUpdate.getResearcherUrls().setVisibility(Visibility.PRIVATE);
    //Update other names
    OtherName o = new OtherName();
    o.setContent("other-name-2");
    o.setVisibility(Visibility.PRIVATE);
    bioToUpdate.getPersonalDetails().getOtherNames().getOtherName().add(o);
    bioToUpdate.getPersonalDetails().getOtherNames().setVisibility(Visibility.PRIVATE);
    //Update the biography
    orcidProfileManager.updateOrcidBio(profile);
    //Get the record again and check that visibilities where not updated 
    OrcidProfile updatedProfile = orcidProfileManager.retrieveOrcidProfile(profile.getOrcidIdentifier().getPath());
    assertNotNull(updatedProfile);
    assertNotNull(updatedProfile.getOrcidBio());
    OrcidBio updatedBio = updatedProfile.getOrcidBio();
    assertEquals(Visibility.LIMITED, updatedBio.getBiography().getVisibility());
    assertEquals("Updated biography", updatedBio.getBiography().getContent());
    assertEquals(Visibility.LIMITED, updatedBio.getContactDetails().getAddress().getCountry().getVisibility());
    assertEquals(Iso3166Country.US, updatedBio.getContactDetails().getAddress().getCountry().getValue());
    assertEquals(Visibility.LIMITED, updatedBio.getExternalIdentifiers().getVisibility());
    assertEquals(2, updatedBio.getExternalIdentifiers().getExternalIdentifier().size());
    assertEquals(Visibility.LIMITED, updatedBio.getKeywords().getVisibility());
    assertEquals(2, updatedBio.getKeywords().getKeyword().size());
    assertEquals(Visibility.LIMITED, updatedBio.getPersonalDetails().getOtherNames().getVisibility());
    assertEquals(2, updatedBio.getPersonalDetails().getOtherNames().getOtherName().size());
    assertEquals(Visibility.LIMITED, updatedBio.getResearcherUrls().getVisibility());
    assertEquals(2, updatedBio.getResearcherUrls().getResearcherUrl().size());
}
Also used : SendOrcidNews(org.orcid.jaxb.model.message.SendOrcidNews) OrcidBio(org.orcid.jaxb.model.message.OrcidBio) ExternalIdReference(org.orcid.jaxb.model.message.ExternalIdReference) Keyword(org.orcid.jaxb.model.message.Keyword) ExternalIdentifier(org.orcid.jaxb.model.message.ExternalIdentifier) WorkExternalIdentifier(org.orcid.jaxb.model.message.WorkExternalIdentifier) FundingExternalIdentifier(org.orcid.jaxb.model.message.FundingExternalIdentifier) OrcidInternal(org.orcid.jaxb.model.message.OrcidInternal) OtherName(org.orcid.jaxb.model.message.OtherName) UrlName(org.orcid.jaxb.model.message.UrlName) SubmissionDate(org.orcid.jaxb.model.message.SubmissionDate) Claimed(org.orcid.jaxb.model.message.Claimed) SubmissionDate(org.orcid.jaxb.model.message.SubmissionDate) Date(java.util.Date) ApprovalDate(org.orcid.jaxb.model.message.ApprovalDate) Url(org.orcid.jaxb.model.message.Url) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) ExternalIdUrl(org.orcid.jaxb.model.message.ExternalIdUrl) ExternalIdUrl(org.orcid.jaxb.model.message.ExternalIdUrl) OrcidProfile(org.orcid.jaxb.model.message.OrcidProfile) ExternalIdCommonName(org.orcid.jaxb.model.message.ExternalIdCommonName) OrcidHistory(org.orcid.jaxb.model.message.OrcidHistory) ActivitiesVisibilityDefault(org.orcid.jaxb.model.message.ActivitiesVisibilityDefault) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) Preferences(org.orcid.jaxb.model.message.Preferences) DefaultPreferences(org.orcid.core.constants.DefaultPreferences) SendChangeNotifications(org.orcid.jaxb.model.message.SendChangeNotifications) Test(org.junit.Test) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with ResearcherUrl

use of org.orcid.jaxb.model.message.ResearcherUrl in project ORCID-Source by ORCID.

the class OrcidProfileManagerImplTest method setBio.

private void setBio(OrcidProfile profile, Visibility defaultVisibility) {
    OrcidBio bio = new OrcidBio();
    Biography biography = new Biography("This is my biography");
    if (defaultVisibility != null) {
        biography.setVisibility(defaultVisibility);
    }
    bio.setBiography(biography);
    ContactDetails contactDetails = new ContactDetails();
    Address address = new Address();
    address.setCountry(new Country(Iso3166Country.US));
    if (defaultVisibility != null) {
        address.getCountry().setVisibility(defaultVisibility);
    }
    contactDetails.setAddress(address);
    List<Email> emails = new ArrayList<Email>();
    Email email = new Email();
    email.setPrimary(true);
    email.setValue(System.currentTimeMillis() + "@test.orcid.org");
    emails.add(email);
    contactDetails.setEmail(emails);
    bio.setContactDetails(contactDetails);
    ExternalIdentifiers extIds = new ExternalIdentifiers();
    ExternalIdentifier extId = new ExternalIdentifier();
    extId.setExternalIdCommonName(new ExternalIdCommonName("common-name"));
    extId.setExternalIdReference(new ExternalIdReference("ext-id-reference"));
    extId.setExternalIdUrl(new ExternalIdUrl("http://orcid.org/ext-id"));
    extIds.getExternalIdentifier().add(extId);
    if (defaultVisibility != null) {
        extIds.setVisibility(defaultVisibility);
    }
    bio.setExternalIdentifiers(extIds);
    Keywords keywords = new Keywords();
    Keyword keyword = new Keyword();
    keyword.setContent("k1");
    keywords.getKeyword().add(keyword);
    if (defaultVisibility != null) {
        keywords.setVisibility(defaultVisibility);
    }
    bio.setKeywords(keywords);
    PersonalDetails personalDetails = new PersonalDetails();
    personalDetails.setCreditName(new CreditName("credit-name"));
    personalDetails.setGivenNames(new GivenNames("given-names"));
    personalDetails.setFamilyName(new FamilyName("family-name"));
    OtherNames otherNames = new OtherNames();
    OtherName otherName = new OtherName();
    otherName.setContent("o1");
    otherNames.getOtherName().add(otherName);
    if (defaultVisibility != null) {
        otherNames.setVisibility(defaultVisibility);
    }
    personalDetails.setOtherNames(otherNames);
    bio.setPersonalDetails(personalDetails);
    ResearcherUrls researcherUrls = new ResearcherUrls();
    ResearcherUrl researcherUrl = new ResearcherUrl();
    researcherUrl.setUrl(new Url("http://orcid.org/researcher-url-1"));
    researcherUrl.setUrlName(new UrlName("url-name-1"));
    researcherUrls.getResearcherUrl().add(researcherUrl);
    if (defaultVisibility != null) {
        researcherUrls.setVisibility(defaultVisibility);
    }
    bio.setResearcherUrls(researcherUrls);
    profile.setOrcidBio(bio);
}
Also used : Email(org.orcid.jaxb.model.message.Email) Keywords(org.orcid.jaxb.model.message.Keywords) OrcidBio(org.orcid.jaxb.model.message.OrcidBio) Address(org.orcid.jaxb.model.message.Address) OrganizationAddress(org.orcid.jaxb.model.message.OrganizationAddress) FamilyName(org.orcid.jaxb.model.message.FamilyName) OtherNames(org.orcid.jaxb.model.message.OtherNames) ArrayList(java.util.ArrayList) Url(org.orcid.jaxb.model.message.Url) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) ExternalIdUrl(org.orcid.jaxb.model.message.ExternalIdUrl) ExternalIdUrl(org.orcid.jaxb.model.message.ExternalIdUrl) ExternalIdCommonName(org.orcid.jaxb.model.message.ExternalIdCommonName) ContactDetails(org.orcid.jaxb.model.message.ContactDetails) GivenNames(org.orcid.jaxb.model.message.GivenNames) Biography(org.orcid.jaxb.model.message.Biography) ResearcherUrls(org.orcid.jaxb.model.message.ResearcherUrls) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) WorkExternalIdentifiers(org.orcid.jaxb.model.message.WorkExternalIdentifiers) FundingExternalIdentifiers(org.orcid.jaxb.model.message.FundingExternalIdentifiers) ExternalIdentifiers(org.orcid.jaxb.model.message.ExternalIdentifiers) ExternalIdReference(org.orcid.jaxb.model.message.ExternalIdReference) Keyword(org.orcid.jaxb.model.message.Keyword) ExternalIdentifier(org.orcid.jaxb.model.message.ExternalIdentifier) WorkExternalIdentifier(org.orcid.jaxb.model.message.WorkExternalIdentifier) FundingExternalIdentifier(org.orcid.jaxb.model.message.FundingExternalIdentifier) CreditName(org.orcid.jaxb.model.message.CreditName) OtherName(org.orcid.jaxb.model.message.OtherName) UrlName(org.orcid.jaxb.model.message.UrlName) PersonalDetails(org.orcid.jaxb.model.message.PersonalDetails) Country(org.orcid.jaxb.model.message.Country) Iso3166Country(org.orcid.jaxb.model.message.Iso3166Country)

Example 4 with ResearcherUrl

use of org.orcid.jaxb.model.message.ResearcherUrl in project ORCID-Source by ORCID.

the class RegistrationControllerTest method createBasicProfile.

protected OrcidProfile createBasicProfile() {
    OrcidProfile profile = new OrcidProfile();
    profile.setPassword("password");
    profile.setVerificationCode("1234");
    profile.setSecurityQuestionAnswer("random answer");
    OrcidBio bio = new OrcidBio();
    ContactDetails contactDetails = new ContactDetails();
    contactDetails.addOrReplacePrimaryEmail(new Email("will@semantico.com"));
    bio.setContactDetails(contactDetails);
    profile.setOrcidBio(bio);
    PersonalDetails personalDetails = new PersonalDetails();
    bio.setPersonalDetails(personalDetails);
    personalDetails.setGivenNames(new GivenNames("Will"));
    personalDetails.setFamilyName(new FamilyName("Simpson"));
    bio.setBiography(new Biography("Will is a software developer"));
    ResearcherUrls researcherUrls = new ResearcherUrls();
    bio.setResearcherUrls(researcherUrls);
    researcherUrls.getResearcherUrl().add(new ResearcherUrl(new Url("http://www.wjrs.co.uk"), null));
    OrcidWorks orcidWorks = new OrcidWorks();
    profile.setOrcidWorks(orcidWorks);
    return profile;
}
Also used : OrcidProfile(org.orcid.jaxb.model.message.OrcidProfile) Email(org.orcid.jaxb.model.message.Email) OrcidBio(org.orcid.jaxb.model.message.OrcidBio) ContactDetails(org.orcid.jaxb.model.message.ContactDetails) FamilyName(org.orcid.jaxb.model.message.FamilyName) GivenNames(org.orcid.jaxb.model.message.GivenNames) Biography(org.orcid.jaxb.model.message.Biography) ResearcherUrls(org.orcid.jaxb.model.message.ResearcherUrls) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) PersonalDetails(org.orcid.jaxb.model.message.PersonalDetails) Url(org.orcid.jaxb.model.message.Url) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl) OrcidWorks(org.orcid.jaxb.model.message.OrcidWorks)

Example 5 with ResearcherUrl

use of org.orcid.jaxb.model.message.ResearcherUrl in project ORCID-Source by ORCID.

the class Jaxb2JpaAdapterImpl method setResearcherUrls.

private void setResearcherUrls(ProfileEntity profileEntity, ResearcherUrls researcherUrls) {
    String sourceId = getSourceId();
    SortedSet<ResearcherUrlEntity> existingResearcherUrlEntities = profileEntity.getResearcherUrls();
    Iterator<ResearcherUrlEntity> existingIt = null;
    if (existingResearcherUrlEntities != null) {
        existingIt = existingResearcherUrlEntities.iterator();
    }
    //Iterate over the list of existing elements, to see which ones still exists but preserving all the ones where the calling client is not the source of
    if (existingIt != null) {
        while (existingIt.hasNext()) {
            ResearcherUrlEntity existing = existingIt.next();
            String existingElementSource = existing.getElementSourceId();
            if (sourceId != null && !sourceId.equals(existingElementSource)) {
            //If am not the source of this element, do nothing
            } else {
                //If am the source, check if the element exists in the list of incoming elements
                Pair<String, String> existingPair = createResearcherUrlPair(existing);
                boolean found = false;
                if (researcherUrls != null && researcherUrls.getResearcherUrl() != null) {
                    for (ResearcherUrl newResearcherUrl : researcherUrls.getResearcherUrl()) {
                        Pair<String, String> newResearcherUrlPair = createResearcherUrlPair(newResearcherUrl);
                        if (Objects.equals(existingPair, newResearcherUrlPair)) {
                            found = true;
                            break;
                        }
                    }
                }
                //If it doesn't exists, remove it from the existing elements
                if (!found) {
                    existingIt.remove();
                }
            }
        }
    }
    //Iterate over the list of all new ones and add the ones that doesn't exists yet
    if (researcherUrls != null && researcherUrls.getResearcherUrl() != null) {
        for (ResearcherUrl newResearcherUrl : researcherUrls.getResearcherUrl()) {
            boolean exists = false;
            Pair<String, String> newResearcherUrlPair = createResearcherUrlPair(newResearcherUrl);
            if (existingResearcherUrlEntities != null) {
                for (ResearcherUrlEntity existingEntity : existingResearcherUrlEntities) {
                    Pair<String, String> existingPair = createResearcherUrlPair(existingEntity);
                    if (Objects.equals(newResearcherUrlPair, existingPair)) {
                        exists = true;
                        //If the profile is not claimed, you can update the visibility
                        if (profileEntity.getClaimed() == null || !profileEntity.getClaimed()) {
                            //Update the visibility of existing elements if the profile is not claimed
                            String existingVisibilityValue = existingEntity.getVisibility() == null ? null : existingEntity.getVisibility().value();
                            String listVisibilityValue = researcherUrls.getVisibility() == null ? null : researcherUrls.getVisibility().value();
                            if (listVisibilityValue != null && !Objects.equals(existingVisibilityValue, listVisibilityValue)) {
                                existingEntity.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.fromValue(listVisibilityValue));
                            }
                        }
                        break;
                    }
                }
            }
            if (!exists) {
                if (existingResearcherUrlEntities == null) {
                    existingResearcherUrlEntities = new TreeSet<ResearcherUrlEntity>();
                    profileEntity.setResearcherUrls(existingResearcherUrlEntities);
                }
                ResearcherUrlEntity newEntity = new ResearcherUrlEntity();
                newEntity.setUser(profileEntity);
                //Set source
                SourceEntity source = sourceManager.retrieveSourceEntity();
                setSource(source, newEntity);
                if (newResearcherUrl.getUrl() != null) {
                    newEntity.setUrl(newResearcherUrl.getUrl().getValue());
                }
                if (newResearcherUrl.getUrlName() != null) {
                    newEntity.setUrlName(newResearcherUrl.getUrlName().getContent());
                }
                newEntity.setVisibility(getDefaultVisibility(profileEntity, researcherUrls.getVisibility(), OrcidVisibilityDefaults.RESEARCHER_URLS_DEFAULT));
                newEntity.setDisplayIndex(0L);
                for (ResearcherUrlEntity tempEntity : existingResearcherUrlEntities) tempEntity.setDisplayIndex(tempEntity.getDisplayIndex() + 1);
                existingResearcherUrlEntities.add(newEntity);
            }
        }
    }
}
Also used : ResearcherUrlEntity(org.orcid.persistence.jpa.entities.ResearcherUrlEntity) SourceEntity(org.orcid.persistence.jpa.entities.SourceEntity) ResearcherUrl(org.orcid.jaxb.model.message.ResearcherUrl)

Aggregations

ResearcherUrl (org.orcid.jaxb.model.message.ResearcherUrl)16 ResearcherUrls (org.orcid.jaxb.model.message.ResearcherUrls)12 Url (org.orcid.jaxb.model.message.Url)12 OrcidBio (org.orcid.jaxb.model.message.OrcidBio)10 Keyword (org.orcid.jaxb.model.message.Keyword)9 ExternalIdentifier (org.orcid.jaxb.model.message.ExternalIdentifier)8 OrcidProfile (org.orcid.jaxb.model.message.OrcidProfile)8 Keywords (org.orcid.jaxb.model.message.Keywords)7 OtherNames (org.orcid.jaxb.model.message.OtherNames)7 PersonalDetails (org.orcid.jaxb.model.message.PersonalDetails)7 ContactDetails (org.orcid.jaxb.model.message.ContactDetails)6 Email (org.orcid.jaxb.model.message.Email)6 ExternalIdCommonName (org.orcid.jaxb.model.message.ExternalIdCommonName)6 ExternalIdReference (org.orcid.jaxb.model.message.ExternalIdReference)6 ExternalIdentifiers (org.orcid.jaxb.model.message.ExternalIdentifiers)6 FamilyName (org.orcid.jaxb.model.message.FamilyName)6 GivenNames (org.orcid.jaxb.model.message.GivenNames)6 WorkExternalIdentifier (org.orcid.jaxb.model.message.WorkExternalIdentifier)6 Test (org.junit.Test)5 Biography (org.orcid.jaxb.model.message.Biography)5