From: <cl...@hy...> - 2007-07-18 18:58:20
|
Author: clee Date: 2007-07-18 11:58:14 -0700 (Wed, 18 Jul 2007) New Revision: 5270 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=5270 Added: trunk/src/org/hyperic/hq/escalation/EscalationEvent.java Modified: trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java Log: [HHQ-696] Add new EscalationEvent to be published when escalation changes state Added: trunk/src/org/hyperic/hq/escalation/EscalationEvent.java =================================================================== --- trunk/src/org/hyperic/hq/escalation/EscalationEvent.java (rev 0) +++ trunk/src/org/hyperic/hq/escalation/EscalationEvent.java 2007-07-18 18:58:14 UTC (rev 5270) @@ -0,0 +1,75 @@ +/* + * NOTE: This copyright does *not* cover user programs that use HQ + * program services by normal system calls through the application + * program interfaces provided as part of the Hyperic Plug-in Development + * Kit or the Hyperic Client Development Kit - this is merely considered + * normal use of the program, and does *not* fall under the heading of + * "derived work". + * + * Copyright (C) [2004, 2005, 2006, 2007], Hyperic, Inc. + * This file is part of HQ. + * + * HQ is free software; you can redistribute it and/or modify + * it under the terms version 2 of the GNU General Public License as + * published by the Free Software Foundation. This program is distributed + * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + */ + +package org.hyperic.hq.escalation; + +import java.io.Serializable; + +import org.hyperic.hq.appdef.shared.AppdefEntityID; +import org.hyperic.hq.escalation.server.session.Escalatable; +import org.hyperic.hq.events.AbstractEvent; +import org.hyperic.hq.events.LoggableInterface; +import org.hyperic.hq.events.ResourceEventInterface; +import org.hyperic.hq.measurement.shared.ResourceLogEvent; +import org.hyperic.hq.product.LogTrackPlugin; + +public class EscalationEvent extends AbstractEvent + implements Serializable, ResourceEventInterface, LoggableInterface { + + private AppdefEntityID _aeid; + private String _msg; + private String _alertName; + + public EscalationEvent(Escalatable alert, String msg) { + super(); + setTimestamp(System.currentTimeMillis()); + _aeid = new AppdefEntityID( + alert.getDefinition().getDefinitionInfo().getAppdefType(), + alert.getDefinition().getDefinitionInfo().getAppdefId()); + _alertName = alert.getDefinition().getName(); + _msg = msg; + } + + public AppdefEntityID getResource() { + return _aeid; + } + + public String toString() { + return _msg; + } + + public String getAlertDefName() { + return _alertName; + } + + public String getLevelString() { + return ResourceLogEvent.getLevelString(LogTrackPlugin.LOGLEVEL_INFO); + } + + public String getSubject() { + return getAlertDefName(); + } + +} Modified: trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java 2007-07-18 18:56:54 UTC (rev 5269) +++ trunk/src/org/hyperic/hq/escalation/server/session/EscalationManagerEJBImpl.java 2007-07-18 18:58:14 UTC (rev 5270) @@ -38,6 +38,8 @@ import org.hyperic.hq.authz.shared.PermissionException; import org.hyperic.hq.common.DuplicateObjectException; import org.hyperic.hq.common.SystemException; +import org.hyperic.hq.common.util.Messenger; +import org.hyperic.hq.escalation.EscalationEvent; import org.hyperic.hq.escalation.shared.EscalationManagerLocal; import org.hyperic.hq.escalation.shared.EscalationManagerUtil; import org.hyperic.hq.escalation.server.session.Escalation; @@ -47,6 +49,7 @@ import org.hyperic.hq.escalation.server.session.EscalationState; import org.hyperic.hq.events.ActionConfigInterface; import org.hyperic.hq.events.ActionExecutionInfo; +import org.hyperic.hq.events.EventConstants; import org.hyperic.hq.events.Notify; import org.hyperic.hq.events.server.session.Action; import org.hyperic.hq.events.server.session.ActionManagerEJBImpl; @@ -281,51 +284,6 @@ } /** - * @ejb:interface-method - */ - public void pauseEscalation(Escalatable alert, long pauseTime) { - PerformsEscalations def = alert.getDefinition(); - EscalationState state = _stateDAO.find(def); - Escalation escalation = state.getEscalation(); - - if (state == null) /* Deleted from underneath someone? */ - throw new IllegalStateException("Cannot pause -- no state"); - - if (state.isPaused()) { - // We could throw an exception here, but maybe someone mashes the - // pause button & we get here. Let's be nice. - _log.debug("Double-Pause on state[" + state.getId() + "]"); - return; - } - - if (!escalation.isPauseAllowed()) - throw new IllegalStateException("Pause not allowed"); - - state.setPaused(true); - - long nextExecTime = state.getNextActionTime(); - long curTime = System.currentTimeMillis(); - - if (pauseTime > escalation.getMaxPauseTime()) { - _log.warn("Atempted to pause state[" + state.getId() + "] for " + - pauseTime + " ms., but was trimmed to " + - escalation.getMaxPauseTime() + " due to the escalation"); - pauseTime = escalation.getMaxPauseTime(); - } - - _log.debug("Pausing state[" + state.getId() + "]"); - if (curTime + pauseTime < nextExecTime) { - // They paused, but it wasn't scheduled to run during that time - // anyway. This is a no-op. - } else { - nextExecTime = curTime + pauseTime; - } - - state.setNextActionTime(nextExecTime); - EscalationRuntime.getInstance().scheduleEscalation(state); - } - - /** * End an escalation. This will remove all state for the escalation * tied to a specific definition. * @@ -615,6 +573,11 @@ _log.warn("Unable to send notification alert", e); } } + + // Send event to be logged + Messenger sender = new Messenger(); + sender.publishMessage(EventConstants.EVENTS_TOPIC, + new EscalationEvent(alert, msg)); } /** |