=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessResult.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessResult.java 2011-02-03 17:03:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessResult.java 2011-03-01 17:14:27 +0000 @@ -197,7 +197,7 @@ @Override public String toString() { - String toString = "[" + name + " - " + registrations + " / " + sources + "]"; + String toString = "[Name: " + name + ", Reg: " + registrations + ", On time: " + registrationsOnTime + ", Src: " + sources + "]"; return toString; } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessStore.java 2011-02-03 20:42:05 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessStore.java 2011-03-01 17:14:27 +0000 @@ -42,6 +42,10 @@ { String ID = DataSetCompletenessStore.class.getName(); + int getCompleteDataSetRegistrations( DataSet dataSet, Period period, Collection sources ); + + int getCompleteDataSetRegistrations( DataSet dataSet, Period period, Collection sources, Date deadline ); + /** * Gets the percentage value for the datasetcompleteness with the given parameters. * === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java 2010-04-12 21:23:33 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataset/DefaultCompleteDataSetRegistrationService.java 2011-03-01 17:14:27 +0000 @@ -80,6 +80,7 @@ } @SuppressWarnings( "unchecked" ) + @Deprecated public int getCompleteDataSetRegistrationsForDataSet( DataSet dataSet, Collection sources, Period period ) { final Collection intersectingSources = CollectionUtils.intersection( sources, dataSet.getSources() ); @@ -93,6 +94,7 @@ } @SuppressWarnings( "unchecked" ) + @Deprecated public int getCompleteDataSetRegistrationsForDataSet( DataSet dataSet, Collection sources, Period period, Date deadline ) { final Collection intersectingSources = CollectionUtils.intersection( sources, dataSet.getSources() ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableCreator.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableCreator.java 2010-10-24 15:41:13 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableCreator.java 2011-03-01 17:14:27 +0000 @@ -101,7 +101,9 @@ try { - jdbcTemplate.execute( statementBuilder.getCreateDataValueIndex() ); + final String sql = "CREATE INDEX crosstab ON datavalue ( periodid, sourceid )"; + + jdbcTemplate.execute( sql ); log.info( "Created index crosstab on table datavalue" ); } === modified file 'dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/impl/DefaultDataMartService.java' --- dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/impl/DefaultDataMartService.java 2011-01-21 12:44:09 +0000 +++ dhis-2/dhis-services/dhis-service-datamart-default/src/main/java/org/hisp/dhis/datamart/impl/DefaultDataMartService.java 2011-03-01 17:14:27 +0000 @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.HashSet; +import java.util.List; import org.hisp.dhis.common.GenericIdentifiableObjectStore; import org.hisp.dhis.dataelement.DataElement; @@ -42,7 +43,9 @@ import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.RelativePeriods; +import org.hisp.dhis.system.filter.PastAndCurrentPeriodFilter; import org.hisp.dhis.system.process.OutputHolderState; +import org.hisp.dhis.system.util.FilterUtils; import org.springframework.transaction.annotation.Transactional; /** @@ -111,12 +114,7 @@ public int export( Collection dataElementIds, Collection indicatorIds, Collection periodIds, Collection organisationUnitIds, RelativePeriods relatives ) { - if ( relatives != null ) - { - periodIds.addAll( getIdentifiers( Period.class, periodService.reloadPeriods( relatives.getRelativePeriods( 1, null, false ) ) ) ); - } - - return dataMartEngine.export( dataElementIds, indicatorIds, periodIds, organisationUnitIds, false, new OutputHolderState() ); + return export( dataElementIds, indicatorIds, periodIds, organisationUnitIds, relatives, false ); } @Transactional @@ -125,7 +123,11 @@ { if ( relatives != null ) { - periodIds.addAll( getIdentifiers( Period.class, periodService.reloadPeriods( relatives.getRelativePeriods( 1, null, false ) ) ) ); + List periods = relatives.getRelativePeriods( 1, null, false ); + + FilterUtils.filter( periods, new PastAndCurrentPeriodFilter() ); + + periodIds.addAll( getIdentifiers( Period.class, periodService.reloadPeriods( periods ) ) ); } return dataMartEngine.export( dataElementIds, indicatorIds, periodIds, organisationUnitIds, useIndexes, new OutputHolderState() ); === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2011-02-18 20:20:07 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2011-03-01 17:14:27 +0000 @@ -54,7 +54,9 @@ import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.RelativePeriods; import org.hisp.dhis.source.Source; +import org.hisp.dhis.system.filter.PastAndCurrentPeriodFilter; import org.hisp.dhis.system.util.ConversionUtils; +import org.hisp.dhis.system.util.FilterUtils; import org.springframework.transaction.annotation.Transactional; /** @@ -144,6 +146,8 @@ { List periods = relatives.getRelativePeriods( 1, null, false ); + FilterUtils.filter( periods, new PastAndCurrentPeriodFilter() ); + Collection periodIds = ConversionUtils.getIdentifiers( Period.class, periodService.reloadPeriods( periods ) ); exportDataSetCompleteness( dataSetIds, periodIds, organisationUnitIds ); @@ -273,7 +277,7 @@ children = organisationUnitService.getOrganisationUnitWithChildren( unit.getId() ); final DataSetCompletenessResult result = new DataSetCompletenessResult(); - + result.setSources( getSources( dataSet, children ) ); if ( result.getSources() > 0 ) @@ -281,7 +285,7 @@ result.setName( unit.getName() ); result.setRegistrations( getRegistrations( dataSet, children, period ) ); result.setRegistrationsOnTime( deadline != null ? getRegistrationsOnTime( dataSet, children, period, deadline ) : 0 ); - + result.setDataSetId( dataSetId ); result.setPeriodId( periodId ); result.setOrganisationUnitId( unit.getId() ); === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java 2010-08-27 07:07:57 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java 2011-03-01 17:14:27 +0000 @@ -30,7 +30,6 @@ import java.util.Collection; import java.util.Date; -import org.hisp.dhis.dataset.CompleteDataSetRegistrationService; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.period.Period; import org.hisp.dhis.source.Source; @@ -41,21 +40,14 @@ public class RegistrationDataSetCompletenessService extends AbstractDataSetCompletenessService { - private CompleteDataSetRegistrationService registrationService; - - public void setRegistrationService( CompleteDataSetRegistrationService registrationService ) - { - this.registrationService = registrationService; - } - public int getRegistrations( DataSet dataSet, Collection children, Period period ) { - return registrationService.getCompleteDataSetRegistrationsForDataSet( dataSet, children, period ); + return completenessStore.getCompleteDataSetRegistrations( dataSet, period, children ); } public int getRegistrationsOnTime( DataSet dataSet, Collection children, Period period, Date deadline ) { - return registrationService.getCompleteDataSetRegistrationsForDataSet( dataSet, children, period, deadline ); + return completenessStore.getCompleteDataSetRegistrations( dataSet, period, children, deadline ); } public int getSources( DataSet dataSet, Collection children ) === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/jdbc/JDBCDataSetCompletenessStore.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/jdbc/JDBCDataSetCompletenessStore.java 2011-02-03 20:42:05 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/jdbc/JDBCDataSetCompletenessStore.java 2011-03-01 17:14:27 +0000 @@ -28,15 +28,19 @@ */ import static org.hisp.dhis.system.util.TextUtils.getCommaDelimitedString; +import static org.hisp.dhis.system.util.DateUtils.getMediumDateString; +import static org.hisp.dhis.system.util.ConversionUtils.getIdentifiers; import java.util.Collection; import java.util.Date; import org.amplecode.quick.StatementManager; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.completeness.DataSetCompletenessStore; import org.hisp.dhis.dataset.DataSet; +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; import org.hisp.dhis.source.Source; import org.hisp.dhis.system.util.ConversionUtils; @@ -67,6 +71,47 @@ // DataSetCompletenessStore // ------------------------------------------------------------------------- + @SuppressWarnings("unchecked") + public int getCompleteDataSetRegistrations( DataSet dataSet, Period period, Collection sources ) + { + final Collection intersectingSources = CollectionUtils.intersection( sources, dataSet.getSources() ); + + if ( intersectingSources == null || intersectingSources.size() == 0 ) + { + return 0; + } + + final String sql = + "SELECT COUNT(*) " + + "FROM completedatasetregistration " + + "WHERE datasetid = " + dataSet.getId() + " " + + "AND periodid = " + period.getId() + " " + + "AND sourceid IN ( " + getCommaDelimitedString( getIdentifiers( OrganisationUnit.class, intersectingSources ) ) + " )"; + + return statementManager.getHolder().queryForInteger( sql ); + } + + @SuppressWarnings("unchecked") + public int getCompleteDataSetRegistrations( DataSet dataSet, Period period, Collection sources, Date deadline ) + { + final Collection intersectingSources = CollectionUtils.intersection( sources, dataSet.getSources() ); + + if ( intersectingSources == null || intersectingSources.size() == 0 ) + { + return 0; + } + + final String sql = + "SELECT COUNT(*) " + + "FROM completedatasetregistration " + + "WHERE datasetid = " + dataSet.getId() + " " + + "AND periodid = " + period.getId() + " " + + "AND sourceid IN ( " + getCommaDelimitedString( getIdentifiers( OrganisationUnit.class, intersectingSources ) ) + " ) " + + "AND date <= '" + getMediumDateString( deadline ) + "'"; + + return statementManager.getHolder().queryForInteger( sql ); + } + public double getPercentage( int dataSetId, int periodId, int organisationUnitId ) { final String sql = === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-02-23 21:08:31 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-03-01 17:14:27 +0000 @@ -160,9 +160,7 @@ - + parent="compulsoryDataCompletenessService"> + + === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java 2011-01-16 07:12:01 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java 2011-03-01 17:14:27 +0000 @@ -79,12 +79,6 @@ String getCreateDataSetCompletenessTable(); /** - * Creates a create index statement for the datavalue table. - * @return a create index statement for the datavalue table. - */ - String getCreateDataValueIndex(); - - /** * Creates a delete datavalue statement. * @return a delete datavalue statement. */ === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java 2011-02-14 08:56:35 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java 2011-03-01 17:14:27 +0000 @@ -108,13 +108,6 @@ "valueOnTime DOUBLE );"; } - public String getCreateDataValueIndex() - { - return - "CREATE INDEX crosstab " + - "ON datavalue ( periodid, sourceid );"; - } - public String getDeleteZeroDataValues() { return === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2011-02-14 08:56:35 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2011-03-01 17:14:27 +0000 @@ -109,13 +109,6 @@ "valueOnTime DOUBLE );"; } - public String getCreateDataValueIndex() - { - return - "CREATE INDEX crosstab " + - "ON datavalue ( periodid, sourceid );"; - } - public String getDeleteZeroDataValues() { return === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2011-02-14 08:56:35 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2011-03-01 17:14:27 +0000 @@ -110,13 +110,6 @@ "valueOnTime DOUBLE );"; } - public String getCreateDataValueIndex() - { - return - "CREATE INDEX crosstab " + - "ON datavalue ( periodid, sourceid );"; - } - public String getDeleteZeroDataValues() { return === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2011-02-14 08:56:35 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2011-03-01 17:14:27 +0000 @@ -108,13 +108,6 @@ "valueOnTime DOUBLE PRECISION );"; } - public String getCreateDataValueIndex() - { - return - "CREATE INDEX crosstab " + - "ON datavalue ( periodid, sourceid );"; - } - public String getDeleteZeroDataValues() { return