=== 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 2014-12-24 15:13:37 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2014-12-24 15:51:20 +0000 @@ -63,6 +63,7 @@ import org.hisp.dhis.dataelement.DataElementCategoryCombo; import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo; import org.hisp.dhis.dataelement.DataElementCategoryService; +import org.hisp.dhis.dataelement.DataElementGroup; import org.hisp.dhis.dataelement.DataElementGroupSet; import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.dataelement.DataElementOperandService; @@ -866,7 +867,8 @@ if ( DATA_X_DIM_ID.equals( dimension ) ) { List dataDimensions = new ArrayList<>(); - + List dataElementGroups = new ArrayList<>(); + List indicators = new ArrayList<>(); List dataElements = new ArrayList<>(); List dataSets = new ArrayList<>(); @@ -875,6 +877,20 @@ options: for ( String uid : items ) { + if ( uid != null && uid.startsWith( KEY_DE_GROUP ) ) + { + String groupUid = DimensionalObjectUtils.getUidFromGroupParam( uid ); + + DataElementGroup group = dataElementService.getDataElementGroup( groupUid ); + + if ( group != null ) + { + dataElementGroups.add( group ); + } + + continue options; + } + Indicator in = indicatorService.getIndicator( uid ); if ( in != null ) @@ -909,7 +925,15 @@ throw new IllegalQueryException( "Data dimension option identifier does not reference any option: " + uid ); } - + + if ( !dataElementGroups.isEmpty() ) + { + for ( DataElementGroup group : dataElementGroups ) + { + dataElements.addAll( group.getMembers() ); + } + } + if ( !indicators.isEmpty() ) { dataDimensions.add( new BaseDimensionalObject( INDICATOR_DIM_ID, DimensionType.INDICATOR, indicators ) );