@Override public Set<DataElement> getDataElements( ValidationRule validationRule ) { Set<DataElement> elements = new HashSet<>(); elements.addAll( expressionService.getDataElementsInExpression( validationRule.getLeftSide().getExpression() ) ); elements.addAll( expressionService.getDataElementsInExpression( validationRule.getRightSide().getExpression() ) ); return elements; }
/** * Gets all DimensionalItemObjects from the expressions and skip test. * * @param expressions set of expressions. * @param skipTest the skip test expression (if any). * @return set of all dimensional item objects found in all expressions. */ private Set<DimensionalItemObject> getDimensionItems( Set<String> expressions, Expression skipTest ) { Set<DimensionalItemObject> operands = new HashSet<>(); for ( String expression : expressions ) { operands.addAll( expressionService.getDimensionalItemObjectsInExpression( expression ) ); } if ( skipTest != null ) { operands.addAll( expressionService.getDimensionalItemObjectsInExpression( skipTest.getExpression() ) ); } return operands; }
@Override public Double getExpressionValue( Expression expression, Map<? extends DimensionalItemObject, Double> valueMap, Map<String, Double> constantMap, Map<String, Integer> orgUnitCountMap, Integer days, ListMap<String, Double> aggregateMap ) { String expressionString = generateExpression( expression.getExpression(), valueMap, constantMap, orgUnitCountMap, days, expression.getMissingValueStrategy(), aggregateMap ); return expressionString != null ? calculateExpression( expressionString ) : null; }
@Override public Collection<ValidationRule> getValidationRulesForDataSet( DataSet dataSet ) { Set<String> elementsAndOptionCombos = new HashSet<>(); for ( DataSetElement dataSetElement : dataSet.getDataSetElements() ) { DataElement dataElement = dataSetElement.getDataElement(); elementsAndOptionCombos.add( dataElement.getUid() ); CategoryCombo catCombo = dataSetElement.hasCategoryCombo() ? dataSetElement.getCategoryCombo() : dataElement.getCategoryCombo(); for ( CategoryOptionCombo optionCombo : catCombo.getOptionCombos() ) { elementsAndOptionCombos.add( dataElement.getUid() + Expression.SEPARATOR + optionCombo.getUid() ); } } Set<ValidationRule> rulesForDataSet = new HashSet<>(); for ( ValidationRule rule : getAllFormValidationRules() ) { if ( !Sets.intersection( expressionService.getElementsAndOptionCombosInExpression( rule.getLeftSide().getExpression() ), elementsAndOptionCombos ).isEmpty() || !Sets.intersection( expressionService.getElementsAndOptionCombosInExpression( rule.getRightSide().getExpression() ), elementsAndOptionCombos ).isEmpty() ) { rulesForDataSet.add( rule ); } } return rulesForDataSet; }
@Override public SortedMap<ValidationRule, String> getInvalidValidationRuleLeftSideExpressions() { SortedMap<ValidationRule, String> invalids = new TreeMap<>(); I18n i18n = i18nManager.getI18n(); for ( ValidationRule rule : validationRuleService.getAllValidationRules() ) { ExpressionValidationOutcome result = expressionService.expressionIsValid( rule.getLeftSide().getExpression() ); if ( !result.isValid() ) { invalids.put( rule, i18n.getString(result.getKey()) ); } } return invalids; }
private void upgradeExpressions() { Collection<Expression> expressions = expressionService.getAllExpressions(); for ( Expression expression : expressions ) { String expr = upgradeExpression( expression.getExpression() ); if ( expr != null ) { expression.setExpression( expr ); expressionService.updateExpression( expression ); } } }
@Override public SortedMap<ValidationRule, String> getInvalidValidationRuleRightSideExpressions() { SortedMap<ValidationRule, String> invalids = new TreeMap<>(); I18n i18n = i18nManager.getI18n(); for ( ValidationRule rule : validationRuleService.getAllValidationRules() ) { ExpressionValidationOutcome result = expressionService.expressionIsValid( rule.getRightSide().getExpression() ); if ( !result.isValid() ) { invalids.put( rule, i18n.getString(result.getKey()) ); } } return invalids; }
.getDimensionalItemIdsInExpression( rule.getLeftSide().getExpression() ); dimensionItemIdentifiers.putValues( expressionService.getDimensionalItemIdsInExpression( rule.getRightSide().getExpression() ) );
expressionService.getAggregatesAndNonAggregatesInExpression( generator.getExpression(), aggregates, nonAggregates ); Map<String, Double> constantMap = constantService.getConstantMap(); Set<Period> outputPeriods = getPeriodsBetweenDates( predictor.getPeriodType(), startDate, endDate );