@Override public void deleteOrganisationUnit( OrganisationUnit organisationUnit ) { validationResultService.getAllValidationResults().forEach( validationResult -> { if ( validationResult.getOrganisationUnit().equals( organisationUnit ) ) { validationResultService.deleteValidationResult( validationResult ); } } ); }
public Builder withInitialResults( Collection<ValidationResult> results ) { this.context.validationResults.addAll( results ); results.forEach( validationResult -> { List<ValidationResult> res = context.initialValidationResults .getValue( validationResult.getOrganisationUnit(), validationResult.getValidationRule(), validationResult.getPeriod() ); if ( res == null ) { res = new ArrayList<>(); } res.add( validationResult ); context.initialValidationResults .putEntry( validationResult.getOrganisationUnit(), validationResult.getValidationRule(), validationResult.getPeriod(), res ); } ); return this; } }
/** * Resolve all distinct recipients for the given MessagePair. */ private static Set<User> resolveRecipients( MessagePair pair ) { ValidationResult validationResult = pair.result; ValidationNotificationTemplate template = pair.template; // Limit recipients to be withing org unit hierarchy only, effectively // producing a cross-cut of all users in the configured user groups. final boolean limitToHierarchy = BooleanUtils.toBoolean( template.getNotifyUsersInHierarchyOnly() ); final boolean parentOrgUnitOnly = BooleanUtils.toBoolean( template.getNotifyParentOrganisationUnitOnly() ); Set<OrganisationUnit> orgUnitsToInclude = Sets.newHashSet(); Set<User> recipients = template.getRecipientUserGroups().stream() .flatMap( ug -> ug.getMembers().stream() ).collect( Collectors.toSet() ); if ( limitToHierarchy ) { orgUnitsToInclude.add( validationResult.getOrganisationUnit() ); // Include self orgUnitsToInclude.addAll( validationResult.getOrganisationUnit().getAncestors() ); recipients = recipients.stream() .filter( user -> orgUnitsToInclude.contains( user.getOrganisationUnit() ) ).collect( Collectors.toSet() ); } else if ( parentOrgUnitOnly ) { Set<User> parents = Sets.newHashSet(); recipients.forEach( user -> parents.addAll( user.getOrganisationUnit().getParent().getUsers() ) ); return parents; } return recipients; }
@Override public List<Object> getUniqueValues( ValidationResult validationResult ) { return getObjectList( validationResult.getValidationRule().getId(), validationResult.getPeriod().getId(), validationResult.getOrganisationUnit().getId(), validationResult.getAttributeOptionCombo().getId(), validationResult.getDayInPeriod() ); }
@Override public List<Object> getValues( ValidationResult validationResult ) { return getObjectList( validationResult.getLeftsideValue(), validationResult.getRightsideValue(), validationResult.getValidationRule().getId(), validationResult.getPeriod().getId(), validationResult.getOrganisationUnit().getId(), validationResult.getAttributeOptionCombo().getId(), validationResult.getDayInPeriod() ); }
/** * Compare ValidationResults so they will be listed in the desired * order: by validationRule, period, attributeOptionCombo and orgUnit. * * @param other The other ValidationResult to compare with. * @return a negative integer, zero, or a positive integer as this object * is less than, equal to, or greater than the specified object. */ @Override public int compareTo( ValidationResult other ) { return new CompareToBuilder() .append( this.validationRule, other.getValidationRule() ) .append( this.period, other.getPeriod() ) .append( this.attributeOptionCombo, other.getAttributeOptionCombo() ) .append( this.organisationUnit, other.getOrganisationUnit() ) .append( this.id, other.getId() ) .toComparison(); }