package org.jblooming.messaging; import org.jblooming.agenda.CompanyCalendar; import org.jblooming.waf.view.PageState; import org.jblooming.waf.view.PageSeed; import org.jblooming.waf.constants.Fields; import org.jblooming.utilities.StringUtilities; import java.io.Serializable; import java.util.*; /** * This should work as follows: * if something happens, and there is a ready listener for that something, * a message is created and enqued to be sent. * <p/> * An example is: you subscribe "changes on task" * <p/> * A message may be enqueued also directly e.g. when the user wants to send it, * and it may be enqueued in several media at the same time. */ public class MessagingSystem implements Serializable { public static int NUMBER_OF_ATTEMPTS = 10; public static long DELAY_BETWEEN_ATTEMPTS = CompanyCalendar.MILLIS_IN_MINUTE * 10; public static final String TIMER_EVENT = "TIMER_EVENT"; public static String mediaSubscribed(String prefix, PageSeed pageSeed) { String mediaSubscribed = ""; for (Media media : activeMedia) { if (pageSeed.getEntry(prefix + media.toString()).checkFieldValue()) { mediaSubscribed = mediaSubscribed + (mediaSubscribed.length() > 0 ? "," : "") + media.toString(); } } return mediaSubscribed; } public static void makeMedias(String medias, String entryPrefix, PageState pageState) { if (medias != null) { List<String> mediasL = StringUtilities.splitToList(medias, ","); for (String media : mediasL) { pageState.addClientEntry(entryPrefix + media, Fields.TRUE); } } } public static List<Media> mediaSubscribedList(String prefix, PageState pageState) { List<Media> mediaSubscribed = new ArrayList(); for (Media media : activeMedia) { if (pageState.getEntry(prefix + media.toString()).checkFieldValue()) { mediaSubscribed.add(media); } } return mediaSubscribed; } public enum Media { STICKY, EMAIL, SMS, IM, NEWS, BLOG, RSS, DIGEST, TWITTER } public static List<Media> activeMedia = new ArrayList(); }