Search in sources :

Example 16 with Email

use of org.orcid.jaxb.model.message.Email 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 17 with Email

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

the class RDFMessageBodyWriter method describeContactDetails.

private void describeContactDetails(ContactDetails contactDetails, Individual person, OntModel m) {
    if (contactDetails == null) {
        return;
    }
    List<Email> emails = contactDetails.getEmail();
    if (emails != null) {
        for (Email email : emails) {
            if (email.isCurrent()) {
                Individual mbox = m.createIndividual("mailto:" + email.getValue(), null);
                person.addProperty(FOAF.mbox, mbox);
            }
        }
    }
    Address addr = contactDetails.getAddress();
    if (addr != null) {
        if (addr.getCountry() != null) {
            String countryCode = addr.getCountry().getValue().name();
            Individual position = m.createIndividual(Geonames.Feature);
            position.addProperty(Geonames.countryCode, countryCode);
            person.addProperty(FOAF.based_near, position);
            Individual country = getCountry(countryCode);
            if (country != null) {
                country = addToModel(position.getOntModel(), country);
                position.addProperty(Geonames.parentCountry, country);
            }
        // TODO: Include URI and (a) full name of country
        // Potential source: geonames.org
        // See https://gist.github.com/stain/7566375
        }
    }
}
Also used : Email(org.orcid.jaxb.model.message.Email) Address(org.orcid.jaxb.model.message.Address) Individual(org.apache.jena.ontology.Individual)

Example 18 with Email

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

the class Jaxb2JpaAdapterImpl method setEmails.

private void setEmails(ProfileEntity profileEntity, ContactDetails contactDetails) {
    Set<EmailEntity> existingEmailEntities = profileEntity.getEmails();
    Map<String, EmailEntity> existingEmailEntitiesMap = createEmailEntitiesMap(existingEmailEntities);
    Set<EmailEntity> emailEntities = null;
    if (existingEmailEntities == null) {
        emailEntities = new HashSet<>();
    } else {
        // To allow for orphan deletion
        existingEmailEntities.clear();
        emailEntities = existingEmailEntities;
    }
    for (Email email : contactDetails.getEmail()) {
        String emailId = email.getValue().trim();
        EmailEntity emailEntity = null;
        EmailEntity existingEmailEntity = existingEmailEntitiesMap.get(emailId);
        if (existingEmailEntity == null) {
            emailEntity = new EmailEntity();
            emailEntity.setId(emailId);
            emailEntity.setProfile(profileEntity);
            emailEntity.setSourceId(email.getSource());
            emailEntity.setClientSourceId(email.getSourceClientId());
        } else {
            existingEmailEntity.clean();
            emailEntity = existingEmailEntity;
        }
        emailEntity.setPrimary(email.isPrimary());
        emailEntity.setCurrent(email.isCurrent());
        emailEntity.setVerified(email.isVerified());
        if (email.getVisibility() == null) {
            emailEntity.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.PRIVATE);
        } else {
            emailEntity.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.fromValue(email.getVisibility().value()));
        }
        emailEntities.add(emailEntity);
    }
    profileEntity.setEmails(emailEntities);
}
Also used : Email(org.orcid.jaxb.model.message.Email) EmailEntity(org.orcid.persistence.jpa.entities.EmailEntity)

Example 19 with Email

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

the class OrcidProfileManagerImpl method addSourceToEmails.

/**
     * Preserves existing source for existing emails, and adds specified source
     * for new emails
     * 
     * @param orcidProfile
     *            The incoming profile
     * @param existingProfileEntity
     *            The existing profile entity from the DB
     * @param amenderOrcid
     *            The source of new emails (from the security context)
     */
private void addSourceToEmails(OrcidProfile orcidProfile, ProfileEntity existingProfileEntity, String amenderOrcid) {
    Map<String, EmailEntity> existingMap = new HashMap<>();
    Set<EmailEntity> existingEmails = existingProfileEntity.getEmails();
    if (existingEmails != null) {
        existingMap = EmailEntity.mapByLowerCaseEmail(existingEmails);
    }
    OrcidBio orcidBio = orcidProfile.getOrcidBio();
    if (orcidBio != null) {
        ContactDetails contactDetails = orcidBio.getContactDetails();
        if (contactDetails != null) {
            for (Email email : contactDetails.getEmail()) {
                EmailEntity existingEmail = existingMap.get(email.getValue().toLowerCase());
                if (existingEmail == null) {
                    if (OrcidStringUtils.isValidOrcid(amenderOrcid)) {
                        email.setSourceClientId(amenderOrcid);
                    } else {
                        email.setSource(amenderOrcid);
                    }
                } else {
                    email.setSource(existingEmail.getSourceId());
                    email.setSourceClientId(existingEmail.getClientSourceId());
                }
            }
        }
    }
}
Also used : Email(org.orcid.jaxb.model.message.Email) OrcidBio(org.orcid.jaxb.model.message.OrcidBio) ContactDetails(org.orcid.jaxb.model.message.ContactDetails) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) EmailEntity(org.orcid.persistence.jpa.entities.EmailEntity)

Example 20 with Email

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

the class OrcidJaxbCopyManagerImpl method copyUpdatedEmails.

//Not being used now as the client is not allowed to add or edit emails.
@SuppressWarnings("unused")
private void copyUpdatedEmails(ContactDetails existingContactDetails, ContactDetails updatedContactDetails) {
    String clientId = sourceManager.retrieveSourceOrcid();
    List<Email> allEmails = new ArrayList<Email>();
    List<Email> existingEmails = existingContactDetails.getEmail();
    for (Email oldEmail : existingEmails) {
        Email tempEmail = null;
        if (updatedContactDetails != null) {
            tempEmail = updatedContactDetails.getEmailByString(oldEmail.getValue());
        }
        String oldEmSource = (oldEmail.getSourceClientId() == null) ? oldEmail.getSource() : oldEmail.getSourceClientId();
        if (clientId == null || (clientId != null && !clientId.equals(oldEmSource))) {
            allEmails.add(oldEmail);
            if (tempEmail != null) {
                updatedContactDetails.getEmail().remove(tempEmail);
            }
        } else {
            if (oldEmail.isPrimary()) {
                if (tempEmail != null) {
                    updatedContactDetails.getEmail().remove(tempEmail);
                    if (!Visibility.PRIVATE.equals(oldEmail.getVisibility())) {
                        oldEmail.setVisibility(tempEmail.getVisibility());
                    }
                }
                allEmails.add(oldEmail);
            } else if (Visibility.PRIVATE.equals(oldEmail.getVisibility())) {
                if (tempEmail != null) {
                    updatedContactDetails.getEmail().remove(tempEmail);
                }
                allEmails.add(oldEmail);
            } else {
                if (tempEmail != null) {
                    updatedContactDetails.getEmail().remove(tempEmail);
                    tempEmail.setPrimary(false);
                    allEmails.add(tempEmail);
                }
            }
        }
    }
    //Set primary = false for each remaining new email.
    if (updatedContactDetails != null) {
        for (Email newEmail : updatedContactDetails.getEmail()) {
            newEmail.setPrimary(false);
            allEmails.add(newEmail);
        }
    }
    for (Email email : allEmails) {
        if (email.getVisibility() == null) {
            email.setVisibility(OrcidVisibilityDefaults.ALTERNATIVE_EMAIL_DEFAULT.getVisibility());
        }
    }
    existingContactDetails.setEmail(allEmails);
}
Also used : Email(org.orcid.jaxb.model.message.Email) ArrayList(java.util.ArrayList)

Aggregations

Email (org.orcid.jaxb.model.message.Email)45 ContactDetails (org.orcid.jaxb.model.message.ContactDetails)22 OrcidBio (org.orcid.jaxb.model.message.OrcidBio)20 OrcidProfile (org.orcid.jaxb.model.message.OrcidProfile)20 OrcidMessage (org.orcid.jaxb.model.message.OrcidMessage)18 Test (org.junit.Test)17 PersonalDetails (org.orcid.jaxb.model.message.PersonalDetails)14 GivenNames (org.orcid.jaxb.model.message.GivenNames)12 FamilyName (org.orcid.jaxb.model.message.FamilyName)11 DBUnitTest (org.orcid.test.DBUnitTest)10 ArrayList (java.util.ArrayList)8 Address (org.orcid.jaxb.model.message.Address)7 Biography (org.orcid.jaxb.model.message.Biography)7 CreditName (org.orcid.jaxb.model.message.CreditName)7 ExternalIdentifiers (org.orcid.jaxb.model.message.ExternalIdentifiers)7 OrcidHistory (org.orcid.jaxb.model.message.OrcidHistory)7 ExternalIdentifier (org.orcid.jaxb.model.message.ExternalIdentifier)6 Keyword (org.orcid.jaxb.model.message.Keyword)6 OrcidActivities (org.orcid.jaxb.model.message.OrcidActivities)6 OrcidWork (org.orcid.jaxb.model.message.OrcidWork)6