use of org.hisp.dhis.validation.Importance 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;
}
use of org.hisp.dhis.validation.Importance in project dhis2-core by dhis2.
the class DataAnalysisController method generateValidationRulesReportGridFromResults.
private Grid generateValidationRulesReportGridFromResults(List<ValidationResult> results, OrganisationUnit orgUnit) {
Grid grid = new ListGrid();
if (results != null) {
I18nFormat format = i18nManager.getI18nFormat();
I18n i18n = i18nManager.getI18n();
grid.setTitle(i18n.getString("data_quality_report"));
if (orgUnit != null) {
grid.setSubtitle(orgUnit.getName());
}
grid.addHeader(new GridHeader(i18n.getString("source"), false, true));
grid.addHeader(new GridHeader(i18n.getString("period"), false, true));
grid.addHeader(new GridHeader(i18n.getString("validation_rule"), false, true));
grid.addHeader(new GridHeader(i18n.getString("importance"), false, true));
grid.addHeader(new GridHeader(i18n.getString("left_side_description"), false, true));
grid.addHeader(new GridHeader(i18n.getString("value"), false, false));
grid.addHeader(new GridHeader(i18n.getString("operator"), false, false));
grid.addHeader(new GridHeader(i18n.getString("value"), false, false));
grid.addHeader(new GridHeader(i18n.getString("right_side_description"), false, true));
for (ValidationResult validationResult : results) {
OrganisationUnit unit = validationResult.getOrganisationUnit();
Period period = validationResult.getPeriod();
Importance importance = validationResult.getValidationRule().getImportance();
Operator operator = validationResult.getValidationRule().getOperator();
grid.addRow();
grid.addValue(unit.getName());
grid.addValue(format.formatPeriod(period));
grid.addValue(validationResult.getValidationRule().getName());
grid.addValue(i18n.getString(importance.toString().toLowerCase()));
grid.addValue(validationResult.getValidationRule().getLeftSide().getDescription());
grid.addValue(String.valueOf(validationResult.getLeftsideValue()));
grid.addValue(i18n.getString(operator.toString()));
grid.addValue(String.valueOf(validationResult.getRightsideValue()));
grid.addValue(validationResult.getValidationRule().getRightSide().getDescription());
}
}
return grid;
}
Aggregations