=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueService.java 2011-08-24 20:25:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueService.java 2011-09-23 14:45:35 +0000 @@ -180,6 +180,22 @@ Collection organisationUnitIds ); /** + * Deletes AggregatedDataValues registered for the given parameters. + * + * @param periodIds a collection of Period identifiers. + * @return the number of deleted AggregatedDataValues. + */ + int deleteAggregatedDataValues( Collection periodIds ); + + /** + * Deletes AggregatedIndicatorValue registered for the given parameters. + * + * @param periodIds a collection of Period identifiers. + * @return the number of deleted AggregatedIndicatorValues. + */ + int deleteAggregatedIndicatorValues( Collection periodIds ); + + /** * Deletes all AggregatedDataValues. * * @return the number of deleted AggregatedDataValues. === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueStore.java 2011-08-24 20:25:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/aggregation/AggregatedDataValueStore.java 2011-09-23 14:45:35 +0000 @@ -157,6 +157,14 @@ Collection organisationUnitIds ); /** + * Deletes AggregatedDataValues registered for the given parameters. + * + * @param periodIds a collection of Period identifiers. + * @return the number of deleted AggregatedDataValues. + */ + int deleteAggregatedDataValues( Collection periodIds ); + + /** * Deletes all AggregatedDataValues. * * @return the number of deleted AggregatedDataValues. @@ -257,6 +265,14 @@ */ int deleteAggregatedIndicatorValues( Collection indicatorIds, Collection periodIds, Collection organisationUnitIds ); + + /** + * Deletes AggregatedIndicatorValue registered for the given parameters. + * + * @param periodIds a collection of Period identifiers. + * @return the number of deleted AggregatedIndicatorValues. + */ + int deleteAggregatedIndicatorValues( Collection periodIds ); /** * Deletes all AggregatedIndicatorValue. === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/DefaultAggregatedDataValueService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/DefaultAggregatedDataValueService.java 2011-08-24 20:25:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/DefaultAggregatedDataValueService.java 2011-09-23 14:45:35 +0000 @@ -122,6 +122,11 @@ { return aggregatedDataValueStore.deleteAggregatedDataValues( dataElementIds, periodIds, organisationUnitIds ); } + + public int deleteAggregatedDataValues( Collection periodIds ) + { + return aggregatedDataValueStore.deleteAggregatedDataValues( periodIds ); + } public int deleteAggregatedDataValues() { @@ -187,19 +192,22 @@ { return aggregatedDataValueStore.deleteAggregatedIndicatorValues( indicatorIds, periodIds, organisationUnitIds ); } + + public int deleteAggregatedIndicatorValues( Collection periodIds ) + { + return aggregatedDataValueStore.deleteAggregatedIndicatorValues( periodIds ); + } public int deleteAggregatedIndicatorValues() { return aggregatedDataValueStore.deleteAggregatedIndicatorValues(); } - @Override public StoreIterator getAggregateIndicatorValuesAtLevel( OrganisationUnit orgunit, OrganisationUnitLevel level, Collection periods ) { return aggregatedDataValueStore.getAggregatedIndicatorValuesAtLevel( orgunit, level, periods ); } - @Override public int countIndicatorValuesAtLevel( OrganisationUnit orgunit, OrganisationUnitLevel level, Collection periods ) { return aggregatedDataValueStore.countIndicatorValuesAtLevel( orgunit, level, periods ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/jdbc/JdbcAggregatedDataValueStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/jdbc/JdbcAggregatedDataValueStore.java 2011-08-24 20:25:14 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/aggregation/jdbc/JdbcAggregatedDataValueStore.java 2011-09-23 14:45:35 +0000 @@ -290,7 +290,6 @@ } } - @Override public StoreIterator getAggregatedDataValuesAtLevel( OrganisationUnit rootOrgunit, OrganisationUnitLevel level, Collection periods ) { final StatementHolder holder = statementManager.getHolder(); @@ -329,7 +328,6 @@ } } - @Override public int countDataValuesAtLevel( OrganisationUnit rootOrgunit, OrganisationUnitLevel level, Collection periods ) { final String periodids = getCommaDelimitedString( getIdentifiers(Period.class, periods)); @@ -356,6 +354,15 @@ return statementManager.getHolder().executeUpdate( sql ); } + public int deleteAggregatedDataValues( Collection periodIds ) + { + final String sql = + "DELETE FROM aggregateddatavalue " + + "WHERE periodid IN ( " + getCommaDelimitedString( periodIds ) + " )"; + + return statementManager.getHolder().executeUpdate( sql ); + } + public int deleteAggregatedDataValues() { return statementManager.getHolder().executeUpdate( "DELETE FROM aggregateddatavalue" ); @@ -538,6 +545,15 @@ return statementManager.getHolder().executeUpdate( sql ); } + + public int deleteAggregatedIndicatorValues( Collection periodIds ) + { + final String sql = + "DELETE FROM aggregatedindicatorvalue " + + "WHERE periodid IN ( " + getCommaDelimitedString( periodIds ) + " )"; + + return statementManager.getHolder().executeUpdate( sql ); + } public int deleteAggregatedIndicatorValues() { @@ -797,7 +813,7 @@ while ( resultSet.next() ) { - final DataElementOperand operand = new DataElementOperand( resultSet.getInt( 1 ), resultSet.getInt( 2 ), null ); + final DataElementOperand operand = new DataElementOperand( resultSet.getInt( 1 ), resultSet.getInt( 2 ) ); map.put( operand, resultSet.getString( 3 ) ); } === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2011-08-29 19:26:15 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/engine/DefaultDataMartEngine.java 2011-09-23 14:45:35 +0000 @@ -245,9 +245,16 @@ // Delete existing aggregated data // --------------------------------------------------------------------- - aggregatedDataValueService.deleteAggregatedDataValues( dataElementIds, periodIds, organisationUnitIds ); - - aggregatedDataValueService.deleteAggregatedIndicatorValues( indicatorIds, periodIds, organisationUnitIds ); + if ( completeExport ) + { + aggregatedDataValueService.deleteAggregatedDataValues( periodIds ); + aggregatedDataValueService.deleteAggregatedIndicatorValues( periodIds ); + } + else + { + aggregatedDataValueService.deleteAggregatedDataValues( dataElementIds, periodIds, organisationUnitIds ); + aggregatedDataValueService.deleteAggregatedIndicatorValues( indicatorIds, periodIds, organisationUnitIds ); + } clock.logTime( "Deleted existing aggregated data" );