/* * Licensed Materials - Property of Rogue Wave Software, Inc. * © Copyright Rogue Wave Software, Inc. 2014, 2015 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package action; import ilog.tgo.model.IltAlarm; import ilog.tgo.model.IltObjectState; import ilog.cpl.model.IlpAttribute; import ilog.cpl.model.IlpRepresentationObject; import ilog.views.faces.dhtml.IlvDHTMLConstants; import ilog.views.faces.dhtml.event.FacesMenuActionEvent; import ilog.views.faces.dhtml.event.FacesViewActionListener; import ilog.views.util.servlet.model.IlvMenuItem; import java.util.EventObject; /** * This is ActionListener that handles the alarms management * of the currently selected object. */ public class AlarmStateHandler extends FacesViewActionListener { private static final String ADD = "add"; private static final String REMOVE = "remove"; private static final String REMOVE_ALL = "remove_all"; private static final String MINOR = "minor"; private static final String MAJOR = "major"; private static final String WARNING = "warning"; /** * Id of Add Major alarm menu item. */ public static final String ADD_MAJOR_ID = ADD + "-" + MAJOR; /** * Id of Add Minor alarm menu item. */ public static final String ADD_MINOR_ID = ADD + "-" + MINOR; /** * Id of Add Warning alarm menu item. */ public static final String ADD_WARNING_ID = ADD + "-" + WARNING; /** * Id of Remove Major alarm menu item. */ public static final String REMOVE_MAJOR_ID = REMOVE + "-" + MAJOR; /** * Id of Remove Minor alarm menu item. */ public static final String REMOVE_MINOR_ID = REMOVE + "-" + MINOR; /** * Id of Remove Warning alarm menu item. */ public static final String REMOVE_WARNING_ID = REMOVE + "-" + WARNING; /** * Id of Remove All alarm menu item. */ public static final String REMOVE_ALL_ID = REMOVE_ALL; /** * Constructor. It uses the <code>IMAGE_SERVLET_CONTEXT</code> as no * other JSF component has to be updated. */ public AlarmStateHandler() { super(IlvDHTMLConstants.JSF_CONTEXT); } /** * Adds or removes alarms from the object in the EventObject depending on the * ID (as defined in this class) of the potential IlvMenuItem carried by the * EventObject. * * @param event The event object. */ public void actionPerformed(EventObject event) throws Exception { // event is instance of ServletActionEvent FacesMenuActionEvent facesActionEvent = (FacesMenuActionEvent)event; // get active object IlpRepresentationObject obj = (IlpRepresentationObject)facesActionEvent.getObject(); // get the menu item IlvMenuItem menuItem = facesActionEvent.getSelectedMenuItem(); String actionId = menuItem.getId(); if(actionId != null) { // get object state from 'objectState' attribute IlpAttribute attrib = obj.getAttributeGroup().getAttribute("objectState"); IltObjectState oState = (IltObjectState)obj.getAttributeValue(attrib); if (null != oState) { IltAlarm.State alarmState = ((IltAlarm.State)oState.getAlarmState()); //If we need to remove all, then just do it if(AlarmStateHandler.REMOVE_ALL_ID.equals(actionId)) { alarmState.removeAllAlarms(); return; } else { IltAlarm.Severity severity = getSeverityForId(actionId); //Either we add it if(actionId.indexOf(AlarmStateHandler.ADD) != -1){ alarmState.addNewAlarm(severity); } //Or remove it else if(actionId.indexOf(AlarmStateHandler.REMOVE) != -1){ alarmState.removeNewAlarm(severity); } //Nothing else } } } } /** * Return the IltAlarm.Severity instance for the provided action ID * as defined in this class. */ private IltAlarm.Severity getSeverityForId(String id) { if(id.indexOf(AlarmStateHandler.MAJOR) != -1) { return IltAlarm.Severity.Major; } else if(id.indexOf(AlarmStateHandler.MINOR) != -1) { return IltAlarm.Severity.Minor; } else if(id.indexOf(AlarmStateHandler.WARNING) != -1) { return IltAlarm.Severity.Warning; } return IltAlarm.Severity.Unknown; } }