private CategoryOptionCombo getAttributeOptionCombo( int id ) { CategoryOptionCombo aoc = context.getAocIdMap().get( id ); if ( aoc == null ) { log.trace("DataValidationTask calling getCategoryOptionCombo( id " + id + " )" ); aoc = categoryService.getCategoryOptionCombo( id ); log.trace("DataValidationTask called getCategoryOptionCombo( id " + id + ")" ); addToAocCache( aoc ); } return aoc; }
/** * Gets the data we will need for this task. */ private void getData() { getDataMap(); slidingWindowEventMap = getEventMapForSlidingWindow( true, periodTypeX.getEventItems() ); slidingWindowEventMap .putMap( getEventMapForSlidingWindow( false, periodTypeX.getEventItemsWithoutAttributeOptions() ) ); slidingWindowEventMap.putMap( dataMap ); eventMap = getEventMap( true, periodTypeX.getEventItems() ); eventMap.putMap( getEventMap( false, periodTypeX.getEventItemsWithoutAttributeOptions() ) ); dataMap.putMap( eventMap ); }
/** * For an expression (left side or right side), finds the values * (grouped by attribute option combo). * * @param expression left or right side expression. * @param slidingWindow whether to use sliding window. * @return the values grouped by attribute option combo. */ private Map<String, Double> getValuesForExpression( Expression expression, boolean slidingWindow ) { if ( expression == null ) { return new HashMap<>(); } else if ( slidingWindow ) { return getExpressionValueMap( expression, slidingWindowEventMap ); } else { return getExpressionValueMap( expression, dataMap ); } }
String deoIdKey = periodTypeX.getDeoIds( dv.getDataElementId(), dv.getCategoryOptionComboId() ); DataElementOperand dataElementOperand = periodTypeX.getDataElementOperandIdMap().get( deoIdKey ); Period p = getPeriod( dv.getPeriodId() ); int orgUnitId = dv.getSourceId(); String attributeOptionComboUid = getAttributeOptionCombo( dv.getAttributeOptionComboId() ).getUid(); String valueString = dv.getValue(); Double value; addValueToDataMap( orgUnitId, attributeOptionComboUid, dataElement, value, p, checkForDuplicates ); addValueToDataMap( orgUnitId, attributeOptionComboUid, dataElementOperand, value, p, checkForDuplicates );
/** * Validates one rule / period / attribute option combo. * * @param optionCombo the attribute option combo. * @param leftSide left side value. * @param rightSide right side value. */ private void validateOptionCombo( String optionCombo, Double leftSide, Double rightSide ) { // Skipping any results we already know if ( context.skipValidationOfTuple( orgUnit, ruleX.getRule(), period, optionCombo, periodService.getDayInPeriod( period, new Date() ) ) ) { return; } boolean violation = isViolation( leftSide, rightSide ); if ( violation && !context.isAnalysisComplete() ) { validationResults.add( new ValidationResult( ruleX.getRule(), period, orgUnit, getAttributeOptionCombo( optionCombo ), roundSignificant( zeroIfNull( leftSide ) ), roundSignificant( zeroIfNull( rightSide ) ), periodService.getDayInPeriod( period, new Date() ) ) ); } }
return getEventData( paramsBuilder.build(), hasAttributeOptions );
/** * Gets aggregated event data for the given parameters. * * @param hasAttributeOptions whether the event data has attribute options. */ private MapMapMap<Integer, String, DimensionalItemObject, Double> getEventMap( boolean hasAttributeOptions, Set<DimensionalItemObject> eventItems ) { if ( eventItems.isEmpty() ) { return new MapMapMap<>(); } DataQueryParams.Builder paramsBuilder = DataQueryParams.newBuilder() .withDataDimensionItems( Lists.newArrayList( eventItems ) ) .withAttributeOptionCombos( Lists.newArrayList() ) .withFilterPeriods( Lists.newArrayList( period ) ) .withOrganisationUnits( orgUnits ); if ( hasAttributeOptions ) { paramsBuilder.withAttributeOptionCombos( Lists.newArrayList() ); } return getEventData( paramsBuilder.build(), hasAttributeOptions ); }
private CategoryOptionCombo getAttributeOptionCombo( String uid ) { CategoryOptionCombo aoc = context.getAocUidMap().get( uid ); if ( aoc == null ) { log.trace("DataValidationTask calling getCategoryOptionCombo( uid " + uid + " )" ); aoc = categoryService.getCategoryOptionCombo( uid ); log.trace("DataValidationTask called getCategoryOptionCombo( uid " + uid + ")" ); addToAocCache( aoc ); } return aoc; }