/** * Returns a map where the key is a user and the value is a naturally-sorted list of results they * should receive. * * @param results all the validation run results, in a sorted set * @return map of users to results */ private Map<User, SortedSet<ValidationResult>> getUserResults( SortedSet<ValidationResult> results) { Map<User, SortedSet<ValidationResult>> userResults = new HashMap<>(); for (ValidationResult result : results) { for (ValidationRuleGroup ruleGroup : result.getValidationRule().getGroups()) { if (ruleGroup.hasUserGroupsToAlert()) { for (UserGroup userGroup : ruleGroup.getUserGroupsToAlert()) { for (User user : userGroup.getMembers()) { if (!ruleGroup.isAlertByOrgUnits() || canUserAccessSource(user, result.getOrgUnit())) { SortedSet<ValidationResult> resultSet = userResults.get(user); if (resultSet == null) { resultSet = new TreeSet<>(); userResults.put(user, resultSet); } resultSet.add(result); } } } } } } return userResults; }
/** * Gets all the validation rules that could generate alerts. * * @return rules that will generate alerts */ private Set<ValidationRule> getAlertRules() { Set<ValidationRule> rules = new HashSet<>(); for (ValidationRuleGroup validationRuleGroup : getAllValidationRuleGroups()) { if (validationRuleGroup.hasUserGroupsToAlert()) { rules.addAll(validationRuleGroup.getMembers()); } } return rules; }