/** * 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; }