public ChiefControllerMessageEvent() { this(Event.CHANGED_EVENT.getCommand()); }
/** * One can send a message to the ChiefControllers which appears on top. Typically this is used for * setting maintenance messages, such as <i>system is going down in 10 minutes</i>. * * <p>A ChiefController per se is not listening to such events. It must implement <code> * GenericEventListener</code> and add itself to the channel which can be found in the <code> * ChiefControllerFactory</code>. * * @see org.olat.core.util.event.MultiUserEvent * @see org.olat.core.util.event.OLATResourceableEventCenter * @see org.olat.core.commons.chiefcontrollers.ChiefControllerFactory * <p>Initial Date: 13.06.2006 <br> * @author patrickb */ public class ChiefControllerMessageEvent extends MultiUserEvent { private static final long serialVersionUID = -2235582801661115222L; /** indicates removing clearing of maintenance message */ public static final ChiefControllerMessageEvent CLEAR = new ChiefControllerMessageEvent("CLR"); /** */ public static final String CHANGED_EVENT_CMD = Event.CHANGED_EVENT.getCommand(); private String msg; // by default messages are show on all nodes in the cluster private boolean clusterWideMessage = true; public ChiefControllerMessageEvent() { this(Event.CHANGED_EVENT.getCommand()); } /** @param command */ private ChiefControllerMessageEvent(String command) { super(command); msg = null; } /** @return */ public String getMsg() { return msg; } /** @param msg */ public void setMsg(String msg) { this.msg = msg; } public String toString() { return "msg:" + msg + "|" + super.toString(); } /** @see java.lang.Object#equals(java.lang.Object) */ public boolean equals(Object event) { if (event != null && event instanceof ChiefControllerMessageEvent) { ChiefControllerMessageEvent other = (ChiefControllerMessageEvent) event; boolean sameCommand = other.getCommand().equals(this.getCommand()); String othersMsg = other.getMsg(); boolean sameMsg = ((msg == null && othersMsg == null)); // case for CLEAR sameMsg = sameMsg || (msg != null && msg.equals(othersMsg)); // some msg compared to CLEAR or others sameMsg = sameMsg || (othersMsg != null && othersMsg.equals(msg)); // CLEAR compared to other msg boolean sameClusterWide = clusterWideMessage == other.isClusterWideMessage(); return sameCommand && sameMsg && sameClusterWide; } return false; } /** @return */ public boolean isClusterWideMessage() { return clusterWideMessage; } /** @param clusterWideMessage */ public void setClusterWideMessage(boolean clusterWideMessage) { this.clusterWideMessage = clusterWideMessage; } @Override public int hashCode() { int hc = 5; int hcMul = 7; hc = hc * hcMul + (clusterWideMessage ? 0 : 1); hc = hc * hcMul + (msg == null ? 0 : msg.hashCode()); return hc * hcMul + super.hashCode(); } }