// We also need the'raw' notification data to show in details
DataClass[] conditions = new DataClass[from.getConditionLogs().size()];
int i = 0;
for (AlertConditionLog log : from.getConditionLogs()) {
AlertCondition condition = log.getCondition();
DataClass dc = new DataClass();
dc.setAttribute("text", AlertFormatUtility.formatAlertConditionForDisplay(condition));
String value = log.getValue();
if (condition.getMeasurementDefinition() != null) {
try {
value = MeasurementConverterClient.format(Double.valueOf(log.getValue()), condition
.getMeasurementDefinition().getUnits(), true);
} catch (Exception e) {
// the condition log value was probably not a number (most likely a trait). Ignore this exception.
// even if any other errors occur trying to format the value, ignore this and just use the raw value string
}
}
// Remove the extraInfo=[ ] that is added when storing the raw event data in the data base
if (value.contains("extraInfo=")) {
value = value.replaceFirst("extraInfo=\\[","");
value = value.substring(0,value.length()-1);
}
dc.setAttribute("value", value);
conditions[i++] = dc;
}
record.setAttribute("conditionLogs", conditions);
record.setAttribute("conditionExpression", alertDefinition.getConditionExpression());
String recoveryInfo = AlertFormatUtility.getAlertRecoveryInfo(from);
record.setAttribute("recoveryInfo", recoveryInfo);
// Alert notification logs
DataClass[] notifications = new DataClass[from.getAlertNotificationLogs().size()];
i = 0;
for (AlertNotificationLog log : from.getAlertNotificationLogs()) {
DataClass dc = new DataClass();
dc.setAttribute("sender", log.getSender());
dc.setAttribute("status", log.getResultState().name());
dc.setAttribute("message", log.getMessage());
notifications[i++] = dc;
}
record.setAttribute("notificationLogs", notifications);
return record;