public Collection<ValidationResult> validate( Date startDate, Date endDate, Collection<OrganisationUnit> sources, ValidationRuleGroup group) { Map<String, Double> constantMap = constantService.getConstantMap(); Collection<ValidationResult> validationViolations = new HashSet<ValidationResult>(); Collection<Period> relevantPeriods = periodService.getPeriodsBetweenDates(startDate, endDate); for (OrganisationUnit source : sources) { Collection<ValidationRule> relevantRules = getRelevantValidationRules(source.getDataElementsInDataSets()); relevantRules.retainAll(group.getMembers()); Set<DataElement> dataElements = getDataElementsInValidationRules(relevantRules); if (!relevantRules.isEmpty()) { for (Period period : relevantPeriods) { validationViolations.addAll( validateInternal( period, source, relevantRules, dataElements, constantMap, validationViolations.size())); } } } return validationViolations; }
public ValidationRuleGroup getValidationRuleGroup(int id, boolean i18nValidationRules) { ValidationRuleGroup group = getValidationRuleGroup(id); if (i18nValidationRules) { i18n(i18nService, group.getMembers()); } return group; }
/** * 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; }
@Override public Collection<ValidationResult> validate( Date startDate, Date endDate, Collection<OrganisationUnit> sources, DataElementCategoryOptionCombo attributeCombo, ValidationRuleGroup group, boolean sendAlerts, I18nFormat format) { log.info( "Validate start:" + startDate + " end: " + endDate + " sources: " + sources.size() + " group: " + group); Collection<Period> periods = periodService.getPeriodsBetweenDates(startDate, endDate); Collection<ValidationRule> rules = group != null ? group.getMembers() : getAllValidationRules(); Collection<ValidationResult> results = Validator.validate( sources, periods, rules, attributeCombo, null, constantService, expressionService, periodService, dataValueService, dataElementCategoryService, userService, currentUserService); formatPeriods(results, format); if (sendAlerts) { Set<ValidationResult> resultsToAlert = new HashSet<>(results); FilterUtils.filter(resultsToAlert, new ValidationResultToAlertFilter()); postAlerts(resultsToAlert, new Date()); } return results; }