=== modified file 'dhis-2/build.sh' (properties changed: -x to +x) === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java 2013-05-27 12:47:46 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataelement/DataElementOperand.java 2013-06-06 08:48:20 +0000 @@ -189,6 +189,24 @@ return name; } + @Override + public String getShortName() + { + String shortName = null; + + if ( dataElement != null ) + { + shortName = dataElement.getShortName(); + } + + if ( categoryOptionCombo != null ) + { + shortName += SPACE + categoryOptionCombo.getName(); + } + + return shortName; + } + /** * Tests whether the operand has any aggregation levels. */ === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-05-29 18:35:32 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-06-06 08:48:20 +0000 @@ -96,6 +96,7 @@ import org.hisp.dhis.dataelement.DataElementCategoryService; import org.hisp.dhis.dataelement.DataElementGroupSet; import org.hisp.dhis.dataelement.DataElementOperand; +import org.hisp.dhis.dataelement.DataElementOperandService; import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; @@ -171,6 +172,9 @@ @Autowired private CurrentUserService currentUserService; + + @Autowired + private DataElementOperandService operandService; // ------------------------------------------------------------------------- // Implementation @@ -670,6 +674,7 @@ List indicators = new ArrayList(); List dataElements = new ArrayList(); List dataSets = new ArrayList(); + List operandDataElements = new ArrayList(); options : for ( String uid : items ) { @@ -697,6 +702,14 @@ continue options; } + DataElementOperand dc = operandService.getDataElementOperandByUid( uid ); + + if ( dc != null ) + { + operandDataElements.add( dc.getDataElement() ); + continue options; + } + throw new IllegalQueryException( "Data dimension option identifier does not reference any option: " + uid ); } @@ -715,7 +728,13 @@ dataDimensions.add( new BaseDimensionalObject( DATASET_DIM_ID, DimensionType.DATASET, dataSets ) ); } - if ( indicators.isEmpty() && dataElements.isEmpty() && dataSets.isEmpty() ) + if ( !operandDataElements.isEmpty() ) + { + dataDimensions.add( new BaseDimensionalObject( DATAELEMENT_DIM_ID, DimensionType.DATAELEMENT, operandDataElements ) ); + dataDimensions.add( new BaseDimensionalObject( CATEGORYOPTIONCOMBO_DIM_ID, DimensionType.CATEGORY_OPTION_COMBO, new ArrayList() ) ); + } + + if ( indicators.isEmpty() && dataElements.isEmpty() && dataSets.isEmpty() && operandDataElements.isEmpty() ) { throw new IllegalQueryException( "Dimension dx is present in query without any valid dimension options" ); } === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2013-05-29 13:18:45 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/chart/impl/DefaultChartService.java 2013-06-06 08:48:20 +0000 @@ -60,6 +60,7 @@ import org.hisp.dhis.common.NameableObject; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; +import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.datavalue.DataValue; import org.hisp.dhis.datavalue.DataValueService; import org.hisp.dhis.i18n.I18nFormat; @@ -694,6 +695,10 @@ String key = series.getUid() + DIMENSION_SEP + category.getUid(); + // Replace potential operand separator with dimension separator + + key = key.replace( DataElementOperand.SEPARATOR, DIMENSION_SEP ); + Double value = valueMap.get( key ); regularDataSet.addValue( value, series.getShortName(), category.getShortName() );