@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; }
/** * @param uniqueCharacter A unique character to identify the object. * @param expressionString The expression string. */ public static Expression createExpression2( char uniqueCharacter, String expressionString ) { Expression expression = new Expression(); expression.setExpression( expressionString ); expression.setDescription( "Description" + uniqueCharacter ); return expression; }
@Override public void deleteExpression( Expression expression ) { Iterator<ValidationRule> iterator = validationRuleService.getAllValidationRules().iterator(); while ( iterator.hasNext() ) { ValidationRule rule = iterator.next(); Expression leftSide = rule.getLeftSide(); Expression rightSide = rule.getRightSide(); if ( (leftSide != null && leftSide.equals( expression )) || (rightSide != null && rightSide.equals( expression )) ) { iterator.remove(); validationRuleService.deleteValidationRule( rule ); } } }
@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; }
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 ); } } }
Expression leftSide = new Expression(); Expression rightSide = new Expression(); PeriodType.getByNameIgnoreCase( getSafe( values, 8, MonthlyPeriodType.NAME, 255 ) ) ); leftSide.setExpression( getSafe( values, 9, null, 255 ) ); leftSide.setDescription( getSafe( values, 10, null, 255 ) ); leftSide.setMissingValueStrategy( MissingValueStrategy .safeValueOf( getSafe( values, 11, MissingValueStrategy.NEVER_SKIP.toString(), 50 ) ) ); rightSide.setExpression( getSafe( values, 12, null, 255 ) ); rightSide.setDescription( getSafe( values, 13, null, 255 ) ); rightSide.setMissingValueStrategy( MissingValueStrategy .safeValueOf( getSafe( values, 14, MissingValueStrategy.NEVER_SKIP.toString(), 50 ) ) );
Expression expression = new Expression( aggregate, "Aggregated", missingValueStrategy );
if ( ruleX.getRule().getLeftSide().getMissingValueStrategy() == NEVER_SKIP ) if ( ruleX.getRule().getRightSide().getMissingValueStrategy() == NEVER_SKIP )
/** * Returns the instruction if it is not null or empty, if not returns the * left side description, operator and right side description if not null or * empty, if not returns null. */ public String getInstructionFallback() { if ( instruction != null && !instruction.isEmpty() ) { return instruction; } else if ( leftSide != null && rightSide != null ) { return leftSide.getDescription() + " " + operator.getMathematicalOperator() + " " + rightSide.getDescription(); } else { return null; } }
expressionService.getAggregatesAndNonAggregatesInExpression( generator.getExpression(), aggregates, nonAggregates ); Map<String, Double> constantMap = constantService.getConstantMap(); Set<Period> outputPeriods = getPeriodsBetweenDates( predictor.getPeriodType(), startDate, endDate ); aggregates, samplePeriodsMap.get( period ), constantMap, generator.getMissingValueStrategy() ); Sets.union( aggregateSampleMap.keySet(), nonAggregateSampleMap.keySet() ) : defaultOptionComboAsSet; if ( attributeOptionCombos.isEmpty() && generator.getMissingValueStrategy() == MissingValueStrategy.NEVER_SKIP )
/** * 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 void deleteExpression( Expression expression ) { Iterator<Predictor> iterator = predictorService.getAllPredictors().iterator(); while ( iterator.hasNext() ) { Predictor predictor = iterator.next(); Expression generator = predictor.getGenerator(); Expression skipTest= predictor.getSampleSkipTest(); if ( generator != null && generator.equals( expression ) || skipTest != null && skipTest.equals( expression ) ) { iterator.remove(); predictorService.deletePredictor ( predictor ); } } }
@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; }
@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() ) );