=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java 2013-09-27 18:32:05 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/DimensionalObject.java 2013-09-29 16:17:08 +0000 @@ -57,12 +57,26 @@ PERIOD_DIM_ID, "Period", ORGUNIT_DIM_ID, "Organisation unit" ); + /** + * Gets the dimension identifier. + */ String getDimension(); + /** + * Gets the dimension type. + */ DimensionType getType(); + /** + * Gets the dimension name, which corresponds to a column in the analytics + * tables. + */ String getDimensionName(); + /** + * Gets the dimension display name, which is a readable name describing the + * dimension. + */ String getDisplayName(); List getItems(); === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2013-09-29 15:48:42 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/EventQueryParams.java 2013-09-29 16:17:08 +0000 @@ -79,8 +79,6 @@ private String periodType; - private int organisationUnitLevel; - // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -113,7 +111,6 @@ params.page = this.page; params.pageSize = this.pageSize; params.periodType = this.periodType; - params.organisationUnitLevel = this.organisationUnitLevel; return params; } @@ -314,14 +311,4 @@ { this.periodType = periodType; } - - public int getOrganisationUnitLevel() - { - return organisationUnitLevel; - } - - public void setOrganisationUnitLevel( int organisationUnitLevel ) - { - this.organisationUnitLevel = organisationUnitLevel; - } } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2013-09-29 15:48:42 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventAnalyticsService.java 2013-09-29 16:17:08 +0000 @@ -47,6 +47,7 @@ import org.hisp.dhis.analytics.event.EventQueryPlanner; import org.hisp.dhis.analytics.event.QueryItem; import org.hisp.dhis.common.BaseIdentifiableObject; +import org.hisp.dhis.common.DimensionalObject; import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; import org.hisp.dhis.common.IdentifiableObject; @@ -129,13 +130,16 @@ // Headers // --------------------------------------------------------------------- + for ( DimensionalObject dimension : params.getDimensions() ) + { + grid.addHeader( new GridHeader( dimension.getDimension(), dimension.getDisplayName() ) ); + } + for ( QueryItem item : params.getItems() ) { grid.addHeader( new GridHeader( item.getItem().getUid(), item.getItem().getName() ) ); } - grid.addHeader( new GridHeader( PERIOD_DIM_ID, "Period" ) ); - grid.addHeader( new GridHeader( ORGUNIT_DIM_ID, "Organisation unit" ) ); grid.addHeader( new GridHeader( "value", "Value" ) ); // --------------------------------------------------------------------- @@ -175,9 +179,9 @@ grid.addHeader( new GridHeader( ITEM_EVENT, "Event" ) ); grid.addHeader( new GridHeader( ITEM_PROGRAM_STAGE, "Program stage" ) ); grid.addHeader( new GridHeader( ITEM_EXECUTION_DATE, "Execution date" ) ); - grid.addHeader( new GridHeader( ITEM_ORG_UNIT, "Organisation unit" ) ); grid.addHeader( new GridHeader( ITEM_ORG_UNIT_NAME, "Organisation unit name" ) ); grid.addHeader( new GridHeader( ITEM_ORG_UNIT_CODE, "Organisation unit code" ) ); + grid.addHeader( new GridHeader( ITEM_ORG_UNIT, "Organisation unit" ) ); for ( QueryItem queryItem : params.getItems() ) { === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java 2013-09-29 15:48:42 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/DefaultEventQueryPlanner.java 2013-09-29 16:17:08 +0000 @@ -35,6 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.analytics.IllegalQueryException; +import org.hisp.dhis.analytics.QueryPlanner; import org.hisp.dhis.analytics.event.EventQueryParams; import org.hisp.dhis.analytics.event.EventQueryPlanner; import org.hisp.dhis.common.ListMap; @@ -43,6 +44,7 @@ import org.hisp.dhis.period.Cal; import org.hisp.dhis.period.Period; import org.hisp.dhis.program.Program; +import org.springframework.beans.factory.annotation.Autowired; /** * @author Lars Helge Overland @@ -54,6 +56,9 @@ private static final String TABLE_BASE_NAME = "analytics_event_"; + @Autowired + private QueryPlanner queryPlanner; + public void validate( EventQueryParams params ) throws IllegalQueryException { @@ -168,7 +173,6 @@ { EventQueryParams query = params.instance(); query.setOrganisationUnits( levelOrgUnitMap.get( level ) ); - query.setOrganisationUnitLevel( level ); queries.add( query ); } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2013-09-29 15:48:42 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2013-09-29 16:17:08 +0000 @@ -39,6 +39,7 @@ import org.hisp.dhis.analytics.event.EventAnalyticsManager; import org.hisp.dhis.analytics.event.EventQueryParams; import org.hisp.dhis.analytics.event.QueryItem; +import org.hisp.dhis.common.DimensionalObject; import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.common.NameableObject; @@ -70,8 +71,7 @@ public Grid getAggregatedEventData( EventQueryParams params, Grid grid ) { - String sql = "select count(psi) as value, uidlevel" + - params.getOrganisationUnitLevel() + getItemColumns( params ) + " "; + String sql = "select count(psi) as value," + getSelectColumns( params ) + " "; // --------------------------------------------------------------------- // Criteria @@ -83,7 +83,7 @@ // Group by // --------------------------------------------------------------------- - sql += "group by uidlevel" + params.getOrganisationUnitLevel() + getItemColumns( params ); + sql += "group by " + getSelectColumns( params ); // --------------------------------------------------------------------- // Grid @@ -98,17 +98,22 @@ while ( rowSet.next() ) { int value = rowSet.getInt( "value" ); - String ou = rowSet.getString( params.getOrganisationUnitLevel() ); grid.addRow(); + for ( DimensionalObject dimension : params.getDimensions() ) + { + String dimensionValue = rowSet.getString( dimension.getDimensionName() ); + grid.addValue( dimensionValue ); + } + for ( QueryItem queryItem : params.getItems() ) { - String item = rowSet.getString( queryItem.getItem().getUid() ); - grid.addValue( item ); + String itemValue = rowSet.getString( queryItem.getItem().getUid() ); + grid.addValue( itemValue ); } - grid.addValue( null ).addValue( ou ).addValue( value ); + grid.addValue( value ); } return grid; @@ -116,7 +121,7 @@ public Grid getEvents( EventQueryParams params, Grid grid ) { - String sql = "select psi,ps,executiondate,ou,ouname,oucode" + getItemColumns( params ) + " "; + String sql = "select psi,ps,executiondate,ouname,oucode," + getSelectColumns( params ) + " "; // --------------------------------------------------------------------- // Criteria @@ -200,9 +205,14 @@ // Supportive methods // ------------------------------------------------------------------------- - private String getItemColumns( EventQueryParams params ) + private String getSelectColumns( EventQueryParams params ) { - String sql = params.getItems().isEmpty() ? "" : ","; + String sql = ""; + + for ( DimensionalObject dimension : params.getDimensions() ) + { + sql += dimension.getDimensionName() + ","; + } for ( QueryItem queryItem : params.getItems() ) { === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/index.html' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/index.html 2013-09-25 07:00:33 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/app/index.html 2013-09-29 16:17:08 +0000 @@ -1,6 +1,6 @@ - DHIS 2 Beneficary Tabular Report + DHIS 2 Tabular Report