Package com.jalios.jcms
Class NotificationManager
- java.lang.Object
-
- com.jalios.jcms.NotificationManager
-
- All Implemented Interfaces:
JcmsConstants
,JaliosConstants
public class NotificationManager extends java.lang.Object implements JcmsConstants
This class is instantiated by aChannel
in method initAfterLoad() only if property 'notification.enabled' is set to true. TheNotificationManager
handles 4 alarms, one per hour, one per day, one per week, one per month. A single AlarmManager listens to these alarms and launches notifications threads (@see NotificationThread) each time an alarm is fired. CAUTION: NotificationThread checks the server is not 127.0.0.1 nor localhost, to avoid emails being sent by mistake while staging.- Version:
- $Revision: 136308 $
-
-
Field Summary
Fields Modifier and Type Field Description protected AlarmManager
alarmMgr
static java.lang.String
CHANGES
protected Channel
channel
static int
DAILY
protected AlarmEntry
dayAlarmEntry
static java.lang.String
DELETIONS
protected AlarmEntry
hourAlarmEntry
static int
HOURLY
protected AlarmEntry
minuteAlarmEntry
static int
MINUTED
protected AlarmEntry
monthAlarmEntry
static int
MONTHLY
static int
MUTATION_ALL
static int
MUTATION_CREATE
Deprecated.static int
MUTATION_MAJOR
static int
MUTATION_PUBLISH
static int[]
MUTATION_TYPES
protected static java.lang.String
NOTIFICATION_FOLLOWED_TYPES
protected static java.lang.String
NOTIFICATION_FOLLOWED_TYPES_OFF
static java.lang.String[]
PERIOD_LABELS
static int[]
PERIODS_1
static int[]
PERIODS_2
static java.lang.String
PUBCOUNT
protected int
reinit
Variable used to reinitialize the NotificationManager in case a PastDateException is thrown in initialization stage.static java.lang.String
REVISION
static int
USE_CRITERIA_GROUP_AND_MEMBER
static int
USE_CRITERIA_GROUP_ONLY
static int
USE_CRITERIA_MEMBER_ONLY
protected AlarmEntry
weekAlarmEntry
static int
WEEKLY
-
Fields inherited from interface com.jalios.util.JaliosConstants
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR
-
Fields inherited from interface com.jalios.jcms.JcmsConstants
ADATE_SEARCH, ADMIN_NOTES_PROP, ADVANCED_TAB, AJAX_MODE_ATTR, ARCHIVES_DIR, ASCII_WIDTH, CATEGORY_TAB, CDATE_SEARCH, CLASS_PROPERTY, COMMON_ALARM, CONTENT_TAB, COOKIE_MAX_AGE, COUNTRY_SPRITE, CS_TYPOLOGY_ROOT_CAT_VID, CTRL_TOPIC_INTERNAL, CTRL_TOPIC_REF, CTRL_TOPIC_VALUE, CTRL_TOPIC_WRITE, CUSTOM_PROP, DEFAULT_PHOTO_PROP, DOCCHOOSER_HEIGHT, DOCCHOOSER_WIDTH, DOCS_DIR, EDATE_SEARCH, EMAIL_REGEXP, ERROR_MSG, FORBIDDEN_FILE_ACCESS, FORBIDDEN_REDIRECT, FORCE_REDIRECT, GLYPH_ICON_PREFIX, ICON_ARCHIVE, ICON_ICON_PREFIX, ICON_LOCK, ICON_LOCK_STRONG, ICON_PREFIX_PROP, ICON_WARN, ICON_WH_BOOK_CLOSED, ICON_WH_BOOK_OPEN, INFORMATION_MSG, IS_IN_FRONT_OFFICE, JALIOS_JUNIT_PROP, JCMS_CADDY, JCMS_MSG_LIST, JCMS_TOASTR_COLLECTION, JSYNC_DOWNLOAD_DIR, JSYNC_SYNC_ALARM, LANG_SPRITE, LOG_FILE, LOG_TOPIC_SECURITY, LOGGER_PROP, LOGGER_XMLPROP, MBR_PHOTO_DIR, MDATE_SEARCH, MONITOR_XML, OP_CREATE, OP_CREATE_STR, OP_DEEP_COPY, OP_DEEP_COPY_STR, OP_DEEP_DELETE, OP_DEEP_DELETE_STR, OP_DELETE, OP_DELETE_STR, OP_MERGE, OP_MERGE_STR, OP_UPDATE, OP_UPDATE_STR, ORGANIZATION_ROOT_GROUP_PROP, PDATE_SEARCH, PHOTO_DIR, PHOTO_ICON, PHOTO_ICON_HEIGHT, PHOTO_ICON_PROP_PREFIX, PHOTO_ICON_WIDTH, PHOTO_LARGE, PHOTO_LARGE_HEIGHT, PHOTO_LARGE_PROP_PREFIX, PHOTO_LARGE_WIDTH, PHOTO_NORMAL, PHOTO_NORMAL_HEIGHT, PHOTO_NORMAL_PROP_PREFIX, PHOTO_NORMAL_WIDTH, PHOTO_SMALL, PHOTO_SMALL_HEIGHT, PHOTO_SMALL_PROP_PREFIX, PHOTO_SMALL_WIDTH, PHOTO_TINY, PHOTO_TINY_HEIGHT, PHOTO_TINY_PROP_PREFIX, PHOTO_TINY_WIDTH, PREVIOUS_TAB, PRINT_VIEW, PRIVATE_FILE_ACCESS, PUBLIC_FILE_ACCESS, RAW_CONTENT_ICON_PREFIX, READ_RIGHT_TAB, SDATE_SEARCH, SEARCHENGINE_ALARM, SECURITY_LOG_FILE, SESSION_AUTHORIZED_FILENAMES_SET, SPRITE_ICON_PREFIX, STATS_REPORT_DIR, STATUS_PROP, STORE_XML, SUCCESS_MSG, SVG_ICON_PREFIX, SVGINLINE_ICON_PREFIX, TEMPLATE_TAB, THUMBNAIL_LARGE_HEIGHT, THUMBNAIL_LARGE_WIDTH, THUMBNAIL_SMALL_HEIGHT, THUMBNAIL_SMALL_WIDTH, TTCARD_MEDIA_HEIGHT, TTCARD_MEDIA_WIDTH, TYPES_ICON_ALT_PROP, TYPES_ICON_SUFFIX_PROP, TYPES_ICON_TITLE_PROP, TYPES_PREFIX_PROP, TYPES_THUMB_SUFFIX_PROP, UDATE_SEARCH, UPDATE_RIGHT_TAB, UPLOAD_DIR, UPLOAD_PERMISSION_COUNT_PROP_PREFIX, UPLOAD_PERMISSION_SIZE_PROP_PREFIX, URL_REGEXP, VID_LOGGED_MEMBER, WARNING_MSG, WEBAPP_PROP, WFEXPRESS_ALARM, WFREMINDER_ALARM, WORKFLOW_TAB, WORKFLOW_XML
-
-
Constructor Summary
Constructors Constructor Description NotificationManager()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static boolean
canBeFollowed(java.lang.Class<?> clazz)
Return true if given class can be followed.
It can be followed: if it is a Content, or a UserContent.static int[]
getAvailableMutationTypes()
static int[]
getAvailablePeriods()
static java.util.List
getFollowedTypeList(java.lang.String userLang)
Returns the list of types that can be selected forNotificationCriteria
protected static java.util.Collection<java.lang.Class<?>>
getFollowedTypesOff()
Returns the list of types that cannot be selected forNotificationCriteria
protected static java.util.Collection<java.lang.Class<?>>
getFollowedTypesOn()
Returns the whitelist of exact types that can be selected forNotificationCriteria
static java.util.Set<NotificationCriteria>
getGroupsCriteriaSet(Member member)
protected static java.util.Collection<java.lang.Class<? extends Publication>>
getInternalQueryHandlerDefaultFollowedTypes()
Returns the list of default root types to use for QueryHandler when user did not select any type to follow.
By default:Content
andUserContent
classes.
Does NOT check white and blacklist.static java.lang.String
getMutationTypeLabel(int mutationType)
static NotificationCriteria[]
getNotificationCriteria(Member member)
static java.lang.String
getNotificationMailSubject(Member mbr)
static java.util.Map<java.lang.String,java.lang.String>
getNotificationOriginMap(Member member)
Compute origin of eachNotificationCriteria
of given Member.static java.lang.String
getPeriodLabel(int period)
Retrieve the property used to retrieve label of the specified period.static java.lang.String[]
getPeriodLabels()
void
init()
static boolean
isDefault(Notification notification)
Tell if the given notification is equivalent to no notification at all.static boolean
isDefault(NotificationCriteria[] criterias, int selectionCriteriaMode)
static boolean
isSameCriteria(NotificationCriteria[] criterias1, NotificationCriteria[] criterias2)
Compares two arrays of NotificationCriteriastatic boolean
isSameCriteria(NotificationCriteria criteria1, NotificationCriteria criteria2)
Compares two NotificationCriteriavoid
processNotification(int period)
Launches a thread that notifies all members who have requested to be alerted of specific changes at each period.
-
-
-
Field Detail
-
REVISION
public static final java.lang.String REVISION
- See Also:
- Constant Field Values
-
NOTIFICATION_FOLLOWED_TYPES
protected static final java.lang.String NOTIFICATION_FOLLOWED_TYPES
- See Also:
- Constant Field Values
-
NOTIFICATION_FOLLOWED_TYPES_OFF
protected static final java.lang.String NOTIFICATION_FOLLOWED_TYPES_OFF
- See Also:
- Constant Field Values
-
alarmMgr
protected AlarmManager alarmMgr
-
channel
protected Channel channel
-
USE_CRITERIA_GROUP_AND_MEMBER
public static final int USE_CRITERIA_GROUP_AND_MEMBER
- See Also:
- Constant Field Values
-
USE_CRITERIA_MEMBER_ONLY
public static final int USE_CRITERIA_MEMBER_ONLY
- See Also:
- Constant Field Values
-
USE_CRITERIA_GROUP_ONLY
public static final int USE_CRITERIA_GROUP_ONLY
- See Also:
- Constant Field Values
-
HOURLY
public static final int HOURLY
- See Also:
- Constant Field Values
-
DAILY
public static final int DAILY
- See Also:
- Constant Field Values
-
WEEKLY
public static final int WEEKLY
- See Also:
- Constant Field Values
-
MONTHLY
public static final int MONTHLY
- See Also:
- Constant Field Values
-
MINUTED
public static final int MINUTED
- See Also:
- Constant Field Values
-
PERIODS_1
public static final int[] PERIODS_1
-
PERIODS_2
public static final int[] PERIODS_2
-
MUTATION_CREATE
@Deprecated public static final int MUTATION_CREATE
Deprecated.Deprecated
Use insteadMUTATION_PUBLISH
- See Also:
- Constant Field Values
-
MUTATION_PUBLISH
public static final int MUTATION_PUBLISH
- See Also:
- Constant Field Values
-
MUTATION_MAJOR
public static final int MUTATION_MAJOR
- See Also:
- Constant Field Values
-
MUTATION_ALL
public static final int MUTATION_ALL
- See Also:
- Constant Field Values
-
MUTATION_TYPES
public static final int[] MUTATION_TYPES
-
PERIOD_LABELS
public static final java.lang.String[] PERIOD_LABELS
-
CHANGES
public static final java.lang.String CHANGES
- See Also:
- Constant Field Values
-
DELETIONS
public static final java.lang.String DELETIONS
- See Also:
- Constant Field Values
-
PUBCOUNT
public static final java.lang.String PUBCOUNT
- See Also:
- Constant Field Values
-
reinit
protected int reinit
Variable used to reinitialize the NotificationManager in case a PastDateException is thrown in initialization stage.
-
minuteAlarmEntry
protected AlarmEntry minuteAlarmEntry
-
hourAlarmEntry
protected AlarmEntry hourAlarmEntry
-
dayAlarmEntry
protected AlarmEntry dayAlarmEntry
-
weekAlarmEntry
protected AlarmEntry weekAlarmEntry
-
monthAlarmEntry
protected AlarmEntry monthAlarmEntry
-
-
Method Detail
-
init
public void init()
-
processNotification
public void processNotification(int period)
Launches a thread that notifies all members who have requested to be alerted of specific changes at each period.- Parameters:
period
- The period type
-
getAvailablePeriods
public static int[] getAvailablePeriods()
-
getAvailableMutationTypes
public static int[] getAvailableMutationTypes()
-
getPeriodLabels
public static java.lang.String[] getPeriodLabels()
-
getPeriodLabel
public static java.lang.String getPeriodLabel(int period)
Retrieve the property used to retrieve label of the specified period.
-
getMutationTypeLabel
public static java.lang.String getMutationTypeLabel(int mutationType)
-
getNotificationCriteria
public static NotificationCriteria[] getNotificationCriteria(Member member)
-
getGroupsCriteriaSet
public static java.util.Set<NotificationCriteria> getGroupsCriteriaSet(Member member)
-
isDefault
public static boolean isDefault(Notification notification)
Tell if the given notification is equivalent to no notification at all.- Parameters:
notification
- the notification- Returns:
- true is notification is equivalent to no notification at all.
- Since:
- JCMS-5.7.5
-
isDefault
public static boolean isDefault(NotificationCriteria[] criterias, int selectionCriteriaMode)
-
isSameCriteria
public static boolean isSameCriteria(NotificationCriteria[] criterias1, NotificationCriteria[] criterias2)
Compares two arrays of NotificationCriteria- Parameters:
criterias1
- the first array of NotificationCriteriacriterias2
- the second array of NotificationCriteria- Returns:
- true if they can be considered as equivalent
- Since:
- JCMS-5.7.5
-
isSameCriteria
public static boolean isSameCriteria(NotificationCriteria criteria1, NotificationCriteria criteria2)
Compares two NotificationCriteria- Parameters:
criteria1
- the first NotificationCriteriacriteria2
- the second NotificationCriteria- Returns:
- true if they can be considered as equivalent
- Since:
- JCMS-5.7.5
-
getNotificationMailSubject
public static java.lang.String getNotificationMailSubject(Member mbr)
- Parameters:
mbr
- the recipient Member- Returns:
- the subject for given Member
- Since:
- jcms-8.0.0
-
getFollowedTypeList
public static java.util.List getFollowedTypeList(java.lang.String userLang)
Returns the list of types that can be selected forNotificationCriteria
- Parameters:
userLang
- the userLang (to sort types)- Returns:
- the list of types that can be selected for
NotificationCriteria
- Since:
- jcms-8.0.0
-
getFollowedTypesOn
protected static java.util.Collection<java.lang.Class<?>> getFollowedTypesOn()
Returns the whitelist of exact types that can be selected forNotificationCriteria
- Returns:
- the whitelist of exact types that can be selected for
NotificationCriteria
- Since:
- jcms-10.0.1
-
getFollowedTypesOff
protected static java.util.Collection<java.lang.Class<?>> getFollowedTypesOff()
Returns the list of types that cannot be selected forNotificationCriteria
- Returns:
- the list of types that cannot be selected for
NotificationCriteria
- Since:
- jcms-10.0.1
-
getInternalQueryHandlerDefaultFollowedTypes
protected static java.util.Collection<java.lang.Class<? extends Publication>> getInternalQueryHandlerDefaultFollowedTypes()
Returns the list of default root types to use for QueryHandler when user did not select any type to follow.
By default:Content
andUserContent
classes.
Does NOT check white and blacklist.Internal method to prevent a stackOverflow.
- Returns:
- the list of default types to use for QueryHandler when user did not select any type to follow.
- Since:
- jcms-10.0.1
-
canBeFollowed
protected static boolean canBeFollowed(java.lang.Class<?> clazz)
Return true if given class can be followed.
It can be followed:- if it is a Content, or a UserContent.
-
And:
- if either followed whitelist is empty
- else, if given clazz is in white list, or if a super clazz of given clazz is in white list
- and given exact clazz is not blacklisted.
- Parameters:
clazz
- the clazz to test- Returns:
- true if given clazz matches followable types rules.
- Since:
- jcms-10.0.1
-
getNotificationOriginMap
public static java.util.Map<java.lang.String,java.lang.String> getNotificationOriginMap(Member member)
Compute origin of eachNotificationCriteria
of given Member.NotificationCriteria
's origin can be either the member itself, or a group the member belongs to.- Parameters:
member
- the member to compute origin of its notification- Returns:
- a map with notificationCriteria's id as key, and member's id or group's id as value.
- Since:
- jcms-9.0.3
-
-