diff --git a/src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java index 92d1867de53..5f37aeee11c 100644 --- a/src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/MailServiceBean.java @@ -187,7 +187,8 @@ public Boolean sendNotificationEmail(UserNotification notification){ Object objectOfNotification = getObjectOfNotification(notification); if (objectOfNotification != null){ String messageText = getMessageTextBasedOnNotification(notification, objectOfNotification); - String subjectText = getSubjectTextBasedOnNotification(notification); + String rootDataverseName = dataverseService.findRootDataverse().getName(); + String subjectText = MailUtil.getSubjectTextBasedOnNotification(notification, rootDataverseName); if (!(messageText.isEmpty() || subjectText.isEmpty())){ retval = sendSystemEmail(emailAddress, subjectText, messageText); } else { @@ -201,46 +202,7 @@ public Boolean sendNotificationEmail(UserNotification notification){ } return retval; } - - private String getSubjectTextBasedOnNotification(UserNotification userNotification) { - String rootDataverseName = dataverseService.findRootDataverse().getName(); - switch (userNotification.getType()) { - case ASSIGNROLE: - return ResourceBundle.getBundle("Bundle").getString("notification.email.assign.role.subject"); - case REVOKEROLE: - return ResourceBundle.getBundle("Bundle").getString("notification.email.revoke.role.subject"); - case CREATEDV: - return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataverse.subject"); - case REQUESTFILEACCESS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.request.file.access.subject"); - case GRANTFILEACCESS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.grant.file.access.subject"); - case REJECTFILEACCESS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.rejected.file.access.subject"); - case MAPLAYERUPDATED: - return ResourceBundle.getBundle("Bundle").getString("notification.email.update.maplayer"); - case MAPLAYERDELETEFAILED: - return ResourceBundle.getBundle("Bundle").getString("notification.email.maplayer.deletefailed.subject"); - case CREATEDS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataset.subject"); - case SUBMITTEDDS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.submit.dataset.subject"); - case PUBLISHEDDS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.publish.dataset.subject"); - case RETURNEDDS: - return ResourceBundle.getBundle("Bundle").getString("notification.email.returned.dataset.subject"); - case CREATEACC: - return BundleUtil.getStringFromBundle("notification.email.create.account.subject", Arrays.asList(BrandingUtil.getInstallationBrandName(rootDataverseName))); - case CHECKSUMFAIL: - return ResourceBundle.getBundle("Bundle").getString("notification.email.checksumfail.subject"); - case FILESYSTEMIMPORT: - return ResourceBundle.getBundle("Bundle").getString("notification.email.import.filesystem.subject"); - case CHECKSUMIMPORT: - return ResourceBundle.getBundle("Bundle").getString("notification.email.import.checksum.subject"); - } - return ""; - } - + private String getDatasetManageFileAccessLink(DataFile datafile){ return systemConfig.getDataverseSiteUrl() + "/permissions-manage-files.xhtml?id=" + datafile.getOwner().getId(); } diff --git a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java index 4b318cd7fe4..cda04bdbd5d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/MailUtil.java @@ -1,6 +1,10 @@ package edu.harvard.iq.dataverse.util; +import edu.harvard.iq.dataverse.UserNotification; +import edu.harvard.iq.dataverse.branding.BrandingUtil; import static edu.harvard.iq.dataverse.settings.SettingsServiceBean.Key.SystemEmail; +import java.util.Arrays; +import java.util.ResourceBundle; import java.util.logging.Logger; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; @@ -23,4 +27,43 @@ public static InternetAddress parseSystemAddress(String systemEmail) { logger.fine("Email will not be sent because the " + SystemEmail + " setting is null."); return null; } + + public static String getSubjectTextBasedOnNotification(UserNotification userNotification, String rootDataverseName) { + switch (userNotification.getType()) { + case ASSIGNROLE: + return ResourceBundle.getBundle("Bundle").getString("notification.email.assign.role.subject"); + case REVOKEROLE: + return ResourceBundle.getBundle("Bundle").getString("notification.email.revoke.role.subject"); + case CREATEDV: + return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataverse.subject"); + case REQUESTFILEACCESS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.request.file.access.subject"); + case GRANTFILEACCESS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.grant.file.access.subject"); + case REJECTFILEACCESS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.rejected.file.access.subject"); + case MAPLAYERUPDATED: + return ResourceBundle.getBundle("Bundle").getString("notification.email.update.maplayer"); + case MAPLAYERDELETEFAILED: + return ResourceBundle.getBundle("Bundle").getString("notification.email.maplayer.deletefailed.subject"); + case CREATEDS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.create.dataset.subject"); + case SUBMITTEDDS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.submit.dataset.subject"); + case PUBLISHEDDS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.publish.dataset.subject"); + case RETURNEDDS: + return ResourceBundle.getBundle("Bundle").getString("notification.email.returned.dataset.subject"); + case CREATEACC: + return BundleUtil.getStringFromBundle("notification.email.create.account.subject", Arrays.asList(BrandingUtil.getInstallationBrandName(rootDataverseName))); + case CHECKSUMFAIL: + return ResourceBundle.getBundle("Bundle").getString("notification.email.checksumfail.subject"); + case FILESYSTEMIMPORT: + return ResourceBundle.getBundle("Bundle").getString("notification.email.import.filesystem.subject"); + case CHECKSUMIMPORT: + return ResourceBundle.getBundle("Bundle").getString("notification.email.import.checksum.subject"); + } + return ""; + } + } diff --git a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java index 4f8d0534d01..9ca58453785 100644 --- a/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/util/MailUtilTest.java @@ -1,10 +1,21 @@ package edu.harvard.iq.dataverse.util; -import org.junit.Test; +import edu.harvard.iq.dataverse.UserNotification; import static org.junit.Assert.assertEquals; +import org.junit.Test; +import org.junit.Before; public class MailUtilTest { + private String rootDataverseName; + UserNotification userNotification = new UserNotification(); + + @Before + public void setUp() { + rootDataverseName = "LibraScholar"; + userNotification = new UserNotification(); + } + @Test public void testParseSystemAddress() { assertEquals("support@dataverse.org", MailUtil.parseSystemAddress("support@dataverse.org").getAddress()); @@ -19,4 +30,17 @@ public void testParseSystemAddress() { assertEquals(null, MailUtil.parseSystemAddress("support1@dataverse.org, support2@dataverse.org")); } + @Test + public void testSubjectCreateAccount() { + userNotification.setType(UserNotification.Type.CREATEACC); + assertEquals("LibraScholar: Your account has been created", MailUtil.getSubjectTextBasedOnNotification(userNotification, rootDataverseName)); + } + + @Test + public void testSubjectAssignRole() { + userNotification.setType(UserNotification.Type.ASSIGNROLE); + // FIXME: Instead of "Dataverse:" it should be "LibraScholar:" + assertEquals("Dataverse: You have been assigned a role", MailUtil.getSubjectTextBasedOnNotification(userNotification, rootDataverseName)); + } + }