use of org.orcid.jaxb.model.v3.dev1.record.Email in project ORCID-Source by ORCID.
the class EmailManagerImpl method setPrimary.
@Override
public void setPrimary(String orcid, String email, HttpServletRequest request) {
Email currentPrimaryEmail = this.findPrimaryEmail(orcid);
EmailEntity newPrimary = emailDao.find(email);
if (newPrimary != null && !currentPrimaryEmail.getEmail().equals(email)) {
emailDao.updatePrimary(orcid, email);
notificationManager.sendEmailAddressChangedNotification(orcid, email, currentPrimaryEmail.getEmail());
if (!newPrimary.getVerified()) {
notificationManager.sendVerificationEmail(orcid, email);
request.getSession().setAttribute(EmailConstants.CHECK_EMAIL_VALIDATED, false);
}
}
}
use of org.orcid.jaxb.model.v3.dev1.record.Email in project ORCID-Source by ORCID.
the class EmailManagerImpl method updateEmails.
@Override
@Transactional
public void updateEmails(HttpServletRequest request, String orcid, Emails emails) {
Email currentPrimaryEmail = findPrimaryEmail(orcid);
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
boolean primaryFound = false;
Email newPrimaryEmail = null;
if (emails != null && !emails.getEmails().isEmpty()) {
for (Email email : emails.getEmails()) {
emailDao.updateEmail(orcid, email.getEmail(), email.isCurrent(), org.orcid.jaxb.model.common_v2.Visibility.fromValue(email.getVisibility().value()));
if (email.isPrimary()) {
if (primaryFound) {
throw new IllegalArgumentException("More than one primary email specified");
} else {
primaryFound = true;
newPrimaryEmail = email;
}
emailDao.updatePrimary(orcid, email.getEmail());
}
}
}
if (!StringUtils.equals(currentPrimaryEmail.getEmail(), newPrimaryEmail.getEmail())) {
notificationManager.sendEmailAddressChangedNotification(orcid, newPrimaryEmail.getEmail(), currentPrimaryEmail.getEmail());
if (!newPrimaryEmail.isVerified()) {
notificationManager.sendVerificationEmail(orcid, newPrimaryEmail.getEmail());
request.getSession().setAttribute(EmailConstants.CHECK_EMAIL_VALIDATED, false);
}
}
}
});
}
use of org.orcid.jaxb.model.v3.dev1.record.Email in project ORCID-Source by ORCID.
the class NotificationManagerImpl method sendNotificationToAddedDelegate.
@Override
@Transactional
public void sendNotificationToAddedDelegate(String userGrantingPermission, String userReceivingPermission) {
ProfileEntity delegateProfileEntity = profileEntityCacheManager.retrieve(userReceivingPermission);
Boolean sendAdministrativeChangeNotifications = delegateProfileEntity.getSendAdministrativeChangeNotifications();
if (sendAdministrativeChangeNotifications == null || !sendAdministrativeChangeNotifications) {
LOGGER.debug("Not sending added delegate email, because option to send administrative change notifications not set to true for delegate: {}", delegateProfileEntity.getId());
return;
}
ProfileEntity profile = profileEntityCacheManager.retrieve(userGrantingPermission);
Locale userLocale = getUserLocaleFromProfileEntity(delegateProfileEntity);
String subject = getSubject("email.subject.added_as_delegate", userLocale);
org.orcid.jaxb.model.v3.dev1.record.Email primaryEmail = emailManager.findPrimaryEmail(userGrantingPermission);
String grantingOrcidEmail = primaryEmail.getEmail();
String emailNameForDelegate = deriveEmailFriendlyName(delegateProfileEntity);
String email = emailManager.findPrimaryEmail(userReceivingPermission).getEmail();
String assetsUrl = getAssetsUrl();
Map<String, Object> templateParams = new HashMap<String, Object>();
templateParams.put("emailNameForDelegate", emailNameForDelegate);
templateParams.put("grantingOrcidValue", userGrantingPermission);
templateParams.put("grantingOrcidName", deriveEmailFriendlyName(profile));
templateParams.put("baseUri", orcidUrlManager.getBaseUrl());
templateParams.put("baseUriHttp", orcidUrlManager.getBaseUriHttp());
templateParams.put("grantingOrcidEmail", grantingOrcidEmail);
templateParams.put("subject", subject);
templateParams.put("assetsUrl", assetsUrl);
addMessageParams(templateParams, userLocale);
// Generate body from template
String body = templateManager.processTemplate("added_as_delegate_email.ftl", templateParams);
// Generate html from template
String html = templateManager.processTemplate("added_as_delegate_email_html.ftl", templateParams);
boolean notificationsEnabled = delegateProfileEntity.getEnableNotifications();
if (notificationsEnabled) {
NotificationCustom notification = new NotificationCustom();
notification.setNotificationType(NotificationType.CUSTOM);
notification.setSubject(subject);
notification.setBodyHtml(html);
createNotification(userReceivingPermission, notification);
} else {
mailGunManager.sendEmail(DELEGATE_NOTIFY_ORCID_ORG, email, subject, body, html);
}
}
use of org.orcid.jaxb.model.v3.dev1.record.Email in project ORCID-Source by ORCID.
the class ValidateV3_dev1SamplesTest method testUnmarshallPerson.
@Test
public void testUnmarshallPerson() throws SAXException, URISyntaxException {
Person person = (Person) unmarshallFromPath("/record_3.0_dev1/samples/read_samples/person-3.0_dev1.xml", Person.class, "/record_3.0_dev1/person-3.0_dev1.xsd");
assertNotNull(person);
assertNotNull(person.getName());
assertEquals("give-names", person.getName().getGivenNames().getContent());
assertEquals("family-name", person.getName().getFamilyName().getContent());
assertEquals("credit-name", person.getName().getCreditName().getContent());
assertEquals(Visibility.PUBLIC, person.getName().getVisibility());
assertNotNull(person.getOtherNames());
assertNotNull(person.getOtherNames().getOtherNames());
assertEquals(1, person.getOtherNames().getOtherNames().size());
OtherName otherName = person.getOtherNames().getOtherNames().get(0);
assertEquals("other-name-1", otherName.getContent());
assertNotNull(otherName.getCreatedDate());
assertNotNull(otherName.getCreatedDate().getValue());
assertEquals(2001, otherName.getCreatedDate().getValue().getYear());
assertEquals(12, otherName.getCreatedDate().getValue().getMonth());
assertEquals(31, otherName.getCreatedDate().getValue().getDay());
assertNotNull(otherName.getLastModifiedDate().getValue());
assertEquals(2001, otherName.getLastModifiedDate().getValue().getYear());
assertEquals(12, otherName.getLastModifiedDate().getValue().getMonth());
assertEquals(31, otherName.getLastModifiedDate().getValue().getDay());
assertNotNull(otherName.getSource());
assertEquals("8888-8888-8888-8880", otherName.getSource().retrieveSourcePath());
assertNotNull(person.getBiography());
assertEquals(Visibility.PUBLIC, person.getBiography().getVisibility());
assertEquals("biography", person.getBiography().getContent());
assertNotNull(person.getResearcherUrls());
assertNotNull(person.getResearcherUrls().getResearcherUrls());
assertEquals(1, person.getResearcherUrls().getResearcherUrls().size());
ResearcherUrl rUrl = person.getResearcherUrls().getResearcherUrls().get(0);
assertEquals(Visibility.PUBLIC, rUrl.getVisibility());
assertEquals(Long.valueOf(1248), rUrl.getPutCode());
assertEquals("url-name-1", rUrl.getUrlName());
assertNotNull(rUrl.getUrl());
assertEquals("http://url.com/", rUrl.getUrl().getValue());
assertNotNull(rUrl.getCreatedDate());
assertEquals(2001, rUrl.getCreatedDate().getValue().getYear());
assertEquals(12, rUrl.getCreatedDate().getValue().getMonth());
assertEquals(31, rUrl.getCreatedDate().getValue().getDay());
assertNotNull(rUrl.getLastModifiedDate());
assertEquals(2001, rUrl.getLastModifiedDate().getValue().getYear());
assertEquals(12, rUrl.getLastModifiedDate().getValue().getMonth());
assertEquals(31, rUrl.getLastModifiedDate().getValue().getDay());
assertNotNull(rUrl.getSource());
assertEquals("8888-8888-8888-8880", rUrl.getSource().retrieveSourcePath());
assertNotNull(person.getEmails());
assertNotNull(person.getEmails().getEmails());
assertEquals(1, person.getEmails().getEmails().size());
Email email = person.getEmails().getEmails().get(0);
assertEquals(Visibility.PUBLIC, email.getVisibility());
assertEquals("user1@email.com", email.getEmail());
assertNotNull(email.getCreatedDate());
assertNotNull(email.getCreatedDate().getValue());
assertEquals(2001, email.getCreatedDate().getValue().getYear());
assertEquals(12, email.getCreatedDate().getValue().getMonth());
assertEquals(31, email.getCreatedDate().getValue().getDay());
assertNotNull(email.getLastModifiedDate());
assertNotNull(email.getLastModifiedDate().getValue());
assertEquals(2001, email.getLastModifiedDate().getValue().getYear());
assertEquals(12, email.getLastModifiedDate().getValue().getMonth());
assertEquals(31, email.getLastModifiedDate().getValue().getDay());
assertNotNull(email.getSource());
assertEquals("8888-8888-8888-8880", email.retrieveSourcePath());
assertNotNull(person.getAddresses());
assertNotNull(person.getAddresses().getAddress());
assertEquals(1, person.getAddresses().getAddress().size());
Address address = person.getAddresses().getAddress().get(0);
assertEquals(Visibility.PUBLIC, address.getVisibility());
assertEquals(Long.valueOf(1), address.getPutCode());
assertNotNull(address.getCountry());
assertEquals(Iso3166Country.US, address.getCountry().getValue());
assertNotNull(address.getCreatedDate());
assertNotNull(address.getCreatedDate().getValue());
assertEquals(2001, address.getCreatedDate().getValue().getYear());
assertEquals(12, address.getCreatedDate().getValue().getMonth());
assertEquals(31, address.getCreatedDate().getValue().getDay());
assertNotNull(address.getLastModifiedDate());
assertNotNull(address.getLastModifiedDate().getValue());
assertEquals(2001, address.getLastModifiedDate().getValue().getYear());
assertEquals(12, address.getLastModifiedDate().getValue().getMonth());
assertEquals(31, address.getLastModifiedDate().getValue().getDay());
assertNotNull(address.getSource());
assertEquals("8888-8888-8888-8880", address.getSource().retrieveSourcePath());
assertNotNull(person.getKeywords());
assertNotNull(person.getKeywords().getKeywords());
assertEquals(1, person.getKeywords().getKeywords().size());
Keyword keyword = person.getKeywords().getKeywords().get(0);
assertEquals(Visibility.PUBLIC, keyword.getVisibility());
assertEquals(Long.valueOf(1), keyword.getPutCode());
assertEquals("keyword1", keyword.getContent());
assertNotNull(keyword.getCreatedDate());
assertNotNull(keyword.getCreatedDate().getValue());
assertEquals(2001, keyword.getCreatedDate().getValue().getYear());
assertEquals(12, keyword.getCreatedDate().getValue().getMonth());
assertEquals(31, keyword.getCreatedDate().getValue().getDay());
assertNotNull(keyword.getLastModifiedDate());
assertNotNull(keyword.getLastModifiedDate().getValue());
assertEquals(2001, keyword.getLastModifiedDate().getValue().getYear());
assertEquals(12, keyword.getLastModifiedDate().getValue().getMonth());
assertEquals(31, keyword.getLastModifiedDate().getValue().getDay());
assertNotNull(keyword.getSource());
assertEquals("8888-8888-8888-8880", keyword.getSource().retrieveSourcePath());
assertNotNull(person.getExternalIdentifiers());
assertNotNull(person.getExternalIdentifiers().getExternalIdentifiers());
assertEquals(1, person.getExternalIdentifiers().getExternalIdentifiers().size());
PersonExternalIdentifier extId = person.getExternalIdentifiers().getExternalIdentifiers().get(0);
assertEquals(Visibility.PUBLIC, extId.getVisibility());
assertEquals(Long.valueOf(1), extId.getPutCode());
assertEquals("type-1", extId.getType());
assertEquals("value-1", extId.getValue());
assertNotNull(extId.getUrl());
assertEquals("http://url.com/1", extId.getUrl().getValue());
assertNotNull(extId.getCreatedDate());
assertNotNull(extId.getCreatedDate().getValue());
assertEquals(2001, extId.getCreatedDate().getValue().getYear());
assertEquals(12, extId.getCreatedDate().getValue().getMonth());
assertEquals(31, extId.getCreatedDate().getValue().getDay());
assertNotNull(extId.getLastModifiedDate());
assertNotNull(extId.getLastModifiedDate().getValue());
assertEquals(2001, extId.getLastModifiedDate().getValue().getYear());
assertEquals(12, extId.getLastModifiedDate().getValue().getMonth());
assertEquals(31, extId.getLastModifiedDate().getValue().getDay());
assertNotNull(extId.getSource());
assertEquals("8888-8888-8888-8880", extId.getSource().retrieveSourcePath());
}
use of org.orcid.jaxb.model.v3.dev1.record.Email in project ORCID-Source by ORCID.
the class ValidateV3_dev1SamplesTest method unmarshallFromPath.
private Object unmarshallFromPath(String path, Class<?> type, String schemaPath) throws SAXException, URISyntaxException {
try (Reader reader = new InputStreamReader(getClass().getResourceAsStream(path))) {
Object obj = unmarshall(reader, type, schemaPath);
Object result = null;
if (ResearcherUrls.class.equals(type)) {
result = (ResearcherUrls) obj;
} else if (ResearcherUrl.class.equals(type)) {
result = (ResearcherUrl) obj;
} else if (PersonalDetails.class.equals(type)) {
result = (PersonalDetails) obj;
} else if (PersonExternalIdentifier.class.equals(type)) {
result = (PersonExternalIdentifier) obj;
} else if (PersonExternalIdentifiers.class.equals(type)) {
result = (PersonExternalIdentifiers) obj;
} else if (Biography.class.equals(type)) {
result = (Biography) obj;
} else if (Name.class.equals(type)) {
result = (Name) obj;
} else if (CreditName.class.equals(type)) {
result = (CreditName) obj;
} else if (OtherName.class.equals(type)) {
result = (OtherName) obj;
} else if (OtherNames.class.equals(type)) {
result = (OtherNames) obj;
} else if (Keywords.class.equals(type)) {
result = (Keywords) obj;
} else if (Keyword.class.equals(type)) {
result = (Keyword) obj;
} else if (Addresses.class.equals(type)) {
result = (Addresses) obj;
} else if (Address.class.equals(type)) {
result = (Address) obj;
} else if (Emails.class.equals(type)) {
result = (Emails) obj;
} else if (Email.class.equals(type)) {
result = (Email) obj;
} else if (Person.class.equals(type)) {
result = (Person) obj;
} else if (Deprecated.class.equals(type)) {
result = (Deprecated) obj;
} else if (Preferences.class.equals(type)) {
result = (Preferences) obj;
} else if (History.class.equals(type)) {
result = (History) obj;
} else if (Record.class.equals(type)) {
result = (Record) obj;
} else if (ActivitiesSummary.class.equals(type)) {
result = (ActivitiesSummary) obj;
} else if (Works.class.equals(type)) {
result = (Works) obj;
} else if (Education.class.equals(type)) {
result = (Education) obj;
} else if (Educations.class.equals(type)) {
result = (Educations) obj;
} else if (Employment.class.equals(type)) {
result = (Employment) obj;
} else if (Employments.class.equals(type)) {
result = (Employments) obj;
} else if (Distinction.class.equals(type)) {
result = (Distinction) obj;
} else if (Distinctions.class.equals(type)) {
result = (Distinctions) obj;
} else if (InvitedPosition.class.equals(type)) {
result = (InvitedPosition) obj;
} else if (InvitedPositions.class.equals(type)) {
result = (InvitedPositions) obj;
} else if (Membership.class.equals(type)) {
result = (Membership) obj;
} else if (Memberships.class.equals(type)) {
result = (Memberships) obj;
} else if (Qualification.class.equals(type)) {
result = (Qualification) obj;
} else if (Qualifications.class.equals(type)) {
result = (Qualifications) obj;
} else if (Service.class.equals(type)) {
result = (Service) obj;
} else if (Services.class.equals(type)) {
result = (Services) obj;
}
return result;
} catch (IOException e) {
throw new RuntimeException("Error reading notification from classpath", e);
}
}
Aggregations