← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 2159: Reverted commit r 2152

 

------------------------------------------------------------
revno: 2159
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2010-11-24 10:49:54 +0100
message:
  Reverted commit r 2152
modified:
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/jdbc/JdbcDataAnalysisStore.java
  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/DerbyStatementBuilder.java
  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/MySQLStatementBuilder.java
  dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/jdbc/JdbcDataAnalysisStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/jdbc/JdbcDataAnalysisStore.java	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/jdbc/JdbcDataAnalysisStore.java	2010-11-24 09:49:54 +0000
@@ -73,43 +73,36 @@
     // OutlierAnalysisStore implementation
     // -------------------------------------------------------------------------
 
-    public Double getStandardDeviation( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit )
-    {
-        final String sql = statementBuilder.getStandardDeviation( dataElement.getId(), categoryOptionCombo.getId(),
-            organisationUnit.getId() );
-
-        return statementManager.getHolder().queryForDouble( sql );
-    }
-
-    public Double getAverage( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit )
-    {
-        final String sql = statementBuilder.getStandardDeviation( dataElement.getId(), categoryOptionCombo.getId(),
-            organisationUnit.getId() );
-
-        return statementManager.getHolder().queryForDouble( sql );
-    }
-
-    public Collection<DeflatedDataValue> getDeflatedDataValues( DataElement dataElement,
-        DataElementCategoryOptionCombo categoryOptionCombo, Collection<Period> periods,
-        OrganisationUnit organisationUnit, int lowerBound, int upperBound )
+    public Double getStandardDeviation( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo, OrganisationUnit organisationUnit )
+    {
+         final String sql = statementBuilder.getStandardDeviation(dataElement.getId(), categoryOptionCombo.getId(), organisationUnit.getId() );
+        
+        return statementManager.getHolder().queryForDouble( sql );
+    }
+    
+    public Double getAverage( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo, OrganisationUnit organisationUnit )
+    {
+        final String sql =  statementBuilder.getStandardDeviation(dataElement.getId(), categoryOptionCombo.getId(), organisationUnit.getId() );
+           
+        return statementManager.getHolder().queryForDouble( sql );
+    }
+    
+    public Collection<DeflatedDataValue> getDeflatedDataValues( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
+        Collection<Period> periods, OrganisationUnit organisationUnit, int lowerBound, int upperBound )
     {
         final StatementHolder holder = statementManager.getHolder();
-
+        
         final ObjectMapper<DeflatedDataValue> mapper = new ObjectMapper<DeflatedDataValue>();
-
-        final String periodIds = TextUtils.getCommaDelimitedString( ConversionUtils.getIdentifiers( Period.class,
-            periods ) );
-
-        final String sql = statementBuilder.getDeflatedDataValues( dataElement.getId(), dataElement.getName(),
-            categoryOptionCombo.getId(), periodIds, organisationUnit.getId(), organisationUnit.getName(), lowerBound,
-            upperBound );
-
+        
+        final String periodIds = TextUtils.getCommaDelimitedString( ConversionUtils.getIdentifiers( Period.class, periods ) );
+        
+        final String sql = statementBuilder.getDeflatedDataValues( dataElement.getId(), dataElement.getName(), categoryOptionCombo.getId(),
+    		periodIds, organisationUnit.getId(), organisationUnit.getName(), lowerBound, upperBound );
+        
         try
-        {
+        {            
             final ResultSet resultSet = holder.getStatement().executeQuery( sql );
-
+            
             return mapper.getCollection( resultSet, new DeflatedDataValueNameMinMaxRowMapper() );
         }
         catch ( SQLException ex )
@@ -121,33 +114,50 @@
             holder.close();
         }
     }
-
-    public Collection<DeflatedDataValue> getDeflatedDataValueGaps( DataElement dataElement,
-        DataElementCategoryOptionCombo categoryOptionCombo, Collection<Period> periods,
-        OrganisationUnit organisationUnit )
+    
+    public Collection<DeflatedDataValue> getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
+        Collection<Period> periods, OrganisationUnit organisationUnit )
     {
         final StatementHolder holder = statementManager.getHolder();
 
         final ObjectMapper<DeflatedDataValue> mapper = new ObjectMapper<DeflatedDataValue>();
-
-        final String periodIds = TextUtils.getCommaDelimitedString( ConversionUtils.getIdentifiers( Period.class,
-            periods ) );
-
-        final String minValueSql = "SELECT minvalue FROM minmaxdataelement " + "WHERE sourceid=' "
-            + organisationUnit.getId() + "' " + "AND dataelementid='" + dataElement.getId() + "' "
-            + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "'";
-
-        final String maxValueSql = "SELECT maxvalue FROM minmaxdataelement " + "WHERE sourceid=' "
-            + organisationUnit.getId() + "' " + "AND dataelementid='" + dataElement.getId() + "' "
-            + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "'";
-
-        final String sql = statementBuilder.getDeflatedDataValueGaps( dataElement, categoryOptionCombo,
-            organisationUnit, minValueSql, maxValueSql, periodIds );
-
+        
+        final String periodIds = TextUtils.getCommaDelimitedString( ConversionUtils.getIdentifiers( Period.class, periods ) );
+        
+        final String minValueSql = 
+            "SELECT minvalue FROM minmaxdataelement " +
+            "WHERE sourceid=' " + organisationUnit.getId() + "' " +
+            "AND dataelementid='" + dataElement.getId() + "' " +
+            "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "'";
+    
+        final String maxValueSql = 
+            "SELECT maxvalue FROM minmaxdataelement " +
+            "WHERE sourceid=' " + organisationUnit.getId() + "' " +
+            "AND dataelementid='" + dataElement.getId() + "' " +
+            "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "'";
+        
+        final String sql = 
+            "SELECT '" + dataElement.getId() + "' AS dataelementid, pe.periodid, " +
+            "'" + organisationUnit.getId() + "' AS sourceid, '" + categoryOptionCombo.getId() + "' AS categoryoptioncomboid, " +
+            "'' AS value, '' AS storedby, '1900-01-01' AS lastupdated, '' AS comment, false AS followup, " +
+            "( " + minValueSql + " ) AS minvalue, ( " + maxValueSql + " ) AS maxvalue, " +
+            statementBuilder.encode( dataElement.getName() ) + " AS dataelementname, pt.name AS periodtypename, pe.startdate, pe.enddate, " +
+            statementBuilder.encode( organisationUnit.getName() ) + " AS sourcename, " + 
+            statementBuilder.encode( categoryOptionCombo.getName() ) + " AS categoryoptioncomboname " + //TODO join?
+            "FROM period AS pe " +
+            "JOIN periodtype AS pt USING (periodtypeid) " +
+            "WHERE periodid IN (" + periodIds + ") " +
+            "AND periodtypeid='" + dataElement.getPeriodType().getId() + "' " +
+            "AND periodid NOT IN ( " +
+                "SELECT periodid FROM datavalue " +
+                "WHERE dataelementid='" + dataElement.getId() + "' " +
+                "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "' " +
+                "AND sourceid='" + organisationUnit.getId() + "' )";
+        
         try
-        {
+        {   
             final ResultSet resultSet = holder.getStatement().executeQuery( sql );
-
+            
             return mapper.getCollection( resultSet, new DeflatedDataValueNameMinMaxRowMapper() );
         }
         catch ( SQLException ex )
@@ -163,23 +173,26 @@
     public Collection<DeflatedDataValue> getDataValuesMarkedForFollowup()
     {
         final StatementHolder holder = statementManager.getHolder();
-
-        final String sql = "SELECT dv.dataelementid, dv.periodid, dv.sourceid, dv.categoryoptioncomboid, dv.value, "
-            + "dv.storedby, dv.lastupdated, dv.comment, dv.followup, mm.minvalue, mm.maxvalue, de.name AS dataelementname, "
-            + "pe.startdate, pe.enddate, pt.name AS periodtypename, ou.name AS sourcename, cc.categoryoptioncomboname "
-            + "FROM datavalue AS dv "
-            + "LEFT JOIN minmaxdataelement AS mm using (sourceid, dataelementid, categoryoptioncomboid) "
-            + "JOIN dataelement AS de using (dataelementid) " + "JOIN period AS pe using (periodid) "
-            + "JOIN periodtype AS pt using (periodtypeid) " + "JOIN source AS sr using (sourceid) "
-            + "LEFT JOIN organisationunit AS ou on ou.organisationunitid=sr.sourceid "
-            + "LEFT JOIN _categoryoptioncomboname AS cc using (categoryoptioncomboid) " + "WHERE dv.followup=true";
-
+        
+        final String sql =
+            "SELECT dv.dataelementid, dv.periodid, dv.sourceid, dv.categoryoptioncomboid, dv.value, " +
+            "dv.storedby, dv.lastupdated, dv.comment, dv.followup, mm.minvalue, mm.maxvalue, de.name AS dataelementname, " +
+            "pe.startdate, pe.enddate, pt.name AS periodtypename, ou.name AS sourcename, cc.categoryoptioncomboname " +
+            "FROM datavalue AS dv " +
+            "LEFT JOIN minmaxdataelement AS mm using (sourceid, dataelementid, categoryoptioncomboid) " +
+            "JOIN dataelement AS de using (dataelementid) " +
+            "JOIN period AS pe using (periodid) " +
+            "JOIN periodtype AS pt using (periodtypeid) " +
+            "JOIN source AS sr using (sourceid) " +
+            "LEFT JOIN organisationunit AS ou on ou.organisationunitid=sr.sourceid " +
+            "LEFT JOIN _categoryoptioncomboname AS cc using (categoryoptioncomboid) " +
+            "WHERE dv.followup=true";
+        
         try
         {
             final ResultSet resultSet = holder.getStatement().executeQuery( sql );
-
-            return new ObjectMapper<DeflatedDataValue>().getCollection( resultSet,
-                new DeflatedDataValueNameMinMaxRowMapper() );
+            
+            return new ObjectMapper<DeflatedDataValue>().getCollection( resultSet, new DeflatedDataValueNameMinMaxRowMapper() );
         }
         catch ( SQLException ex )
         {
@@ -189,6 +202,5 @@
         {
             holder.close();
         }
-    }
-
+    }        
 }

=== 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	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/StatementBuilder.java	2010-11-24 09:49:54 +0000
@@ -27,9 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
@@ -39,7 +36,7 @@
 public interface StatementBuilder
 {
     final String QUOTE = "'";
-
+    
     /**
      * Encodes the provided SQL value.
      * 
@@ -47,73 +44,65 @@
      * @return the SQL encoded value.
      */
     String encode( String value );
-
+    
     /**
      * Returns the name of a double column type.
-     * 
      * @return the name of a double column type.
      */
     String getDoubleColumnType();
-
+    
     /**
      * Creates a SELECT statement returning the identifier of the given Period.
      * 
-     * @param period the Period to use in the statement.
+     * @param period the Period to use in the statement. 
      * @return a SELECT statement returning the identifier of the given Period.
      */
     String getPeriodIdentifierStatement( Period period );
-
+    
     /**
      * Creates a create table statement fot the aggregated datavalue table.
-     * 
      * @return a create table statement fot the aggregated datavalue table.
      */
     String getCreateAggregatedDataValueTable();
-
+    
     /**
      * Creates a create table statement for the aggregated indicatorvalue table.
-     * 
      * @return a create table statement for the aggregated indicatorvalue table.
-     */
+     */    
     String getCreateAggregatedIndicatorTable();
 
     /**
-     * Creates a create table statement for the aggregated datasetcompleteness
-     * table.
-     * 
-     * @return a create table statement for the aggregated datasetcompleteness
-     *         table.
+     * Creates a create table statement for the aggregated datasetcompleteness table.
+     * @return a create table statement for the aggregated datasetcompleteness table.
      */
     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.
      */
     String getDeleteZeroDataValues();
-
+    
     /**
      * Returns the maximum number of columns in a table.
      * 
      * @return the maximum number of columns in a table.
      */
     int getMaximumNumberOfColumns();
-
+    
     /**
-     * Drop Dataset foreign key for DataEntryForm table
-     * 
+     *  Drop Dataset foreign key for DataEntryForm table
+     *  
      * @return
      */
     String getDropDatasetForeignKeyForDataEntryFormTable();
-
+    
     String getMoveDataValueToDestination( int sourceId, int destinationId );
 
     String getSummarizeDestinationAndSourceWhereMatching( int sourceId, int destinationId );
@@ -121,40 +110,37 @@
     String getMoveFromSourceToDestination( int destDataElementId, int destCategoryOptionComboId,
         int sourceDataElementId, int sourceCategoryOptionComboId );
 
-    String getUpdateDestination( int destDataElementId, int destCategoryOptionComboId, int sourceDataElementId,
-        int sourceCategoryOptionComboId );
-
+    String getUpdateDestination( int destDataElementId, int destCategoryOptionComboId,
+        int sourceDataElementId, int sourceCategoryOptionComboId );
+    
     String getStandardDeviation( int dataElementId, int categoryOptionComboId, int organisationUnitId );
-
+    
     String getAverage( int dataElementId, int categoryOptionComboId, int organisationUnitId );
-
+    
     String getDeflatedDataValues( int dataElementId, String dataElementName, int categoryOptionComboId,
-        String periodIds, int organisationUnitId, String organisationUnitName, int lowerBound, int upperBound );
-
-    String getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit, String minValueSql, String maxValueSql, String periodIds );
-
+    	String periodIds, int organisationUnitId, String organisationUnitName, int lowerBound, int upperBound );
+    	
     String archiveData( String startDate, String endDate );
-
+    
     String unArchiveData( String startDate, String endDate );
-
+    
     String deleteRegularOverlappingData();
-
+    
     String deleteArchivedOverlappingData();
-
+    
     String deleteOldestOverlappingDataValue();
-
+    
     String deleteOldestOverlappingArchiveData();
-
-    String archivePatientData( String startDate, String endDate );
-
-    String unArchivePatientData( String startDate, String endDate );
-
+    
+    String archivePatientData ( String startDate, String endDate );
+    
+    String unArchivePatientData ( String startDate, String endDate );
+    
     String deleteRegularOverlappingPatientData();
-
+    
     String deleteArchivedOverlappingPatientData();
-
+    
     String deleteOldestOverlappingPatientDataValue();
-
+    
     String deleteOldestOverlappingPatientArchiveData();
 }

=== 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	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java	2010-11-24 09:49:54 +0000
@@ -29,10 +29,7 @@
 
 import static org.hisp.dhis.system.util.DateUtils.getSqlDateString;
 
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.jdbc.StatementBuilder;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
@@ -196,7 +193,7 @@
 	         "AND categoryoptioncomboid='" + categoryOptionComboId + "' " +
 	         "AND sourceid='" + organisationUnitId + "'";
        
-    }
+   }
     
     public String getAverage( int dataElementId, int categoryOptionComboId, int organisationUnitId ){
       	 return   "SELECT AVG( CAST( value AS " + getDoubleColumnType() + " ) ) FROM datavalue " +
@@ -222,50 +219,27 @@
             "AND dv.sourceid='" + organisationUnitId + "' " +
             "AND ( CAST( dv.value AS " + getDoubleColumnType() + " ) < '" + lowerBound + "' " +
             "OR CAST( dv.value AS " + getDoubleColumnType() + " ) > '" + upperBound + "' )";
-    }
-    
-    public String getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit, String minValueSql, String maxValueSql, String periodIds )
-    {
-        return  "SELECT '" + dataElement.getId() + "' AS dataelementid, pe.periodid, " + "'"
-            + organisationUnit.getId() + "' AS sourceid, '" + categoryOptionCombo.getId()
-            + "' AS categoryoptioncomboid, "
-            + "'' AS value, '' AS storedby, '1900-01-01' AS lastupdated, '' AS comment, false AS followup, "
-            + "( " + minValueSql + " ) AS minvalue, ( " + maxValueSql + " ) AS maxvalue, "
-            + encode( dataElement.getName() ) + " AS dataelementname, pt.name AS periodtypename, pe.startdate, pe.enddate, "
-            + encode( organisationUnit.getName() ) + " AS sourcename, "
-            + encode( categoryOptionCombo.getName() ) + " AS categoryoptioncomboname "
-            + // TODO join?
-            "FROM period AS pe " 
-            + "JOIN periodtype AS pt USING (periodtypeid) " 
-            + "WHERE pe.periodid IN (" + periodIds + ") " 
-            + "AND pe.periodtypeid='" + dataElement.getPeriodType().getId() + "' " 
-            + "AND pe.periodid NOT IN ( " 
-                + "SELECT DISTINCT periodid FROM datavalue " 
-                + "WHERE dataelementid='" + dataElement.getId() + "' "
-                + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "' " 
-                + "AND sourceid='" + organisationUnit.getId() + "' )";
-    }
-    
-    public String archiveData( String startDate, String endDate ){
+   }
+    
+   public String archiveData( String startDate, String endDate ){
         
         return  "DELETE FROM datavaluearchive AS a " +
                 "USING period AS p " +
                 "WHERE a.periodid=p.periodid " +
                 "AND p.startdate>='" + startDate + "' " +
                 "AND p.enddate<='" + endDate + "'";
-    }
+   }
    
-    public String unArchiveData( String startDate, String endDate ){
+   public String unArchiveData( String startDate, String endDate ){
        
        return  "DELETE FROM datavaluearchive AS a " +
            "USING period AS p " +
            "WHERE a.periodid=p.periodid " +
            "AND p.startdate>='" +  startDate + "' " +
            "AND p.enddate<='" +  endDate + "'";
-    }
+   }
    
-    public String deleteRegularOverlappingData(){
+   public String deleteRegularOverlappingData(){
        
        return "DELETE FROM datavalue AS d " +
            "USING datavaluearchive AS a " +
@@ -274,9 +248,9 @@
            "AND d.sourceid=a.sourceid " +
            "AND d.categoryoptioncomboid=a.categoryoptioncomboid";
 
-    }
+   }
 
-    public String deleteArchivedOverlappingData(){
+   public String deleteArchivedOverlappingData(){
 
        return "DELETE FROM datavaluearchive AS a " +
            "USING datavalue AS d " +
@@ -284,9 +258,9 @@
            "AND a.periodid=d.periodid " +
            "AND a.sourceid=d.sourceid " +
            "AND a.categoryoptioncomboid=d.categoryoptioncomboid";
-    }
+   }
 
-    public String deleteOldestOverlappingDataValue(){
+   public String deleteOldestOverlappingDataValue(){
        
        return "DELETE FROM datavalue AS d " +
            "USING datavaluearchive AS a " +
@@ -295,9 +269,9 @@
            "AND d.sourceid=a.sourceid " +
            "AND d.categoryoptioncomboid=a.categoryoptioncomboid " +
            "AND d.lastupdated<a.lastupdated";
-    }
+   }
    
-    public String deleteOldestOverlappingArchiveData(){
+   public String deleteOldestOverlappingArchiveData(){
        
        return "DELETE FROM datavaluearchive AS a " +
            "USING datavalue AS d " +
@@ -306,30 +280,30 @@
            "AND a.sourceid=d.sourceid " +
            "AND a.categoryoptioncomboid=d.categoryoptioncomboid " +
            "AND a.lastupdated<=d.lastupdated";
-    }
+   }
    
-    public String archivePatientData ( String startDate, String endDate )
-    {
+   public String archivePatientData ( String startDate, String endDate )
+   {
        return "DELETE FROM patientdatavalue AS pdv " 
                + "USING programstageinstance AS psi ,  programinstance AS pi "
                + "WHERE pdv.programstageinstanceid = psi.programstageinstanceid "
                + "AND pi.programinstanceid = psi.programinstanceid "
                + "WHERE pi.enddate >= '" + startDate + "' "
                +    "AND pi.enddate <= '" +  endDate + "';";
-    }
+   }
    
-    public String unArchivePatientData ( String startDate, String endDate )
-    {
+   public String unArchivePatientData ( String startDate, String endDate )
+   {
        return "DELETE FROM patientdatavaluearchive AS pdv " 
                + "USING programstageinstance AS psi ,  programinstance AS pi "
                + "WHERE pdv.programstageinstanceid = psi.programstageinstanceid "
                + "AND pi.programinstanceid = psi.programinstanceid "
                + "WHERE pi.enddate >= '" + startDate + "' "
                +    "AND pi.enddate <= '" +  endDate + "';";
-    }
+   }
 
-    public String deleteRegularOverlappingPatientData()
-    {
+   public String deleteRegularOverlappingPatientData()
+   {
        return "DELETE FROM patientdatavalue AS d " +
                "USING patientdatavaluearchive AS a " +
                "WHERE d.programstageinstanceid=a.programstageinstanceid " +
@@ -337,20 +311,20 @@
                "AND d.organisationunitid=a.organisationunitid " +
                "AND d.categoryoptioncomboid=a.categoryoptioncomboid " +
                "AND d.timestamp<a.timestamp;";
-    }
+   }
    
-    public String deleteArchivedOverlappingPatientData()
-    {
+   public String deleteArchivedOverlappingPatientData()
+   {
        return "DELETE FROM patientdatavaluearchive AS a " +
                "USING patientdatavalue AS d " +
                "WHERE d.programstageinstanceid=a.programstageinstanceid " +
                "AND d.dataelementid=a.dataelementid " +
                "AND d.organisationunitid=a.organisationunitid " +
                "AND d.categoryoptioncomboid=a.categoryoptioncomboid ";
-    }
+   }
    
-    public String deleteOldestOverlappingPatientDataValue()
-    {
+   public String deleteOldestOverlappingPatientDataValue()
+   {
        return "DELETE FROM patientdatavalue AS d " +
                "USING patientdatavaluearchive AS a " +
                "WHERE d.programstageinstanceid=a.programstageinstanceid " +
@@ -358,10 +332,10 @@
                "AND d.organisationunitid=a.organisationunitid " +
                "AND d.categoryoptioncomboid=a.categoryoptioncomboid " +
                "AND d.timestamp<a.timestamp;";
-    }
+   }
    
-    public String deleteOldestOverlappingPatientArchiveData()
-    {
+   public String deleteOldestOverlappingPatientArchiveData()
+   {
        return "DELETE FROM patientdatavalue AS d " +
                "USING patientdatavaluearchive AS a " +
                "WHERE d.programstageinstanceid=a.programstageinstanceid " +
@@ -369,5 +343,5 @@
                "AND d.organisationunitid=a.organisationunitid " +
                "AND d.categoryoptioncomboid=a.categoryoptioncomboid " +
                "AND a.timestamp<=d.timestamp;";
-    }
+   }
 }

=== 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	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java	2010-11-24 09:49:54 +0000
@@ -29,10 +29,7 @@
 
 import static org.hisp.dhis.system.util.DateUtils.getSqlDateString;
 
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.jdbc.StatementBuilder;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
@@ -160,44 +157,31 @@
     public String getUpdateDestination( int destDataElementId, int destCategoryOptionComboId,
         int sourceDataElementId, int sourceCategoryOptionComboId )
     {
-        return "UPDATE datavalue AS d1 " 
-            + "SET dataelementid=" + destDataElementId + ", categoryoptioncomboid=" + destCategoryOptionComboId + " " 
-            + "WHERE dataelementid=" + sourceDataElementId + " " 
-            + "AND categoryoptioncomboid=" + sourceCategoryOptionComboId + " " 
-            + "AND NOT EXISTS ( "
-                + "SELECT 1 FROM datavalue AS d2 " 
-                + "WHERE d2.dataelementid=" + destDataElementId + " "
-                + "AND d2.categoryoptioncomboid=" + destCategoryOptionComboId + " " 
-                + "AND d1.periodid=d2.periodid "
-                + "AND d1.sourceid=d2.sourceid );";
+        return "UPDATE datavalue AS d1 SET dataelementid=" + destDataElementId + ", categoryoptioncomboid="
+            + destCategoryOptionComboId + " " + "WHERE dataelementid=" + sourceDataElementId
+            + " and categoryoptioncomboid=" + sourceCategoryOptionComboId + " " + "AND NOT EXISTS ( "
+            + "SELECT * FROM datavalue AS d2 " + "WHERE d2.dataelementid=" + destDataElementId + " "
+            + "AND d2.categoryoptioncomboid=" + destCategoryOptionComboId + " " + "AND d1.periodid=d2.periodid "
+            + "AND d1.sourceid=d2.sourceid );";
 
     }
 
     @Override
     public String getMoveFromSourceToDestination( int destDataElementId, int destCategoryOptionComboId,
         int sourceDataElementId, int sourceCategoryOptionComboId )
-    {        
-//        return "UPDATE datavalue AS d1 " 
-//             + "SET (value,storedby,lastupdated,comment,followup) IN "
-//                + "(SELECT d2.value,d2.storedby,d2.lastupdated,d2.comment,d2.followup " 
-//                + "FROM datavalue AS d2 "
-//                + "WHERE (d1.periodid=d2.periodid) "
-//                + "AND (d1.sourceid=d2.sourceid) "
-//                + "AND (d1.lastupdated<d2.lastupdated) " 
-//                + "AND (d1.dataelementid=" + destDataElementId + ") "
-//                + "AND (d1.categoryoptioncomboid=" + destCategoryOptionComboId + ") "
-//                + "AND (d2.dataelementid=" + sourceDataElementId + ") "
-//                + "AND (d2.categoryoptioncomboid=" + sourceCategoryOptionComboId + "))";
-        System.out.println("hey");
-        return "UPDATE datavalue AS d1 "
-           + "SET value=(SELECT d2.value FROM datavalue AS d2 "
-           + "WHERE (d1.periodid=d2.periodid) "
-           + "AND (d1.sourceid=d2.sourceid) "
-           + "AND (d1.lastupdated<d2.lastupdated) " 
-           + "AND (d1.dataelementid=" + destDataElementId + ") "
-           + "AND (d1.categoryoptioncomboid=" + destCategoryOptionComboId + ") "
-           + "AND (d2.dataelementid=" + sourceDataElementId + ") "
-           + "AND (d2.categoryoptioncomboid=" + sourceCategoryOptionComboId + "))";
+    {
+        return "UPDATE datavalue SET value=d2.value,storedby=d2.storedby,lastupdated=d2.lastupdated,comment=d2.comment,followup=d2.followup "
+            + "FROM datavalue AS d2 "
+            + "WHERE datavalue.periodid=d2.periodid "
+            + "AND datavalue.sourceid=d2.sourceid "
+            + "AND datavalue.lastupdated<d2.lastupdated "
+            + "AND datavalue.dataelementid="
+            + destDataElementId
+            + " AND datavalue.categoryoptioncomboid="
+            + destCategoryOptionComboId
+            + " "
+            + "AND d2.dataelementid="
+            + sourceDataElementId + " AND d2.categoryoptioncomboid=" + sourceCategoryOptionComboId + ";";
     }
     
     public String getStandardDeviation( int dataElementId, int categoryOptionComboId, int organisationUnitId ){
@@ -235,29 +219,6 @@
             "OR CAST( dv.value AS " + getDoubleColumnType() + " ) > '" + upperBound + "' )";
     }
     
-    public String getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit, String minValueSql, String maxValueSql, String periodIds )
-    {
-        return  "SELECT '" + dataElement.getId() + "' AS dataelementid, pe.periodid, " + "'"
-            + organisationUnit.getId() + "' AS sourceid, '" + categoryOptionCombo.getId()
-            + "' AS categoryoptioncomboid, "
-            + "'' AS value, '' AS storedby, '1900-01-01' AS lastupdated, '' AS comment, false AS followup, "
-            + "( " + minValueSql + " ) AS minvalue, ( " + maxValueSql + " ) AS maxvalue, "
-            + encode( dataElement.getName() ) + " AS dataelementname, pt.name AS periodtypename, pe.startdate, pe.enddate, "
-            + encode( organisationUnit.getName() ) + " AS sourcename, "
-            + encode( categoryOptionCombo.getName() ) + " AS categoryoptioncomboname "
-            + // TODO join?
-            "FROM period AS pe " 
-            + "JOIN periodtype AS pt ON (pe.periodtypeid = pt.periodtypeid) " 
-            + "WHERE pe.periodid IN (" + periodIds + ") " 
-            + "AND pe.periodtypeid='" + dataElement.getPeriodType().getId() + "' " 
-            + "AND pe.periodid NOT IN ( " 
-                + "SELECT DISTINCT periodid FROM datavalue " 
-                + "WHERE dataelementid='" + dataElement.getId() + "' "
-                + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "' " 
-                + "AND sourceid='" + organisationUnit.getId() + "' )";
-    }
-    
     public String archiveData( String startDate, String endDate )
     {
        return "DELETE FROM datavalue AS a " +

=== 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	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java	2010-11-24 09:49:54 +0000
@@ -29,10 +29,7 @@
 
 import static org.hisp.dhis.system.util.DateUtils.getSqlDateString;
 
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.jdbc.StatementBuilder;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
@@ -222,31 +219,8 @@
             "AND dv.sourceid='" + organisationUnitId + "' " +
             "AND ( dv.value < '" + lowerBound + "' " +
             "OR  dv.value > '" + upperBound + "' )";
-    }
+   }
    
-    public String getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit, String minValueSql, String maxValueSql, String periodIds )
-    {
-        return  "SELECT '" + dataElement.getId() + "' AS dataelementid, pe.periodid, " + "'"
-            + organisationUnit.getId() + "' AS sourceid, '" + categoryOptionCombo.getId()
-            + "' AS categoryoptioncomboid, "
-            + "'' AS value, '' AS storedby, '1900-01-01' AS lastupdated, '' AS comment, false AS followup, "
-            + "( " + minValueSql + " ) AS minvalue, ( " + maxValueSql + " ) AS maxvalue, "
-            + encode( dataElement.getName() ) + " AS dataelementname, pt.name AS periodtypename, pe.startdate, pe.enddate, "
-            + encode( organisationUnit.getName() ) + " AS sourcename, "
-            + encode( categoryOptionCombo.getName() ) + " AS categoryoptioncomboname "
-            + // TODO join?
-            "FROM period AS pe " 
-            + "JOIN periodtype AS pt USING (periodtypeid) " 
-            + "WHERE pe.periodid IN (" + periodIds + ") " 
-            + "AND pe.periodtypeid='" + dataElement.getPeriodType().getId() + "' " 
-            + "AND pe.periodid NOT IN ( " 
-                + "SELECT DISTINCT periodid FROM datavalue " 
-                + "WHERE dataelementid='" + dataElement.getId() + "' "
-                + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "' " 
-                + "AND sourceid='" + organisationUnit.getId() + "' )";
-    }
-    
     public String archiveData( String startDate, String endDate )
     {
         return "DELETE d FROM datavalue AS d " +

=== 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	2010-11-23 10:55:32 +0000
+++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java	2010-11-24 09:49:54 +0000
@@ -29,10 +29,7 @@
 
 import static org.hisp.dhis.system.util.DateUtils.getSqlDateString;
 
-import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.dataelement.DataElementCategoryOptionCombo;
 import org.hisp.dhis.jdbc.StatementBuilder;
-import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
@@ -225,29 +222,6 @@
            "OR CAST( dv.value AS " + getDoubleColumnType() + " ) > '" + upperBound + "' )";
     }
     
-    public String getDeflatedDataValueGaps( DataElement dataElement, DataElementCategoryOptionCombo categoryOptionCombo,
-        OrganisationUnit organisationUnit, String minValueSql, String maxValueSql, String periodIds )
-    {
-        return  "SELECT '" + dataElement.getId() + "' AS dataelementid, pe.periodid, " + "'"
-            + organisationUnit.getId() + "' AS sourceid, '" + categoryOptionCombo.getId()
-            + "' AS categoryoptioncomboid, "
-            + "'' AS value, '' AS storedby, '1900-01-01' AS lastupdated, '' AS comment, false AS followup, "
-            + "( " + minValueSql + " ) AS minvalue, ( " + maxValueSql + " ) AS maxvalue, "
-            + encode( dataElement.getName() ) + " AS dataelementname, pt.name AS periodtypename, pe.startdate, pe.enddate, "
-            + encode( organisationUnit.getName() ) + " AS sourcename, "
-            + encode( categoryOptionCombo.getName() ) + " AS categoryoptioncomboname "
-            + // TODO join?
-            "FROM period AS pe " 
-            + "JOIN periodtype AS pt USING (periodtypeid) " 
-            + "WHERE pe.periodid IN (" + periodIds + ") " 
-            + "AND pe.periodtypeid='" + dataElement.getPeriodType().getId() + "' " 
-            + "AND pe.periodid NOT IN ( " 
-                + "SELECT DISTINCT periodid FROM datavalue " 
-                + "WHERE dataelementid='" + dataElement.getId() + "' "
-                + "AND categoryoptioncomboid='" + categoryOptionCombo.getId() + "' " 
-                + "AND sourceid='" + organisationUnit.getId() + "' )";
-    }
-    
     public String archiveData( String startDate, String endDate )
     {
       return "DELETE FROM datavaluearchive AS a " +