=== 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 2012-02-27 14:12:54 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessResult.java 2012-03-16 16:49:58 +0000 @@ -180,8 +180,7 @@ @Override public String toString() { - String toString = "[Name: " + name + ", Reg: " + registrations + ", On time: " + registrationsOnTime - + ", Src: " + sources + "]"; + String toString = "[Name: " + name + ", sources: " + sources+ ", registrations: " + registrations + ", on time: " + registrationsOnTime + "]"; 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 2012-03-15 16:04:20 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessStore.java 2012-03-16 16:49:58 +0000 @@ -28,7 +28,6 @@ */ import java.util.Collection; -import java.util.Date; import org.hisp.dhis.dataset.DataSet; @@ -42,13 +41,13 @@ Integer getCompleteDataSetRegistrations( DataSet dataSet, Collection periods, Collection relevantSources ); - Integer getCompleteDataSetRegistrations( DataSet dataSet, Collection periods, Collection relevantSources, Date deadline ); + Integer getCompleteDataSetRegistrations( DataSet dataSet, Collection periods, Collection relevantSources, int completenessOffset ); Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods ); - Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods, Date deadline ); + Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods, int completenessOffset ); - Integer getNumberOfValues( DataSet dataSet, Collection children, Collection periods, Date deadline ); + Integer getNumberOfValues( DataSet dataSet, Collection children, Collection periods ); Collection getDataSetsWithRegistrations( Collection dataSets ); === 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 2012-03-16 12:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2012-03-16 16:49:58 +0000 @@ -29,12 +29,10 @@ import static org.hisp.dhis.setting.SystemSettingManager.DEFAULT_COMPLETENESS_OFFSET; import static org.hisp.dhis.setting.SystemSettingManager.KEY_COMPLETENESS_OFFSET; -import static org.hisp.dhis.system.util.ConversionUtils.*; +import static org.hisp.dhis.system.util.ConversionUtils.getIdentifiers; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collection; -import java.util.Date; import org.amplecode.quick.BatchHandler; import org.amplecode.quick.BatchHandlerFactory; @@ -49,13 +47,13 @@ import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.jdbc.batchhandler.DataSetCompletenessResultBatchHandler; -import org.hisp.dhis.setting.SystemSettingManager; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitHierarchy; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.RelativePeriods; +import org.hisp.dhis.setting.SystemSettingManager; import org.hisp.dhis.system.util.ConversionUtils; import org.springframework.transaction.annotation.Transactional; @@ -140,7 +138,7 @@ public abstract int getRegistrations( DataSet dataSet, Collection relevantSources, Collection periods ); public abstract int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, - Date deadline ); + int completenessOffset ); public abstract int getSources( DataSet dataSet, Collection relevantSources, Period period ); @@ -204,13 +202,11 @@ { if ( period.getPeriodType() != null && period.getPeriodType().getFrequencyOrder() >= dataSetFrequencyOrder ) { - final Date deadline = getDeadline( period, days ); - final Collection periodsBetweenDates = aggregationCache.getPeriodsBetweenDatesPeriodType( dataSet.getPeriodType(), period.getStartDate(), period.getEndDate() ); final DataSetCompletenessResult result = getDataSetCompleteness( period, - periodsBetweenDates, deadline, unit, relevantSources, dataSet ); + periodsBetweenDates, days, unit, relevantSources, dataSet ); if ( result.getSources() > 0 ) { @@ -240,7 +236,6 @@ int days = (Integer) systemSettingManager.getSystemSetting( KEY_COMPLETENESS_OFFSET, DEFAULT_COMPLETENESS_OFFSET ); - Date deadline = getDeadline( period, days ); final Collection children = organisationUnitService.getOrganisationUnitHierarchy().getChildren( organisationUnitId ); @@ -264,8 +259,7 @@ { result.setName( dataSet.getName() ); result.setRegistrations( getRegistrations( dataSet, relevantSources, periodsBetweenDates ) ); - result.setRegistrationsOnTime( deadline != null ? getRegistrationsOnTime( dataSet, relevantSources, - periodsBetweenDates, deadline ) : 0 ); + result.setRegistrationsOnTime( getRegistrationsOnTime( dataSet, relevantSources, periodsBetweenDates, days ) ); result.setDataSetId( dataSet.getId() ); result.setPeriodId( periodId ); @@ -289,7 +283,6 @@ int days = (Integer) systemSettingManager.getSystemSetting( KEY_COMPLETENESS_OFFSET, DEFAULT_COMPLETENESS_OFFSET ); - Date deadline = getDeadline( period, days ); final Collection results = new ArrayList(); @@ -302,7 +295,7 @@ final Collection relevantSources = getRelevantSources( dataSet, children ); - final DataSetCompletenessResult result = getDataSetCompleteness( period, periodsBetweenDates, deadline, unit, relevantSources, dataSet ); + final DataSetCompletenessResult result = getDataSetCompleteness( period, periodsBetweenDates, days, unit, relevantSources, dataSet ); if ( result.getSources() > 0 ) { @@ -336,7 +329,7 @@ // Supportive methods // ------------------------------------------------------------------------- - private DataSetCompletenessResult getDataSetCompleteness( Period period, Collection periodsBetweenDates, Date deadline, OrganisationUnit unit, + private DataSetCompletenessResult getDataSetCompleteness( Period period, Collection periodsBetweenDates, int completenessOffset, OrganisationUnit unit, Collection relevantSources, DataSet dataSet ) { final DataSetCompletenessResult result = new DataSetCompletenessResult(); @@ -347,8 +340,7 @@ if ( result.getSources() > 0 ) { result.setRegistrations( getRegistrations( dataSet, relevantSources, periodsBetweenDates ) ); - result.setRegistrationsOnTime( deadline != null ? getRegistrationsOnTime( dataSet, relevantSources, periodsBetweenDates, - deadline ) : 0 ); + result.setRegistrationsOnTime( getRegistrationsOnTime( dataSet, relevantSources, periodsBetweenDates, completenessOffset ) ); result.setDataSetId( dataSet.getId() ); result.setPeriodId( period.getId() ); @@ -367,22 +359,4 @@ return CollectionUtils.intersection( dataSetSources, sources ); } - - private Date getDeadline( Period period, int days ) - { - Calendar cal = Calendar.getInstance(); - - Date date = null; - - if ( period != null ) - { - cal.clear(); - cal.setTime( period.getEndDate() ); - cal.add( Calendar.DAY_OF_MONTH, days ); - - date = cal.getTime(); - } - - return date; - } } === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java 2012-03-16 12:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/CompulsoryDataSetCompletenessService.java 2012-03-16 16:49:58 +0000 @@ -28,7 +28,6 @@ */ import java.util.Collection; -import java.util.Date; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.period.Period; @@ -46,9 +45,9 @@ } @Override - public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, Date deadline ) + public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, int completenessOffset ) { - return completenessStore.getCompulsoryDataElementRegistrations( dataSet, relevantSources, periods, deadline ); + return completenessStore.getCompulsoryDataElementRegistrations( dataSet, relevantSources, periods, completenessOffset ); } @Override === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java 2012-03-16 12:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RatioDataSetCompletenessService.java 2012-03-16 16:49:58 +0000 @@ -28,7 +28,6 @@ */ import java.util.Collection; -import java.util.Date; import org.hisp.dhis.dataelement.DataElementOperand; import org.hisp.dhis.dataset.DataSet; @@ -44,13 +43,13 @@ @Override public int getRegistrations( DataSet dataSet, Collection relevantSources, Collection periods ) { - return completenessStore.getNumberOfValues( dataSet, relevantSources, periods, null ); + return completenessStore.getNumberOfValues( dataSet, relevantSources, periods ); } @Override - public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, Date deadline ) + public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, int completenessOffset ) { - return completenessStore.getNumberOfValues( dataSet, relevantSources, periods, null ); + return completenessStore.getNumberOfValues( dataSet, relevantSources, periods ); } @Override === 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 2012-03-16 12:05:01 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/RegistrationDataSetCompletenessService.java 2012-03-16 16:49:58 +0000 @@ -28,7 +28,6 @@ */ import java.util.Collection; -import java.util.Date; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.period.Period; @@ -46,9 +45,9 @@ } @Override - public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, Date deadline ) + public int getRegistrationsOnTime( DataSet dataSet, Collection relevantSources, Collection periods, int completenessOffset ) { - return completenessStore.getCompleteDataSetRegistrations( dataSet, periods, relevantSources, deadline ); + return completenessStore.getCompleteDataSetRegistrations( dataSet, periods, relevantSources, completenessOffset ); } @Override === 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 2012-03-15 16:04:20 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/jdbc/JDBCDataSetCompletenessStore.java 2012-03-16 16:49:58 +0000 @@ -27,20 +27,17 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.system.util.DateUtils.getMediumDateString; import static org.hisp.dhis.system.util.TextUtils.getCommaDelimitedString; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import org.amplecode.quick.StatementManager; 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.period.Period; -import org.hisp.dhis.system.util.DateUtils; +import org.hisp.dhis.jdbc.StatementBuilder; import org.hisp.dhis.system.util.TextUtils; /** @@ -62,6 +59,13 @@ { this.statementManager = statementManager; } + + private StatementBuilder statementBuilder; + + public void setStatementBuilder( StatementBuilder statementBuilder ) + { + this.statementBuilder = statementBuilder; + } // ------------------------------------------------------------------------- // DataSetCompletenessStore @@ -80,15 +84,15 @@ final String sql = "SELECT COUNT(*) " + - "FROM completedatasetregistration " + - "WHERE datasetid = " + dataSet.getId() + " " + - "AND periodid IN ( " + getCommaDelimitedString( periods ) + " ) " + - "AND sourceid IN ( " + getCommaDelimitedString( relevantSources ) + " )"; + "FROM completedatasetregistration cr " + + "WHERE cr.datasetid = " + dataSet.getId() + " " + + "AND cr.periodid IN ( " + getCommaDelimitedString( periods ) + " ) " + + "AND cr.sourceid IN ( " + getCommaDelimitedString( relevantSources ) + " )"; return statementManager.getHolder().queryForInteger( sql ); } - public Integer getCompleteDataSetRegistrations( DataSet dataSet, Collection periods, Collection relevantSources, Date deadline ) + public Integer getCompleteDataSetRegistrations( DataSet dataSet, Collection periods, Collection relevantSources, int completenessOffset ) { if ( relevantSources == null || relevantSources.size() == 0 ) { @@ -97,11 +101,12 @@ final String sql = "SELECT COUNT(*) " + - "FROM completedatasetregistration " + - "WHERE datasetid = " + dataSet.getId() + " " + - "AND periodid IN ( " + getCommaDelimitedString( periods ) + " ) " + - "AND sourceid IN ( " + getCommaDelimitedString( relevantSources ) + " ) " + - "AND date <= '" + getMediumDateString( deadline ) + "'"; + "FROM completedatasetregistration cr " + + "JOIN period p ON (cr.periodid = p.periodid) " + + "WHERE cr.datasetid = " + dataSet.getId() + " " + + "AND cr.periodid IN ( " + getCommaDelimitedString( periods ) + " ) " + + "AND cr.sourceid IN ( " + getCommaDelimitedString( relevantSources ) + " ) " + + "AND cr.date <= " + statementBuilder.getAddDate( "p.enddate", completenessOffset ); return statementManager.getHolder().queryForInteger( sql ); } @@ -112,13 +117,13 @@ public Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods ) { - return getCompulsoryDataElementRegistrations( dataSet, children, periods, null ); + return getCompulsoryDataElementRegistrations( dataSet, children, periods, 0 ); } - public Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods, Date deadline ) + public Integer getCompulsoryDataElementRegistrations( DataSet dataSet, Collection children, Collection periods, int completenessOffset ) { final int compulsoryElements = dataSet.getCompulsoryDataElementOperands().size(); - final String deadlineCriteria = deadline != null ? "AND lastupdated < '" + DateUtils.getMediumDateString( deadline ) + "' " : ""; + final String deadlineCriteria = ""; //FIXME //deadline != null ? "AND lastupdated < '" + DateUtils.getMediumDateString( deadline ) + "' " : ""; final String sql = "SELECT COUNT(completed) FROM ( " + @@ -140,16 +145,15 @@ // Based on number of data values // ------------------------------------------------------------------------- - public Integer getNumberOfValues( DataSet dataSet, Collection children, Collection periods, Date deadline ) + public Integer getNumberOfValues( DataSet dataSet, Collection children, Collection periods ) { final String childrenIds = TextUtils.getCommaDelimitedString( children ); - final String deadlineCriteria = deadline != null ? "AND lastupdated < '" + DateUtils.getMediumDateString( deadline ) + "' " : ""; final String sql = "SELECT count(*) FROM datavalue dv " + "JOIN datasetmembers dsm ON dv.dataelementid=dsm.dataelementid " + "JOIN dataset ds ON dsm.datasetid=ds.datasetid " + - "WHERE ds.datasetid = " + dataSet.getId() + " " + deadlineCriteria + + "WHERE ds.datasetid = " + dataSet.getId() + " " + "AND periodid IN ( " + getCommaDelimitedString( periods ) + " ) " + "AND sourceid IN (" + childrenIds + ")"; === 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 2012-03-15 16:04:20 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-03-16 16:49:58 +0000 @@ -118,6 +118,7 @@ + === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java' --- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java 2012-03-16 16:49:58 +0000 @@ -43,9 +43,11 @@ import org.hisp.dhis.external.location.LocationManager; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; +import org.hisp.dhis.period.MonthlyPeriodType; import org.hisp.dhis.period.Period; import org.hisp.dhis.period.PeriodService; import org.hisp.dhis.period.PeriodType; +import org.hisp.dhis.period.QuarterlyPeriodType; import org.junit.Test; /** @@ -65,8 +67,10 @@ private Period periodA; private Period periodB; + private Period periodC; private int periodIdA; + private int periodIdC; private OrganisationUnit unitA; private OrganisationUnit unitB; @@ -92,6 +96,7 @@ private Date onTimeA; private Date tooLateA; + private Date onTimeB; private Date tooLateB; // ------------------------------------------------------------------------- @@ -115,13 +120,15 @@ completenessService = (DataSetCompletenessService) getBean( "registrationDataCompletenessService" ); - periodType = periodService.getAllPeriodTypes().iterator().next(); + periodType = new MonthlyPeriodType(); periodA = createPeriod( periodType, getDate( 2000, 1, 1 ), getDate( 2000, 1, 31 ) ); periodB = createPeriod( periodType, getDate( 2000, 2, 1 ), getDate( 2000, 2, 28 ) ); + periodC = createPeriod( new QuarterlyPeriodType(), getDate( 2000, 1, 1 ), getDate( 2000, 3, 31 ) ); periodIdA = periodService.addPeriod( periodA ); periodService.addPeriod( periodB ); + periodIdC = periodService.addPeriod( periodC ); unitA = createOrganisationUnit( 'A' ); unitB = createOrganisationUnit( 'B' ); @@ -169,6 +176,7 @@ onTimeA = getDate( 2000, 2, 10 ); tooLateA = getDate( 2000, 2, 25 ); + onTimeB = getDate( 2000, 3, 10 ); tooLateB = getDate( 2000, 3, 25 ); } @@ -213,26 +221,31 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitA, tooLateA, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitB, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitA, tooLateB, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitD, tooLateA, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodA, unitA, tooLateA, "" ) ); - registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodA, unitC, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodA, unitC, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodB, unitB, onTimeB, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodA, unitC, tooLateA, "" ) ); - - registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitA, tooLateB, "" ) ); - registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitD, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodB, unitA, tooLateB, "" ) ); Collection results = completenessService.getDataSetCompleteness( periodIdA, unitIdA ); - DataSetCompletenessResult resultA = new DataSetCompletenessResult( dataSetA.getName(), 2, 2, 0 ); - DataSetCompletenessResult resultB = new DataSetCompletenessResult( dataSetB.getName(), 2, 1, 0 ); - DataSetCompletenessResult resultC = new DataSetCompletenessResult( dataSetC.getName(), 2, 0, 0 ); - assertNotNull( results ); assertEquals( 3, results.size() ); - assertTrue( results.contains( resultA ) ); - assertTrue( results.contains( resultB ) ); - assertTrue( results.contains( resultC ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetA.getName(), 2, 2, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 2, 1, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 2, 0, 0 ) ) ); + + results = completenessService.getDataSetCompleteness( periodIdC, unitIdA ); + + assertNotNull( results ); + assertEquals( 3, results.size() ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetA.getName(), 6, 3, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 6, 2, 1 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 6, 1, 0 ) ) ); } @Test === 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 2012-01-03 03:50:58 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java 2012-03-16 16:49:58 +0000 @@ -167,4 +167,6 @@ String getActivityPlan( int orgunitId, int min, int max ); String limitRecord( int min, int max ); + + String getAddDate( String dateField, int days ); } === 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 2012-03-15 09:25:30 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java 2012-03-16 16:49:58 +0000 @@ -347,4 +347,9 @@ { return " LIMIT " + max + " OFFSET " + min; } + + public String getAddDate( String dateField, int days ) + { + return "DATEADD('DAY'," + days + "," + dateField + ")"; + } } === 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 2012-03-15 09:25:30 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2012-03-16 16:49:58 +0000 @@ -368,4 +368,9 @@ { return " LIMIT " + max + " OFFSET " + min; } + + public String getAddDate( String dateField, int days ) + { + return "DATEADD('DAY'," + days + "," + dateField + ")"; + } } === 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 2012-03-15 09:25:30 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2012-03-16 16:49:58 +0000 @@ -365,4 +365,9 @@ { return " LIMIT " + min + " ," + max; } + + public String getAddDate( String dateField, int days ) + { + return "ADDDATE(" + dateField + "," + days + ")"; + } } === 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 2012-03-15 09:25:30 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2012-03-16 16:49:58 +0000 @@ -70,7 +70,7 @@ public String getDropDatasetForeignKeyForDataEntryFormTable() { - return "ALTER TABLE dataentryform DROP CONSTRAINT fk_dataentryform_datasetid;" ; + return "ALTER TABLE dataentryform DROP CONSTRAINT fk_dataentryform_datasetid;" ; } @Override @@ -365,4 +365,9 @@ { return " LIMIT " + max + " OFFSET " + min; } + + public String getAddDate( String dateField, int days ) + { + return "(" + dateField + "+" + days + ")"; + } }