From f7b9b4995a30014d929c24626345ffa5eddbc679 Mon Sep 17 00:00:00 2001 From: Mike McKay <mfmckay@wustl.edu> Date: Thu, 26 May 2016 20:00:16 -0500 Subject: [PATCH] Got changes to email prefix and admin email to take effect. Added support for preference change event handlers for notifications events and for handlers that can handle both notifications and site config events. --- .../NotificationsPreferenceHandler.java | 32 +++++++++++ ...tNotificationsPreferenceHandlerMethod.java | 15 +++++ ...gNotificationsPreferenceHandlerMethod.java | 16 ++++++ ...ractSiteConfigPreferenceHandlerMethod.java | 9 ++- .../InactivityBeforeLockoutHandlerMethod.java | 2 +- .../listeners/methods/MailHandlerMethod.java | 56 +++++++++++++++++++ .../ResetFailedLoginsHandlerMethod.java | 2 +- 7 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/nrg/xnat/event/listeners/NotificationsPreferenceHandler.java create mode 100644 src/main/java/org/nrg/xnat/event/listeners/methods/AbstractNotificationsPreferenceHandlerMethod.java create mode 100644 src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigNotificationsPreferenceHandlerMethod.java create mode 100644 src/main/java/org/nrg/xnat/event/listeners/methods/MailHandlerMethod.java diff --git a/src/main/java/org/nrg/xnat/event/listeners/NotificationsPreferenceHandler.java b/src/main/java/org/nrg/xnat/event/listeners/NotificationsPreferenceHandler.java new file mode 100644 index 00000000..c24b1eb0 --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/NotificationsPreferenceHandler.java @@ -0,0 +1,32 @@ +package org.nrg.xnat.event.listeners; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nrg.prefs.events.AbstractPreferenceHandler; +import org.nrg.xdat.preferences.NotificationsPreferences; +import org.nrg.xdat.preferences.PreferenceEvent; +import org.nrg.xdat.preferences.SiteConfigPreferences; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import reactor.bus.EventBus; + +import javax.inject.Inject; + +@Service +public class NotificationsPreferenceHandler extends AbstractPreferenceHandler<PreferenceEvent> { + + @Inject + public NotificationsPreferenceHandler(final EventBus eventBus){ + super(NotificationsPreferences.NOTIFICATIONS_TOOL_ID, eventBus); + } + + @Autowired + @Lazy + private JdbcTemplate _template; + + private static final Log _log = LogFactory.getLog(NotificationsPreferenceHandler.class); + + +} diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractNotificationsPreferenceHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractNotificationsPreferenceHandlerMethod.java new file mode 100644 index 00000000..5b2c2547 --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractNotificationsPreferenceHandlerMethod.java @@ -0,0 +1,15 @@ +package org.nrg.xnat.event.listeners.methods; + +import org.nrg.prefs.events.PreferenceHandlerMethod; +import org.nrg.xdat.preferences.NotificationsPreferences; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public abstract class AbstractNotificationsPreferenceHandlerMethod implements PreferenceHandlerMethod { + @Override + public List<String> getToolIds() { + return new ArrayList<String>(Arrays.asList(NotificationsPreferences.NOTIFICATIONS_TOOL_ID)); + } +} diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigNotificationsPreferenceHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigNotificationsPreferenceHandlerMethod.java new file mode 100644 index 00000000..f79800ee --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigNotificationsPreferenceHandlerMethod.java @@ -0,0 +1,16 @@ +package org.nrg.xnat.event.listeners.methods; + +import org.nrg.prefs.events.PreferenceHandlerMethod; +import org.nrg.xdat.preferences.NotificationsPreferences; +import org.nrg.xdat.preferences.SiteConfigPreferences; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public abstract class AbstractSiteConfigNotificationsPreferenceHandlerMethod implements PreferenceHandlerMethod { + @Override + public List<String> getToolIds() { + return new ArrayList<String>(Arrays.asList(NotificationsPreferences.NOTIFICATIONS_TOOL_ID, SiteConfigPreferences.SITE_CONFIG_TOOL_ID)); + } +} diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigPreferenceHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigPreferenceHandlerMethod.java index 43c7ef72..31dd51bc 100644 --- a/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigPreferenceHandlerMethod.java +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/AbstractSiteConfigPreferenceHandlerMethod.java @@ -1,11 +1,16 @@ package org.nrg.xnat.event.listeners.methods; import org.nrg.prefs.events.PreferenceHandlerMethod; +import org.nrg.xdat.preferences.NotificationsPreferences; import org.nrg.xdat.preferences.SiteConfigPreferences; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public abstract class AbstractSiteConfigPreferenceHandlerMethod implements PreferenceHandlerMethod { @Override - public String getToolId() { - return SiteConfigPreferences.SITE_CONFIG_TOOL_ID; + public List<String> getToolIds() { + return new ArrayList<String>(Arrays.asList(SiteConfigPreferences.SITE_CONFIG_TOOL_ID)); } } diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/InactivityBeforeLockoutHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/InactivityBeforeLockoutHandlerMethod.java index 7f81283b..da904a6f 100644 --- a/src/main/java/org/nrg/xnat/event/listeners/methods/InactivityBeforeLockoutHandlerMethod.java +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/InactivityBeforeLockoutHandlerMethod.java @@ -54,7 +54,7 @@ public class InactivityBeforeLockoutHandlerMethod extends AbstractSiteConfigPref } private static final Logger _log = LoggerFactory.getLogger(InactivityBeforeLockoutHandlerMethod.class); - private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("aliasTokenTimeout", "aliasTokenTimeoutSchedule")); + private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("inactivityBeforeLockout", "inactivityBeforeLockoutSchedule")); @Autowired @Lazy diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/MailHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/MailHandlerMethod.java new file mode 100644 index 00000000..37ad76ae --- /dev/null +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/MailHandlerMethod.java @@ -0,0 +1,56 @@ +package org.nrg.xnat.event.listeners.methods; + +import com.google.common.collect.ImmutableList; +import org.nrg.notify.renderers.NrgMailChannelRenderer; +import org.nrg.xdat.XDAT; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Component +public class MailHandlerMethod extends AbstractSiteConfigNotificationsPreferenceHandlerMethod { + @Override + public List<String> getHandledPreferences() { + return PREFERENCES; + } + + @Override + public void handlePreferences(final Map<String, String> values) { + if (!Collections.disjoint(PREFERENCES, values.keySet())) { + updateMail(); + } + } + + @Override + public void handlePreference(final String preference, final String value) { + if(PREFERENCES.contains(preference)){ + updateMail(); + } + } + + private void updateMail(){ + try { + XDAT.getContextService().getBean(NrgMailChannelRenderer.class).setFromAddress(XDAT.getSiteConfigPreferences().getAdminEmail()); + XDAT.getContextService().getBean(NrgMailChannelRenderer.class).setSubjectPrefix(XDAT.getNotificationsPreferences().getEmailPrefix()); + + } catch (Exception e1) { + _log.error("", e1); + } + } + + private static final Logger _log = LoggerFactory.getLogger(MailHandlerMethod.class); + private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("emailPrefix", "adminEmail")); + + @Autowired + @Lazy + private JdbcTemplate _template; + +} diff --git a/src/main/java/org/nrg/xnat/event/listeners/methods/ResetFailedLoginsHandlerMethod.java b/src/main/java/org/nrg/xnat/event/listeners/methods/ResetFailedLoginsHandlerMethod.java index 1460e841..ad0cb875 100644 --- a/src/main/java/org/nrg/xnat/event/listeners/methods/ResetFailedLoginsHandlerMethod.java +++ b/src/main/java/org/nrg/xnat/event/listeners/methods/ResetFailedLoginsHandlerMethod.java @@ -53,7 +53,7 @@ public class ResetFailedLoginsHandlerMethod extends AbstractSiteConfigPreference } private static final Logger _log = LoggerFactory.getLogger(ResetFailedLoginsHandlerMethod.class); - private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("aliasTokenTimeout", "aliasTokenTimeoutSchedule")); + private static final List<String> PREFERENCES = ImmutableList.copyOf(Arrays.asList("maxFailedLoginsLockoutDuration", "resetFailedLoginsSchedule")); @Autowired @Lazy -- GitLab