@Override public String execute() { if (dataElementGroupId > 0) { DataElementGroup group = dataElementService.getDataElementGroup(dataElementGroupId.intValue()); dataElements = new ArrayList<>(group.getMembers()); } else { dataElements = new ArrayList<>(dataElementService.getAllDataElements()); } Collections.sort(dataElements, new IdentifiableObjectNameComparator()); for (DataElement dataElement : dataElements) { DataElementCategoryCombo categoryCombo = dataElement.getCategoryCombo(); Set<DataElementCategoryOptionCombo> optionCombos = categoryCombo.getOptionCombos(); if (optionCombos.size() > 1) { for (DataElementCategoryOptionCombo optionCombo : optionCombos) { DataElementOperand operand = new DataElementOperand( dataElement.getUid(), optionCombo.getUid(), dataElement.getName() + optionCombo.getName()); operands.add(operand); } } else { DataElementOperand operand = new DataElementOperand( dataElement.getUid(), optionCombos.iterator().next().getUid(), dataElement.getName()); operands.add(operand); } } return SUCCESS; }
@Override public void setUpTest() { aggregationService = (AggregationService) getBean(AggregationService.ID); categoryService = (DataElementCategoryService) getBean(DataElementCategoryService.ID); dataElementService = (DataElementService) getBean(DataElementService.ID); indicatorService = (IndicatorService) getBean(IndicatorService.ID); dataSetService = (DataSetService) getBean(DataSetService.ID); periodService = (PeriodService) getBean(PeriodService.ID); organisationUnitService = (OrganisationUnitService) getBean(OrganisationUnitService.ID); dataValueService = (DataValueService) getBean(DataValueService.ID); expressionService = (ExpressionService) getBean(ExpressionService.ID); // --------------------------------------------------------------------- // Setup Dimensions // --------------------------------------------------------------------- categoryOptionA = new DataElementCategoryOption("Male"); categoryOptionB = new DataElementCategoryOption("Female"); categoryService.addDataElementCategoryOption(categoryOptionA); categoryService.addDataElementCategoryOption(categoryOptionB); category = new DataElementCategory("Gender"); category.getCategoryOptions().add(categoryOptionA); category.getCategoryOptions().add(categoryOptionB); categoryService.addDataElementCategory(category); categoryCombo = new DataElementCategoryCombo("Gender"); categoryCombo.getCategories().add(category); categoryService.addDataElementCategoryCombo(categoryCombo); categoryOptionComboA = createCategoryOptionCombo(categoryCombo, categoryOptionA); categoryOptionComboB = createCategoryOptionCombo(categoryCombo, categoryOptionB); categoryService.addDataElementCategoryOptionCombo(categoryOptionComboA); categoryService.addDataElementCategoryOptionCombo(categoryOptionComboB); // --------------------------------------------------------------------- // Setup DataElements // --------------------------------------------------------------------- dataElementA = createDataElement( 'A', DataElement.VALUE_TYPE_INT, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo); dataElementB = createDataElement( 'B', DataElement.VALUE_TYPE_BOOL, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo); dataElementC = createDataElement( 'C', DataElement.VALUE_TYPE_INT, DataElement.AGGREGATION_OPERATOR_SUM, categoryCombo); dataElementService.addDataElement(dataElementA); dataElementService.addDataElement(dataElementB); dataElementService.addDataElement(dataElementC); // --------------------------------------------------------------------- // Setup Indicators // --------------------------------------------------------------------- indicatorType = createIndicatorType('A'); indicatorType.setFactor(100); indicatorService.addIndicatorType(indicatorType); indicatorA = createIndicator('A', indicatorType); indicatorA.setNumerator( "#{" + dataElementA.getUid() + SEPARATOR + categoryOptionComboA.getUid() + "}+150"); indicatorA.setDenominator( "#{" + dataElementB.getUid() + SEPARATOR + categoryOptionComboA.getUid() + "}"); indicatorB = createIndicator('B', indicatorType); indicatorB.setNumerator("#{" + dataElementC.getUid() + "}"); indicatorB.setDenominator("1"); indicatorService.addIndicator(indicatorA); indicatorService.addIndicator(indicatorB); // --------------------------------------------------------------------- // Setup DataSets (to get correct PeriodType for DataElements) // --------------------------------------------------------------------- dataSet = createDataSet('A', new MonthlyPeriodType()); dataSet.getDataElements().add(dataElementA); dataSet.getDataElements().add(dataElementB); dataSetService.addDataSet(dataSet); dataElementA.getDataSets().add(dataSet); dataElementB.getDataSets().add(dataSet); dataElementC.getDataSets().add(dataSet); dataElementService.updateDataElement(dataElementA); dataElementService.updateDataElement(dataElementB); dataElementService.updateDataElement(dataElementC); // --------------------------------------------------------------------- // Setup Periods // --------------------------------------------------------------------- PeriodType monthly = new MonthlyPeriodType(); periodA = createPeriod(monthly, mar01, mar31); periodB = createPeriod(monthly, apr01, apr30); periodC = createPeriod(monthly, may01, may31); periodService.addPeriod(periodA); periodService.addPeriod(periodB); periodService.addPeriod(periodC); // --------------------------------------------------------------------- // Setup OrganisationUnits // --------------------------------------------------------------------- unitA = createOrganisationUnit('A'); unitB = createOrganisationUnit('B', unitA); unitC = createOrganisationUnit('C', unitA); unitD = createOrganisationUnit('D', unitB); unitE = createOrganisationUnit('E', unitB); unitF = createOrganisationUnit('F', unitB); unitG = createOrganisationUnit('G', unitF); unitH = createOrganisationUnit('H', unitF); unitI = createOrganisationUnit('I'); organisationUnitService.addOrganisationUnit(unitA); organisationUnitService.addOrganisationUnit(unitB); organisationUnitService.addOrganisationUnit(unitC); organisationUnitService.addOrganisationUnit(unitD); organisationUnitService.addOrganisationUnit(unitE); organisationUnitService.addOrganisationUnit(unitF); organisationUnitService.addOrganisationUnit(unitG); organisationUnitService.addOrganisationUnit(unitH); organisationUnitService.addOrganisationUnit(unitI); // --------------------------------------------------------------------- // Setup DataValues // --------------------------------------------------------------------- dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitC, "90", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitD, "10", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitE, "35", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitF, "25", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitG, "20", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodA, unitH, "60", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitC, "70", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitD, "40", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitE, "65", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitF, "55", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitG, "20", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodB, unitH, "15", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitC, "95", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitD, "40", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitE, "45", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitF, "30", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitG, "50", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementA, periodC, unitH, "70", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitC, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitD, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitE, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitF, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitG, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodA, unitH, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitC, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitD, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitE, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitF, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitG, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodB, unitH, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitC, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitD, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitE, F, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitF, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitG, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementB, periodC, unitH, T, categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementC, periodA, unitB, "30", categoryOptionComboA)); dataValueService.addDataValue( createDataValue(dataElementC, periodA, unitB, "20", categoryOptionComboB)); aggregationService.clearCache(); }