← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 767: Temporarily fixed cyclic dependency problem with excel reporting module. Improved performance in ...

 

------------------------------------------------------------
revno: 767
committer: Lars Helge Oeverland larshelge@xxxxxxxxx
branch nick: trunk
timestamp: Fri 2009-09-25 23:45:01 +0200
message:
  Temporarily fixed cyclic dependency problem with excel reporting module. Improved performance in validation.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java
  dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/datavalue/DataValueStoreTest.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionServiceTest.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionStoreTest.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java
  dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleStoreTest.java
  dhis-2/dhis-services/dhis-service-excel-reporting/pom.xml
  dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/DefaultReportExcelService.java
  dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-services/dhis-service-user-hibernate/src/main/resources/org/hisp/dhis/user/hibernate/UserAuthorityGroup.hbm.xml
  dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/dbms/HibernateDbmsManager.java
  dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java
  dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml


--
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-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java	2009-05-22 22:53:13 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueService.java	2009-09-25 21:45:01 +0000
@@ -116,6 +116,8 @@
      */
     DataValue getDataValue( Source source, DataElement dataElement, Period period, DataElementCategoryOptionCombo optionCombo );
 
+    String getValue( DataElement dataElement, Period period, Source source, DataElementCategoryOptionCombo optionCombo );
+    
     // -------------------------------------------------------------------------
     // Collections of DataValues
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java	2009-05-22 22:53:13 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/datavalue/DataValueStore.java	2009-09-25 21:45:01 +0000
@@ -107,6 +107,8 @@
      */
     DataValue getDataValue( Source source, DataElement dataElement, Period period, DataElementCategoryOptionCombo optionCombo );
 
+    String getValue( DataElement dataElement, Period period, Source source, DataElementCategoryOptionCombo optionCombo );
+    
     // -------------------------------------------------------------------------
     // Collections of DataValues
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java	2009-09-25 06:10:21 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java	2009-09-25 21:45:01 +0000
@@ -54,8 +54,6 @@
 
     private Set<DataSet> dataSets = new HashSet<DataSet>();
 
-    private Set<ReportExcel> reportExcels = new HashSet<ReportExcel>();
-
     // -------------------------------------------------------------------------
     // hashCode and equals
     // -------------------------------------------------------------------------
@@ -152,15 +150,4 @@
     {
         this.dataSets = dataSets;
     }
-
-    public Set<ReportExcel> getReportExcels()
-    {
-        return reportExcels;
-    }
-
-    public void setReportExcels( Set<ReportExcel> reportExcels )
-    {
-        this.reportExcels = reportExcels;
-    }
-
 }

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java	2009-06-10 22:25:07 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/DefaultDataValueService.java	2009-09-25 21:45:01 +0000
@@ -105,6 +105,11 @@
         return dataValueStore.getDataValue( source, dataElement, period, optionCombo );
     }
 
+    public String getValue( DataElement dataElement, Period period, Source source, DataElementCategoryOptionCombo optionCombo )
+    {
+        return dataValueStore.getValue( dataElement, period, source, optionCombo );
+    }
+    
     // -------------------------------------------------------------------------
     // Collections of DataValues
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java	2009-06-10 22:25:07 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/datavalue/hibernate/HibernateDataValueStore.java	2009-09-25 21:45:01 +0000
@@ -27,11 +27,15 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 
+import org.amplecode.quick.StatementHolder;
+import org.amplecode.quick.StatementManager;
 import org.hibernate.Criteria;
 import org.hibernate.Query;
 import org.hibernate.Session;
@@ -65,13 +69,20 @@
         this.sessionFactory = sessionFactory;
     }
 
+    private StatementManager statementManager;
+
+    public void setStatementManager( StatementManager statementManager )
+    {
+        this.statementManager = statementManager;
+    }
+
     private PeriodStore periodStore;
 
     public void setPeriodStore( PeriodStore periodStore )
     {
         this.periodStore = periodStore;
     }
-
+    
     // -------------------------------------------------------------------------
     // Support methods for reloading periods
     // -------------------------------------------------------------------------
@@ -204,7 +215,35 @@
 
         return (DataValue) criteria.uniqueResult();
     }
-
+    
+    public String getValue( DataElement dataElement, Period period, Source source, DataElementCategoryOptionCombo optionCombo )
+    {
+        StatementHolder holder = statementManager.getHolder();
+        
+        final String sql = 
+            "SELECT value " + 
+            "FROM datavalue " + 
+            "WHERE dataelementid='" + dataElement.getId() + "' " +
+            "AND periodid='" + period.getId() + "' " +
+            "AND sourceid='" + source.getId() + "' " + 
+            "AND categoryoptioncomboid='" + optionCombo.getId() + "'";
+        
+        try
+        {
+            ResultSet resultSet = holder.getStatement().executeQuery( sql );
+            
+            return resultSet.next() ? resultSet.getString( 1 ) : null;
+        }
+        catch ( SQLException ex )
+        {
+            throw new RuntimeException( ex );
+        }
+        finally
+        {
+            holder.close();
+        }
+    }
+    
     // -------------------------------------------------------------------------
     // Collections of DataValues
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java	2009-07-03 10:03:22 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java	2009-09-25 21:45:01 +0000
@@ -416,14 +416,16 @@
                 final DataElementCategoryOptionCombo categoryOptionCombo = 
                     categoryOptionComboService.getDataElementCategoryOptionCombo( operand.getOptionComboId() );
 
-                final DataValue dataValue = dataValueService.getDataValue( source, dataElement, period, categoryOptionCombo );
+                //final DataValue dataValue = dataValueService.getDataValue( source, dataElement, period, categoryOptionCombo );
 
-                if ( dataValue == null && nullIfNoValues )
+                final String value = dataValueService.getValue( dataElement, period, source, categoryOptionCombo );
+                
+                if ( value == null && nullIfNoValues )
                 {
                     return null;
                 }
                 
-                replaceString = ( dataValue == null ) ? NULL_REPLACEMENT : dataValue.getValue();
+                replaceString = ( value == null ) ? NULL_REPLACEMENT : value;
                 
                 matcher.appendReplacement( buffer, replaceString );
             }

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2009-07-07 10:27:18 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2009-09-25 21:45:01 +0000
@@ -28,6 +28,7 @@
   <bean id="org.hisp.dhis.datavalue.DataValueStore"
     class="org.hisp.dhis.datavalue.hibernate.HibernateDataValueStore">
     <property name="sessionFactory" ref="sessionFactory"/>
+    <property name="statementManager" ref="statementManager"/>
     <property name="periodStore" 
       ref="org.hisp.dhis.period.PeriodStore"/>
   </bean>

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/datavalue/DataValueStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/datavalue/DataValueStoreTest.java	2009-07-06 17:45:57 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/datavalue/DataValueStoreTest.java	2009-09-25 21:45:01 +0000
@@ -149,7 +149,7 @@
         
         categoryOptionComboService.addDataElementCategoryOptionCombo( optionCombo );
     }
-
+    
     // -------------------------------------------------------------------------
     // Basic DataValue
     // -------------------------------------------------------------------------
@@ -203,7 +203,7 @@
         assertEquals( periodC, dataValueC.getPeriod() );
         assertEquals( "3", dataValueC.getValue() );
     }
-
+    
     @Test
     public void testUpdataDataValue()
         throws Exception

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionServiceTest.java	2009-07-06 17:45:57 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionServiceTest.java	2009-09-25 21:45:01 +0000
@@ -39,7 +39,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.DhisTest;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryComboService;
@@ -58,7 +58,7 @@
  * @version $Id$
  */
 public class ExpressionServiceTest
-    extends DhisSpringTest
+    extends DhisTest
 {
     private ExpressionService expressionService;
 
@@ -149,6 +149,12 @@
         dataValueService.addDataValue( createDataValue( dataElementB, period, source, "5", categoryOptionCombo ) );        
     }
 
+    @Override
+    public boolean emptyDatabaseAfterTest()
+    {
+        return true;
+    }
+
     // -------------------------------------------------------------------------
     // Business logic tests
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionStoreTest.java	2009-06-20 14:26:00 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/expression/ExpressionStoreTest.java	2009-09-25 21:45:01 +0000
@@ -36,7 +36,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.DhisTest;
 import org.hisp.dhis.common.GenericStore;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
@@ -48,7 +48,7 @@
  */
 @SuppressWarnings( "unchecked" )
 public class ExpressionStoreTest
-    extends DhisSpringTest
+    extends DhisTest
 {
     private GenericStore<Expression> expressionStore;
     
@@ -99,6 +99,12 @@
         dataElements.add( dataElementD );
     }
 
+    @Override
+    public boolean emptyDatabaseAfterTest()
+    {
+        return true;
+    }
+
     // -------------------------------------------------------------------------
     // Tests
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java	2009-07-06 17:45:57 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleServiceTest.java	2009-09-25 21:45:01 +0000
@@ -38,7 +38,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.DhisTest;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementCategoryCombo;
 import org.hisp.dhis.dataelement.DataElementCategoryComboService;
@@ -64,7 +64,7 @@
  * @version $Id$
  */
 public class ValidationRuleServiceTest
-    extends DhisSpringTest
+    extends DhisTest
 {    
     private ValidationRuleService validationRuleService;
 
@@ -202,6 +202,12 @@
         group = createValidationRuleGroup( 'A' );
     }
 
+    @Override
+    public boolean emptyDatabaseAfterTest()
+    {
+        return true;
+    }
+
     // ----------------------------------------------------------------------
     // Business logic tests
     // ----------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleStoreTest.java'
--- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleStoreTest.java	2009-06-20 14:26:00 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/validation/ValidationRuleStoreTest.java	2009-09-25 21:45:01 +0000
@@ -36,7 +36,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import org.hisp.dhis.DhisSpringTest;
+import org.hisp.dhis.DhisTest;
 import org.hisp.dhis.common.GenericNameStore;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
@@ -50,7 +50,7 @@
  */
 @SuppressWarnings( "unchecked" )
 public class ValidationRuleStoreTest
-    extends DhisSpringTest
+    extends DhisTest
 {
     private GenericNameStore<ValidationRule> validationRuleStore;
 
@@ -103,7 +103,13 @@
         expressionService.addExpression( expressionB );
         expressionService.addExpression( expressionA );
     }
-    
+
+    @Override
+    public boolean emptyDatabaseAfterTest()
+    {
+        return true;
+    }
+
     // -------------------------------------------------------------------------
     // ValidationRule
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-excel-reporting/pom.xml'
--- dhis-2/dhis-services/dhis-service-excel-reporting/pom.xml	2009-09-15 12:36:41 +0000
+++ dhis-2/dhis-services/dhis-service-excel-reporting/pom.xml	2009-09-25 21:45:01 +0000
@@ -41,10 +41,12 @@
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-service-mapping</artifactId>
     </dependency>
+    <!-- 
     <dependency>
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-service-user-hibernate</artifactId>
     </dependency>
+    -->
     <dependency>
       <groupId>org.hisp.dhis</groupId>
       <artifactId>dhis-support-system</artifactId>

=== modified file 'dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/DefaultReportExcelService.java'
--- dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/DefaultReportExcelService.java	2009-09-25 06:10:21 +0000
+++ dhis-2/dhis-services/dhis-service-excel-reporting/src/main/java/org/hisp/dhis/reportexcel/DefaultReportExcelService.java	2009-09-25 21:45:01 +0000
@@ -57,14 +57,14 @@
     {
         this.reportStore = reportStore;
     }
-
+/*
     private UserStore userStore;
 
     public void setUserStore( UserStore userStore )
     {
         this.userStore = userStore;
     }
-
+*/
     // --------------------------------------
     // Service of Report
     // --------------------------------------
@@ -106,10 +106,11 @@
 
     public Collection<ReportExcel> getReportExcels( User user, boolean superUser, String group )
     {
-        if ( user == null || (user != null && superUser) )
+        //if ( user == null || (user != null && superUser) )
         {
             return this.getReportsByGroup( group );
         }
+        /*
         else
         {
             Collection<ReportExcel> reports = new ArrayList<ReportExcel>();
@@ -124,7 +125,7 @@
             reports.retainAll( this.getReportsByGroup( group ) );
 
             return reports;
-        }
+        }*/
     }
 
     public Collection<String> getReportExcelGroups()

=== modified file 'dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/META-INF/dhis/beans.xml	2009-09-15 17:16:30 +0000
+++ dhis-2/dhis-services/dhis-service-excel-reporting/src/main/resources/META-INF/dhis/beans.xml	2009-09-25 21:45:01 +0000
@@ -13,7 +13,7 @@
 
 	<bean id="org.hisp.dhis.reportexcel.ReportExcelService" class="org.hisp.dhis.reportexcel.DefaultReportExcelService">
 	   <property name="reportStore" ref="org.hisp.dhis.reportexcel.ReportExcelStore" />
-	   <property name="userStore" ref="org.hisp.dhis.user.UserStore" />
+	   <!-- <property name="userStore" ref="org.hisp.dhis.user.UserStore" /> -->
 	</bean>
 
 	<!-- Report Location Manager -->

=== modified file 'dhis-2/dhis-services/dhis-service-user-hibernate/src/main/resources/org/hisp/dhis/user/hibernate/UserAuthorityGroup.hbm.xml'
--- dhis-2/dhis-services/dhis-service-user-hibernate/src/main/resources/org/hisp/dhis/user/hibernate/UserAuthorityGroup.hbm.xml	2009-09-25 06:10:21 +0000
+++ dhis-2/dhis-services/dhis-service-user-hibernate/src/main/resources/org/hisp/dhis/user/hibernate/UserAuthorityGroup.hbm.xml	2009-09-25 21:45:01 +0000
@@ -32,12 +32,6 @@
       <many-to-many column="datasetid" class="org.hisp.dhis.dataset.DataSet"
         foreign-key="fk_datasetid"/>
     </set>
-    
-    <set name="reportExcels" table="userrolereportexcel">
-      <key column="userroleid"/>
-      <many-to-many column="reportexcelid" class="org.hisp.dhis.reportexcel.ReportExcel"
-        foreign-key="fk_reportexcelid"/>
-    </set>
-    
+        
   </class>
 </hibernate-mapping>

=== modified file 'dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/dbms/HibernateDbmsManager.java'
--- dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/dbms/HibernateDbmsManager.java	2009-08-12 21:06:37 +0000
+++ dhis-2/dhis-support/dhis-support-hibernate/src/main/java/org/hisp/dhis/dbms/HibernateDbmsManager.java	2009-09-25 21:45:01 +0000
@@ -112,7 +112,8 @@
         emptyTable( "datasetsource" );
         emptyTable( "datasetmembers" );        
         emptyTable( "dataset" );
-        
+
+        emptyTable( "expressiondataelement" );
         emptyTable( "calculateddataelement" );
         emptyTable( "dataelementgroupmembers" );
         emptyTable( "dataelementgroup" );
@@ -128,6 +129,7 @@
         emptyTable( "dataelementcategory" );
         emptyTable( "dataelementcategoryoption" );
 
+        emptyTable( "mocksource" );
         emptyTable( "source" );
         emptyTable( "period" );
         

=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java'
--- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/RunValidationAction.java	2009-09-25 21:45:01 +0000
@@ -33,6 +33,7 @@
 import java.util.HashSet;
 import java.util.List;
 
+import org.amplecode.quick.StatementManager;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.hisp.dhis.i18n.I18nFormat;
@@ -91,6 +92,13 @@
     {
         this.organisationUnitService = organisationUnitService;
     }
+    
+    private StatementManager statementManager;
+
+    public void setStatementManager( StatementManager statementManager )
+    {
+        this.statementManager = statementManager;
+    }
 
     // -------------------------------------------------------------------------
     // Input/output
@@ -161,6 +169,8 @@
             sources = organisationUnits;
         }
 
+        statementManager.initialise();
+        
         if ( validationRuleGroupId == -1 )
         {
             log.info( "Validating all rules" );
@@ -178,6 +188,8 @@
                 format.parseDate( startDate ), format.parseDate( endDate ), sources, group ) );
         }
 
+        statementManager.destroy();
+        
         Collections.sort( validationResults, new ValidationResultComparator() );
         
         SessionUtils.setSessionVar( KEY_VALIDATIONRESULT, validationResults );

=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml	2009-05-25 10:27:57 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/META-INF/dhis/beans.xml	2009-09-25 21:45:01 +0000
@@ -200,7 +200,10 @@
     </property>
     <property name="organisationUnitService">
       <ref bean="org.hisp.dhis.organisationunit.OrganisationUnitService"/>
-    </property>           
+    </property>
+    <property name="statementManager">
+      <ref bean="statementManager"/>
+    </property>
   </bean>
   
   <bean id="org.hisp.dhis.validationrule.action.GetValidationResultDetailsAction"