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;
}
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
}
}
}
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);
}
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());
}
}
}
}
}
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);
}
Aggregations