/*
* RHQ Management Platform
* Copyright (C) 2005-2012 Red Hat, Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation version 2 of the License.
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.rhq.core.domain.alert;
/**
* @author Joseph Marques
* @author Jay Shaughnessy
*/
public enum AlertConditionOperator {
/*
* absolute value comparison operators
*/
LESS_THAN_OR_EQUAL_TO(Type.STATEFUL), //
LESS_THAN(Type.STATEFUL), //
EQUALS(Type.STATEFUL), //
REGEX(Type.STATELESS), // more flexible form of EQUALS
GREATER_THAN(Type.STATEFUL), //
GREATER_THAN_OR_EQUAL_TO(Type.STATEFUL), //
/*
* operator based on state deltas
*/
CHANGES(Type.STATELESS), // state value changes in any way
CHANGES_TO(Type.STATELESS), // becomes one specific state value
CHANGES_FROM(Type.STATELESS), // leaves one specific state value
AVAIL_GOES_DOWN(Type.STATELESS), // avail becomes DOWN from anything else
AVAIL_GOES_DISABLED(Type.STATELESS), // avail becomes DISABLED from anything else
AVAIL_GOES_UNKNOWN(Type.STATELESS), // avail becomes UNKNOWN from anything else
AVAIL_GOES_NOT_UP(Type.STATELESS), // convenience for avail becomes DOWN | DISABLED | UNKNOWN from UP
AVAIL_GOES_UP(Type.STATELESS), // avail becomes UP from anything else
AVAIL_DURATION_DOWN(Type.STATELESS), // avail DOWN for X minutes
AVAIL_DURATION_NOT_UP(Type.STATELESS); // convenience for avail DOWN | UNKNOWN | DISABLED for X minutes
private Type defaultType;
/**
* For the most part, the operator itself denotes whether it makes comparisons against a sliding scale or not.
* However, this doesn't hold in every conceivable scenario. Thus, the defaultType will support 95% of the use
* cases, and the AbstractCacheElement's getOperatorType will have a chance to override this.
*/
AlertConditionOperator(Type defaultType) {
this.defaultType = defaultType;
}
public Type getDefaultType() {
return defaultType;
}
public enum Type {
/*
* stateful is used to support a sliding scale of values, usually a number line; once the stateful operator's
* condition threshold is met, stateful cache elements are disabled until the threshold is crossed once again
* into the expected range;
*/
STATEFUL,
/*
* stateless can be used for anything stateful can, but will never be disabled in the cache; so, if you're
* worried about being able to suppress sliding-scale conditions once a threshold is meet, mark your operator
* as stateful
*/
STATELESS,
/*
* CacheElement doesn't support the Operator if getOperatorSupportsType(Operator) is overridden to return NONE
*/
NONE;
}
}