=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/Grid.java 2012-02-20 10:20:01 +0000 @@ -195,4 +195,12 @@ * @oaram addHeader indicates whether to add a grid header for the regression column. */ Grid addRegressionColumn( int columnIndex, boolean addHeader ); + + /** + * Adds a cumulative column to the grid. Column must hold numeric data. + * + * @param columnIndex the index of the base column. + * @param addHeader indicates whether to add a grid header for the regression column. + */ + Grid addCumulativeColumn( int columnIndex, boolean addHeader ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/reporttable/ReportTable.java 2012-02-20 10:20:01 +0000 @@ -167,9 +167,14 @@ // ------------------------------------------------------------------------- /** - * Whether the ReportTable contains regression columns. + * Indicates whether the ReportTable contains regression columns. */ private boolean regression; + + /** + * Indicates whether the ReportTable contains cumulative columns. + */ + private boolean cumulative; /** * The list of DataElements the ReportTable contains. @@ -352,7 +357,7 @@ * @param relatives the relative periods. * @param i18nFormat the i18n format. Not persisted. */ - public ReportTable( String name, boolean regression, List dataElements, List indicators, + public ReportTable( String name, List dataElements, List indicators, List dataSets, List periods, List relativePeriods, List units, List relativeUnits, List organisationUnitGroups, DataElementCategoryCombo categoryCombo, boolean doIndicators, @@ -360,7 +365,6 @@ I18nFormat i18nFormat, String reportingPeriodName ) { this.name = name; - this.regression = regression; this.dataElements = dataElements; this.indicators = indicators; this.dataSets = dataSets; @@ -877,6 +881,16 @@ this.regression = regression; } + public boolean isCumulative() + { + return cumulative; + } + + public void setCumulative( boolean cumulative ) + { + this.cumulative = cumulative; + } + @XmlElementWrapper( name = "dataElements" ) @XmlElement( name = "dataElement" ) @XmlJavaTypeAdapter( DataElementXmlAdapter.class ) === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-02-17 13:25:29 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-02-20 10:20:01 +0000 @@ -391,6 +391,7 @@ executeSql( "update reporttable set last6bimonths = false where last6bimonths is null" ); executeSql( "update reporttable set last4quarters = false where last4quarters is null" ); executeSql( "update reporttable set last2sixmonths = false where last2sixmonths is null" ); + executeSql( "update reporttable set cumulative = false where cumulative is null" ); executeSql( "update chart set reportingmonth = false where reportingmonth is null" ); executeSql( "update chart set reportingbimonth = false where reportingbimonth is null" ); === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java 2012-02-13 17:25:28 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/reporttable/impl/DefaultReportTableService.java 2012-02-20 10:20:01 +0000 @@ -347,10 +347,10 @@ */ private Grid getGrid( ReportTable reportTable ) { - String subtitle = StringUtils.trimToEmpty( reportTable.getParentOrganisationUnitName() ) + SPACE + final String subtitle = StringUtils.trimToEmpty( reportTable.getParentOrganisationUnitName() ) + SPACE + StringUtils.trimToEmpty( reportTable.getReportingPeriodName() ); - Grid grid = new ListGrid().setTitle( reportTable.getName() ).setSubtitle( subtitle ); + final Grid grid = new ListGrid().setTitle( reportTable.getName() ).setSubtitle( subtitle ); final Map map = reportTableManager.getAggregatedValueMap( reportTable ); @@ -380,6 +380,9 @@ grid.addHeader( new GridHeader( PRETTY_COLUMNS.get( ORGANISATION_UNIT_IS_PARENT_COLUMN_NAME ), ORGANISATION_UNIT_IS_PARENT_COLUMN_NAME, String.class.getName(), true, true ) ); + final int startColumnIndex = grid.getHeaders().size(); + final int numberOfColumns = reportTable.getColumns().size(); + for ( List column : reportTable.getColumns() ) { grid.addHeader( new GridHeader( getPrettyColumnName( column ), getColumnName( column ), Double.class @@ -453,9 +456,14 @@ } } - if ( reportTable.isRegression() && !reportTable.doTotal() ) - { - addRegressionToGrid( grid, reportTable.getColumns().size() ); + if ( reportTable.isRegression() ) + { + addRegressionToGrid( grid, startColumnIndex, numberOfColumns ); + } + + if ( reportTable.isCumulative() ) + { + addCumulativesToGrid( grid, startColumnIndex, numberOfColumns ); } // --------------------------------------------------------------------- @@ -478,13 +486,12 @@ /** * Adds columns with regression values to the given grid. * - * @param grid the grid. - * @param numberOfColumns the number of columns. + * @param grid the grid. + * @param startColumnIndex the index of the first data column. + * @param numberOfColumns the number of data columns. */ - private Grid addRegressionToGrid( Grid grid, int numberOfColumns ) + private Grid addRegressionToGrid( Grid grid, int startColumnIndex, int numberOfColumns ) { - int startColumnIndex = grid.getWidth() - numberOfColumns; - for ( int i = 0; i < numberOfColumns; i++ ) { int columnIndex = i + startColumnIndex; @@ -494,6 +501,25 @@ return grid; } + + /** + * Adds columns with cumulative values to the given grid. + * + * @param grid the grid. + * @param startColumnIndex the index of the first data column. + * @param numberOfColumns the number of data columns. + */ + private Grid addCumulativesToGrid( Grid grid, int startColumnIndex, int numberOfColumns ) + { + for ( int i = 0; i < numberOfColumns; i++ ) + { + int columnIndex = i + startColumnIndex; + + grid.addCumulativeColumn( columnIndex, true ); + } + + return grid; + } /** * Checks whether the given List of IdentifiableObjects contains an object === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml' --- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml 2011-12-23 10:50:09 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/org/hisp/dhis/reporttable/hibernate/ReportTable.hbm.xml 2012-02-20 10:20:01 +0000 @@ -16,6 +16,8 @@ &identifiableProperties; + + === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableGridTest.java' --- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableGridTest.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableGridTest.java 2012-02-20 10:20:01 +0000 @@ -387,7 +387,7 @@ @Test public void testGetOrgUnitIndicatorReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -411,7 +411,7 @@ @Test public void testGetIndicatorOrgUnitReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -437,7 +437,7 @@ @Test public void testGetIndicatorOrgUnitReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -461,7 +461,7 @@ @Test public void testGetDataElementOrgUnitReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -485,7 +485,7 @@ @Test public void testGetDataElementOrgUnitReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -511,7 +511,7 @@ @Test public void testGetDataElementOrgUnitReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, new ArrayList(), new ArrayList(), groups, null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -535,7 +535,7 @@ @Test public void testGetIndicatorReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -557,7 +557,7 @@ @Test public void testGetIndicatorReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -581,7 +581,7 @@ @Test public void testGetIndicatorReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -603,7 +603,7 @@ @Test public void testGetDataElementReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -625,7 +625,7 @@ @Test public void testGetDataElementReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -649,7 +649,7 @@ @Test public void testGetDataElementReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -671,7 +671,7 @@ @Test public void testGetDataSetReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -693,7 +693,7 @@ @Test public void testGetDataSetReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -717,7 +717,7 @@ @Test public void testGetDataSetReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -752,7 +752,7 @@ batchHandler.flush(); - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryComboA, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -795,7 +795,7 @@ batchHandler.flush(); - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryComboA, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -840,7 +840,7 @@ batchHandler.flush(); - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryComboA, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -883,7 +883,7 @@ batchHandler.flush(); - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryComboA, false, false, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -927,7 +927,7 @@ @Test public void testGetMultiReportTableA() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", dataElements, indicators, dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -965,7 +965,7 @@ @Test public void testGetMultiReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, indicators, dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -1013,7 +1013,7 @@ @Test public void testGetMultiReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, indicators, dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -1051,7 +1051,7 @@ @Test public void testGetIndicatorReportTableColumnsOnly() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -1072,7 +1072,7 @@ @Test public void testGetIndicatorReportTableRowsOnly() { - ReportTable reportTable = new ReportTable( "Prescriptions", false, + ReportTable reportTable = new ReportTable( "Prescriptions", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, false, new RelativePeriods(), null, i18nFormat, "january_2000" ); @@ -1093,7 +1093,7 @@ @Test public void testGetIndicatorReportTableTopLimit() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); reportTable.setTopLimit( 2 ); @@ -1114,7 +1114,7 @@ @Test public void testGetIndicatorReportTableSortOrder() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); reportTable.setSortOrder( ReportTable.DESC ); @@ -1139,10 +1139,12 @@ @Test public void testGetDataElementReportTableRegression() { - ReportTable reportTable = new ReportTable( "Embezzlement", true, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, new RelativePeriods(), null, i18nFormat, "january_2000" ); - + + reportTable.setRegression( true ); + int id = reportTableService.saveReportTable( reportTable ); Grid grid = reportTableService.getReportTableGrid( id, i18nFormat, date, 0 ); === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableStoreTest.java' --- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableStoreTest.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableStoreTest.java 2012-02-20 10:20:01 +0000 @@ -181,13 +181,13 @@ @Test public void testSaveGetReportTable() { - ReportTable reportTableA = new ReportTable( "Immunization", false, + ReportTable reportTableA = new ReportTable( "Immunization", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); - ReportTable reportTableB = new ReportTable( "Prescriptions", false, + ReportTable reportTableB = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); - ReportTable reportTableC = new ReportTable( "Assualt", false, + ReportTable reportTableC = new ReportTable( "Assualt", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -233,10 +233,10 @@ @Test public void testDeleteReportTable() { - ReportTable reportTableA = new ReportTable( "Immunization", false, + ReportTable reportTableA = new ReportTable( "Immunization", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); - ReportTable reportTableB = new ReportTable( "Prescriptions", false, + ReportTable reportTableB = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -260,10 +260,10 @@ @Test public void testGetAllReportTables() { - ReportTable reportTableA = new ReportTable( "Immunization", false, + ReportTable reportTableA = new ReportTable( "Immunization", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); - ReportTable reportTableB = new ReportTable( "Prescriptions", false, + ReportTable reportTableB = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -279,10 +279,10 @@ @Test public void testGetReportTableByName() { - ReportTable reportTableA = new ReportTable( "Immunization", false, + ReportTable reportTableA = new ReportTable( "Immunization", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); - ReportTable reportTableB = new ReportTable( "Prescriptions", false, + ReportTable reportTableB = new ReportTable( "Prescriptions", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableTest.java' --- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableTest.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/reporttable/ReportTableTest.java 2012-02-20 10:20:01 +0000 @@ -356,7 +356,7 @@ @Test public void testOrganisationUnitGroupReportTableA() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, new ArrayList(), relativeUnits, groups, null, true, true, false, relatives, null, i18nFormat, "january_2000" ); @@ -414,7 +414,7 @@ @Test public void testOrganisationUnitGroupReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, new ArrayList(), relativeUnits, groups, null, true, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -470,7 +470,7 @@ @Test public void testIndicatorReportTableA() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); @@ -528,7 +528,7 @@ @Test public void testIndicatorReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -586,7 +586,7 @@ @Test public void testIndicatorReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -642,7 +642,7 @@ @Test public void testIndicatorReportTableColumnsOnly() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, true, relatives, null, i18nFormat, "january_2000" ); @@ -672,7 +672,7 @@ @Test public void testIndicatorReportTableRowsOnly() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), indicators, new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, false, relatives, null, i18nFormat, "january_2000" ); @@ -702,7 +702,7 @@ @Test public void testDataElementReportTableA() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); @@ -744,7 +744,7 @@ @Test public void testDataElementReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -786,7 +786,7 @@ @Test public void testDataElementReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -828,7 +828,7 @@ @Test public void testCategoryComboReportTableA() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryCombo, true, true, false, relatives, null, i18nFormat, "january_2000" ); @@ -889,7 +889,7 @@ @Test public void testCategoryComboReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryCombo, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -946,7 +946,7 @@ @Test public void testCategoryComboReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", dataElements, new ArrayList(), new ArrayList(), periods, relativePeriods, units, new ArrayList(), new ArrayList(), categoryCombo, true, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -1001,7 +1001,7 @@ @Test public void testDataSetReportTableA() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, true, false, relatives, null, i18nFormat, "january_2000" ); @@ -1043,7 +1043,7 @@ @Test public void testDataSetReportTableB() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, false, false, true, relatives, null, i18nFormat, "january_2000" ); @@ -1085,7 +1085,7 @@ @Test public void testDataSetReportTableC() { - ReportTable reportTable = new ReportTable( "Embezzlement", false, + ReportTable reportTable = new ReportTable( "Embezzlement", new ArrayList(), new ArrayList(), dataSets, periods, relativePeriods, units, new ArrayList(), new ArrayList(), null, true, false, true, relatives, null, i18nFormat, "january_2000" ); === modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/grid/ListGrid.java 2012-02-20 10:20:01 +0000 @@ -35,6 +35,7 @@ import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; import org.hisp.dhis.common.adapter.GridRowsXmlAdapter; +import org.hisp.dhis.system.util.MathUtils; import javax.xml.bind.annotation.*; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; @@ -52,6 +53,7 @@ implements Grid { private static final String REGRESSION_SUFFIX = "_regression"; + private static final String CUMULATIVE_SUFFIX = "_cumulative"; /** * The title of the grid. @@ -386,7 +388,7 @@ for ( Object value : column ) { - if ( Double.parseDouble( String.valueOf( value ) ) != 0.0 ) // 0 omitted from regression + if ( !MathUtils.isEqual( Double.parseDouble( String.valueOf( value ) ), 0d ) ) // 0 omitted from regression { regression.addData( index++, Double.parseDouble( String.valueOf( value ) ) ); } @@ -425,7 +427,44 @@ return this; } - + + public Grid addCumulativeColumn( int columnIndex, boolean addHeader ) + { + verifyGridState(); + + List column = getColumn( columnIndex ); + + List cumulativeColumn = new ArrayList(); + + double sum = 0d; + + for ( Object value : column ) + { + double number = value != null ? Double.parseDouble( String.valueOf( value ) ) : 0d; + + sum += number; + + cumulativeColumn.add( sum ); + } + + addColumn( cumulativeColumn ); + + if ( addHeader && columnIndex < headers.size() ) + { + GridHeader header = headers.get( columnIndex ); + + if ( header != null ) + { + GridHeader regressionHeader = new GridHeader( header.getName() + CUMULATIVE_SUFFIX, + header.getColumn() + CUMULATIVE_SUFFIX, header.getType(), header.isHidden(), header.isMeta() ); + + addHeader( regressionHeader ); + } + } + + return this; + } + // ------------------------------------------------------------------------- // JRDataSource implementation // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java' --- dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/test/java/org/hisp/dhis/system/grid/GridTest.java 2012-02-20 10:20:01 +0000 @@ -426,7 +426,7 @@ @Test public void testAddRegressionColumn() { - grid = new ListGrid(); + grid = new ListGrid(); grid.addRow(); grid.addValue( 10.0 ); @@ -447,6 +447,31 @@ assertTrue( column.contains( 41.0 ) ); assertTrue( column.contains( 53.0 ) ); } + + @Test + public void testAddCumulativeColumn() + { + grid = new ListGrid(); + + grid.addRow(); + grid.addValue( 10.0 ); + grid.addRow(); + grid.addValue( 50.0 ); + grid.addRow(); + grid.addValue( 20.0 ); + grid.addRow(); + grid.addValue( 60.0 ); + + grid.addCumulativeColumn( 0, true ); + + List column = grid.getColumn( 1 ); + + assertTrue( column.size() == 4 ); + assertTrue( column.contains( 10.0 ) ); + assertTrue( column.contains( 60.0 ) ); + assertTrue( column.contains( 80.0 ) ); + assertTrue( column.contains( 140.0 ) ); + } @Test public void testJRDataSource() throws Exception === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/SaveTableAction.java' --- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/SaveTableAction.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/tablecreator/action/SaveTableAction.java 2012-02-20 10:20:01 +0000 @@ -160,6 +160,13 @@ this.regression = regression; } + private boolean cumulative; + + public void setCumulative( boolean cumulative ) + { + this.cumulative = cumulative; + } + private Integer categoryComboId; public void setCategoryComboId( Integer categoryComboId ) @@ -429,20 +436,15 @@ if ( tableId == null ) { - reportTable = new ReportTable( tableName, regression, + reportTable = new ReportTable( tableName, dataElements, indicators, dataSets, periods, null, units, null, organisationUnitGroups, categoryCombo, doIndicators, doPeriods, doOrganisationUnits, relatives, reportParams, null, null ); - - reportTable.setSortOrder( sortOrder ); - reportTable.setTopLimit( topLimit ); } else { reportTable = reportTableService.getReportTable( tableId ); reportTable.setName( tableName ); - reportTable.setSortOrder( sortOrder ); - reportTable.setTopLimit( topLimit ); reportTable.setRegression( regression ); reportTable.setDataElements( dataElements ); reportTable.setIndicators( indicators ); @@ -457,6 +459,11 @@ reportTable.setRelatives( relatives ); reportTable.setReportParams( reportParams ); } + + reportTable.setRegression( regression ); + reportTable.setCumulative( cumulative ); + reportTable.setSortOrder( sortOrder ); + reportTable.setTopLimit( topLimit ); return reportTable; } === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/org/hisp/dhis/reporting/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/org/hisp/dhis/reporting/i18n_module.properties 2012-02-12 19:23:31 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/org/hisp/dhis/reporting/i18n_module.properties 2012-02-20 10:20:01 +0000 @@ -406,4 +406,5 @@ start_date = Start date end_date = End date start_export = Start export -period_types = Period types \ No newline at end of file +period_types = Period types +include_cumulative = Include cumulative \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addTableForm.vm' --- dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addTableForm.vm 2012-01-25 19:22:00 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/webapp/dhis-web-reporting/addTableForm.vm 2012-02-20 10:20:01 +0000 @@ -76,7 +76,12 @@ - + + + + + +