use of org.hisp.dhis.validation.Importance.HIGH in project dhis2-core by dhis2.
the class DefaultValidationNotificationService method createSummarizedMessage.
/**
* Creates a summarized message from the given MessagePairs and pre-rendered
* map of NotificationMessages. The messages generated by each distinct
* MessagePair are concatenated in their given order.
*/
private static NotificationMessage createSummarizedMessage(SortedSet<MessagePair> pairs, final Map<MessagePair, NotificationMessage> renderedNotificationsMap, final Date validationDate) {
Map<Importance, Long> counts = pairs.stream().map(m -> m.result.getValidationRule().getImportance()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
String subject = String.format("Validation violations as of %s", DateUtils.getLongDateString(validationDate));
String message = String.format("Violations: High %d, medium %d, low %d", counts.getOrDefault(HIGH, 0L), counts.getOrDefault(Importance.MEDIUM, 0L), counts.getOrDefault(LOW, 0L));
// Concatenate the notifications in sorted order, divide by double
// linebreak
message = message + pairs.stream().sorted().map(renderedNotificationsMap::get).map(n -> String.format("%s%s%s", n.getSubject(), LN, n.getMessage())).reduce("", (initStr, newStr) -> String.format("%s%s%s", initStr, LN + LN, newStr));
NotificationMessage notificationMessage = new NotificationMessage(subject, message);
notificationMessage.setPriority(getPriority(counts.getOrDefault(HIGH, 0L) > 0 ? HIGH : counts.getOrDefault(MEDIUM, 0L) > 0 ? MEDIUM : LOW));
return notificationMessage;
}
Aggregations