log.info("Failed to create CallTimeDataCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, alertCondition.getThreshold(), icee));
}
} else if (alertConditionCategory == AlertConditionCategory.THRESHOLD) {
AlertConditionScheduleCategoryComposite thresholdComposite = (AlertConditionScheduleCategoryComposite) composite;
try {
CallTimeDataCacheElement cacheElement = new CallTimeDataCacheElement(alertConditionOperator,
CallTimeElementValue.valueOf(alertCondition.getOption()), null, alertCondition.getThreshold(),
alertConditionId, alertCondition.getName());
addTo("measurementDataCache", callTimeCache, thresholdComposite.getScheduleId(), cacheElement,
alertConditionId, stats);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create CallTimeDataCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, alertCondition.getThreshold(), icee));
}
}// last call-time case
} else if (alertConditionCategory == AlertConditionCategory.BASELINE) { // normal cases start here
AlertConditionBaselineCategoryComposite baselineComposite = (AlertConditionBaselineCategoryComposite) composite;
// option status for baseline gets set to "mean", but it's rather useless since the UI
// current doesn't allow alerting off of other baseline properties such as "min" and "max"
Double threshold = alertCondition.getThreshold();
String optionStatus = alertCondition.getOption();
/*
* yes, calculatedValue may be null, but that's OK because the match
* method for MeasurementBaselineCacheElement handles nulls just fine
*/
Double calculatedValue = getCalculatedBaselineValue(alertConditionId, baselineComposite, optionStatus,
threshold);
try {
MeasurementBaselineCacheElement cacheElement = new MeasurementBaselineCacheElement(
alertConditionOperator, calculatedValue, alertConditionId, optionStatus);
// auto-boxing (of alertConditionId) is always safe
addTo("measurementDataCache", measurementDataCache, baselineComposite.getScheduleId(), cacheElement,
alertConditionId, stats);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create MeasurementBaselineCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, calculatedValue, icee));
}
} else if (alertConditionCategory == AlertConditionCategory.CHANGE) {
AlertConditionChangesCategoryComposite changesComposite = (AlertConditionChangesCategoryComposite) composite;
int scheduleId = changesComposite.getScheduleId();
MeasurementDataNumeric numeric = measurementDataManager.getCurrentNumericForSchedule(scheduleId);
try {
MeasurementNumericCacheElement cacheElement = new MeasurementNumericCacheElement(
alertConditionOperator, (numeric == null) ? null : numeric.getValue(), alertConditionId);
addTo("measurementDataCache", measurementDataCache, scheduleId, cacheElement, alertConditionId, stats);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create MeasurementNumericCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, numeric, icee));
}
} else if (alertConditionCategory == AlertConditionCategory.TRAIT) {
AlertConditionTraitCategoryComposite traitsComposite = (AlertConditionTraitCategoryComposite) composite;
String value = null;
switch (alertConditionOperator) {
case CHANGES:
value = traitsComposite.getValue();
break;
case REGEX:
value = traitsComposite.getCondition().getOption();
break;
default:
log.error("Invalid operator for Trait condition: " + alertConditionOperator);
}
try {
/*
* don't forget special defensive handling to allow for null trait calculation;
* this might happen if a newly committed resource has some alert template applied to
* it for some trait that it has not yet gotten from the agent
*/
MeasurementTraitCacheElement cacheElement = new MeasurementTraitCacheElement(alertConditionOperator,
value, alertConditionId);
addTo("measurementTraitCache", measurementTraitCache, traitsComposite.getScheduleId(), cacheElement,
alertConditionId, stats);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create MeasurementTraitCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, value, icee));
}
} else if (alertConditionCategory == AlertConditionCategory.THRESHOLD) {
AlertConditionScheduleCategoryComposite thresholdComposite = (AlertConditionScheduleCategoryComposite) composite;
Double thresholdValue = alertCondition.getThreshold();
MeasurementNumericCacheElement cacheElement = null;
try {
cacheElement = new MeasurementNumericCacheElement(alertConditionOperator, thresholdValue,
alertConditionId);
} catch (InvalidCacheElementException icee) {
log.info("Failed to create MeasurementNumericCacheElement with parameters: "
+ AlertConditionCacheUtils.getCacheElementErrorString(alertConditionId, alertConditionOperator,
null, thresholdValue, icee));
}
if (cacheElement != null) {
addTo("measurementDataCache", measurementDataCache, thresholdComposite.getScheduleId(), cacheElement,
alertConditionId, stats);
}
} else if (alertConditionCategory == AlertConditionCategory.EVENT) {
AlertConditionEventCategoryComposite eventComposite = (AlertConditionEventCategoryComposite) composite;