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 aChannelin method initAfterLoad() only if property 'notification.enabled' is set to true. TheNotificationManagerhandles 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.
-
-
Field Summary
Fields Modifier and Type Field Description protected AlarmManageralarmMgrstatic java.lang.StringCHANGESprotected Channelchannelstatic intDAILYprotected AlarmEntrydayAlarmEntrystatic java.lang.StringDELETIONSprotected AlarmEntryhourAlarmEntrystatic intHOURLYprotected AlarmEntryminuteAlarmEntrystatic intMINUTEDprotected AlarmEntrymonthAlarmEntrystatic intMONTHLYstatic intMUTATION_ALLstatic intMUTATION_CREATEDeprecated.static intMUTATION_MAJORstatic intMUTATION_PUBLISHstatic int[]MUTATION_TYPESprotected static java.lang.StringNOTIFICATION_FOLLOWED_TYPESprotected static java.lang.StringNOTIFICATION_FOLLOWED_TYPES_OFFstatic java.lang.String[]PERIOD_LABELSstatic int[]PERIODS_1static int[]PERIODS_2static java.lang.StringPUBCOUNTprotected intreinitVariable used to reinitialize the NotificationManager in case a PastDateException is thrown in initialization stage.static intUSE_CRITERIA_GROUP_AND_MEMBERstatic intUSE_CRITERIA_GROUP_ONLYstatic intUSE_CRITERIA_MEMBER_ONLYprotected AlarmEntryweekAlarmEntrystatic intWEEKLY-
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, DATA_DIRECTORY, 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_MINI, PHOTO_MINI_HEIGHT, PHOTO_MINI_PROP_PREFIX, PHOTO_MINI_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_DIR, 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 booleancanBeFollowed(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.ListgetFollowedTypeList(java.lang.String userLang)Returns the list of types that can be selected forNotificationCriteriaprotected static java.util.Collection<java.lang.Class<?>>getFollowedTypesOff()Returns the list of types that cannot be selected forNotificationCriteriaprotected static java.util.Collection<java.lang.Class<?>>getFollowedTypesOn()Returns the whitelist of exact types that can be selected forNotificationCriteriastatic 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:ContentandUserContentclasses.
Does NOT check white and blacklist.static java.lang.StringgetMutationTypeLabel(int mutationType)static NotificationCriteria[]getNotificationCriteria(Member member)static java.lang.StringgetNotificationMailSubject(Member mbr)static java.util.Map<java.lang.String,java.lang.String>getNotificationOriginMap(Member member)Compute origin of eachNotificationCriteriaof given Member.static java.lang.StringgetPeriodLabel(int period)Retrieve the property used to retrieve label of the specified period.static java.lang.String[]getPeriodLabels()voidinit()static booleanisDefault(Notification notification)Tell if the given notification is equivalent to no notification at all.static booleanisDefault(NotificationCriteria[] criterias, int selectionCriteriaMode)static booleanisSameCriteria(NotificationCriteria[] criterias1, NotificationCriteria[] criterias2)Compares two arrays of NotificationCriteriastatic booleanisSameCriteria(NotificationCriteria criteria1, NotificationCriteria criteria2)Compares two NotificationCriteriavoidprocessNotification(int period)Launches a thread that notifies all members who have requested to be alerted of specific changes at each period.
-
-
-
Field Detail
-
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.DeprecatedUse 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:ContentandUserContentclasses.
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 eachNotificationCriteriaof 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
-
-