=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/startup/TableAlteror.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/startup/TableAlteror.java 2012-07-26 08:53:44 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/startup/TableAlteror.java 2012-07-26 11:26:41 +0000 @@ -32,15 +32,15 @@ import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.SEPARATOR_OBJECT; import java.sql.ResultSet; -import java.sql.SQLException; +import java.sql.Statement; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.amplecode.quick.StatementHolder; +import org.amplecode.quick.StatementManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.system.startup.AbstractStartupRoutine; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.RowMapper; import org.springframework.transaction.annotation.Transactional; /** @@ -59,11 +59,11 @@ // Dependencies // ------------------------------------------------------------------------- - private JdbcTemplate jdbcTemplate; + private StatementManager statementManager; - public void setJdbcTemplate( JdbcTemplate jdbcTemplate ) + public void setStatementManager( StatementManager statementManager ) { - this.jdbcTemplate = jdbcTemplate; + this.statementManager = statementManager; } // ------------------------------------------------------------------------- @@ -126,21 +126,21 @@ private void updateProgramStageInstanceOrgunit() { + StatementHolder holder = statementManager.getHolder(); + try { - String sql = "SELECT distinct programstageinstanceid, organisationunitid, providedByAnotherFacility FROM patientdatavalue"; - - jdbcTemplate.query( sql, new RowMapper() + Statement statement = holder.getStatement(); + + ResultSet resultSet = statement + .executeQuery( "SELECT distinct programstageinstanceid, organisationunitid, providedByAnotherFacility FROM patientdatavalue" ); + + while ( resultSet.next() ) { - public Boolean mapRow( ResultSet rs, int rowNum ) - throws SQLException - { - executeSql( "UPDATE programstageinstance SET organisationunitid=" + rs.getInt( 2 ) - + ", providedByAnotherFacility=" + rs.getBoolean( 3 ) + " WHERE programstageinstanceid=" - + rs.getInt( 1 ) ); - return true; - } - } ); + executeSql( "UPDATE programstageinstance SET organisationunitid=" + resultSet.getInt( 2 ) + + ", providedByAnotherFacility=" + resultSet.getBoolean( 3 ) + " WHERE programstageinstanceid=" + + resultSet.getInt( 1 ) ); + } executeSql( "ALTER TABLE patientdatavalue DROP COLUMN organisationUnitid" ); executeSql( "ALTER TABLE patientdatavalue DROP COLUMN providedByAnotherFacility" ); @@ -150,60 +150,69 @@ { log.debug( ex ); } + finally + { + holder.close(); + } } private void updateCaseAggregationCondition() { + String regExp = "\\[" + OBJECT_PROGRAM_STAGE_DATAELEMENT + SEPARATOR_OBJECT + "[0-9]+" + SEPARATOR_ID + + "[0-9]+" + "\\]"; try { - String sql = "SELECT caseaggregationconditionid, aggregationExpression FROM caseaggregationcondition"; - - jdbcTemplate.query( sql, new RowMapper() + StatementHolder holder = statementManager.getHolder(); + + Statement statement = holder.getStatement(); + + ResultSet resultSet = statement + .executeQuery( "SELECT caseaggregationconditionid, aggregationExpression FROM caseaggregationcondition" ); + + while ( resultSet.next() ) { - public Boolean mapRow( ResultSet rs, int rowNum ) - throws SQLException + StringBuffer formular = new StringBuffer(); + + // --------------------------------------------------------------------- + // parse expressions + // --------------------------------------------------------------------- + + Pattern pattern = Pattern.compile( regExp ); + + Matcher matcher = pattern.matcher( resultSet.getString( 2 ) ); + + while ( matcher.find() ) { - String regExp = "\\[" + OBJECT_PROGRAM_STAGE_DATAELEMENT + SEPARATOR_OBJECT + "[0-9]+" - + SEPARATOR_ID + "[0-9]+" + "\\]"; - - StringBuffer formula = new StringBuffer(); - - // --------------------------------------------------------------------- - // parse expressions - // --------------------------------------------------------------------- - - Pattern pattern = Pattern.compile( regExp ); - - Matcher matcher = pattern.matcher( rs.getString( 2 ) ); - - while ( matcher.find() ) + String match = matcher.group(); + match = match.replaceAll( "[\\[\\]]", "" ); + + String[] info = match.split( SEPARATOR_OBJECT ); + String[] ids = info[1].split( SEPARATOR_ID ); + int programStageId = Integer.parseInt( ids[0] ); + + StatementHolder _holder = statementManager.getHolder(); + Statement _statement = _holder.getStatement(); + ResultSet rsProgramId = _statement + .executeQuery( "SELECT programid FROM programstage where programstageid=" + programStageId ); + + if ( rsProgramId.next() ) { - String match = matcher.group(); - match = match.replaceAll( "[\\[\\]]", "" ); - - String[] info = match.split( SEPARATOR_OBJECT ); - String[] ids = info[1].split( SEPARATOR_ID ); - int programStageId = Integer.parseInt( ids[0] ); - - String subSQL = "SELECT programid FROM programstage where programstageid=" + programStageId; - - int programId = jdbcTemplate.queryForInt( subSQL ); + int programId = rsProgramId.getInt( 1 ); String aggregationExpression = "[" + OBJECT_PROGRAM_STAGE_DATAELEMENT + SEPARATOR_OBJECT + programId + "." + programStageId + "." + ids[1] + "]"; - matcher.appendReplacement( formula, aggregationExpression ); + matcher.appendReplacement( formular, aggregationExpression ); } - - matcher.appendTail( formula ); - - executeSql( "UPDATE caseaggregationcondition SET aggregationExpression='" + formula.toString() - + "' WHERE caseaggregationconditionid=" + rs.getInt( 1 ) ); - - return true; } - } ); + + matcher.appendTail( formular ); + + executeSql( "UPDATE caseaggregationcondition SET aggregationExpression='" + formular.toString() + + "' WHERE caseaggregationconditionid=" + resultSet.getInt( 1 ) ); + + } } catch ( Exception e ) { @@ -215,19 +224,18 @@ { try { - String sql = "SELECT patienttabularreportid, organisationunitid FROM patienttabularreport"; - - jdbcTemplate.query( sql, new RowMapper() + StatementHolder holder = statementManager.getHolder(); + + Statement statement = holder.getStatement(); + + ResultSet resultSet = statement + .executeQuery( "SELECT patienttabularreportid, organisationunitid FROM patienttabularreport" ); + + while ( resultSet.next() ) { - public Boolean mapRow( ResultSet rs, int rowNum ) - throws SQLException - { - executeSql( " INSERT INTO patienttabularreport_organisationUnits ( patienttabularreportid, organisationunitid ) VALUES ( " - + rs.getInt( 1 ) + ", " + rs.getInt( 2 ) + ")" ); - return true; - } - } ); - + executeSql( " INSERT INTO patienttabularreport_organisationUnits ( patienttabularreportid, organisationunitid ) VALUES ( " + + resultSet.getInt( 1 ) + ", " + resultSet.getInt( 2 ) + ")" ); + } executeSql( "ALTER TABLE patienttabularreport DROP COLUMN organisationunitid" ); } catch ( Exception e ) @@ -240,21 +248,26 @@ { try { - String sql = "SELECT pd.patienttabularreportid, tr.programstageid, pd.elt, sort_order " - + " FROM patienttabularreport_dataelements pd inner join patienttabularreport tr" - + " on pd.patienttabularreportid=tr.patienttabularreportid" + " order by pd.patienttabularreportid"; - - jdbcTemplate.query( sql, new RowMapper() + StatementHolder holder = statementManager.getHolder(); + + Statement statement = holder.getStatement(); + + ResultSet resultSet = statement + .executeQuery( "SELECT pd.patienttabularreportid, tr.programstageid, pd.elt, sort_order " + + " FROM patienttabularreport_dataelements pd inner join patienttabularreport tr" + + " on pd.patienttabularreportid=tr.patienttabularreportid" + " order by pd.patienttabularreportid" ); + + while ( resultSet.next() ) { - public Boolean mapRow( ResultSet rs, int rowNum ) - throws SQLException - { - executeSql( "INSERT INTO patienttabularreport_programstagedataelements ( patienttabularreportid, programstageid, dataelementid, sort_order ) VALUES ( " - + rs.getInt( 1 ) + ", " + rs.getInt( 2 ) + ", " + rs.getInt( 3 ) + ", " + rs.getInt( 4 ) + ")" ); - return true; - } - } ); - + executeSql( "INSERT INTO patienttabularreport_programstagedataelements ( patienttabularreportid, programstageid, dataelementid, sort_order ) VALUES ( " + + resultSet.getInt( 1 ) + + ", " + + resultSet.getInt( 2 ) + + ", " + + resultSet.getInt( 3 ) + + ", " + + resultSet.getInt( 4 ) + ")" ); + } executeSql( "ALTER TABLE patienttabularreport DROP COLUMN programstageid" ); executeSql( "DROP TABLE patienttabularreport_dataelements" ); } @@ -268,19 +281,17 @@ { try { - String sql = "SELECT programstageinstanceid, storedBy" - + " FROM programstageinstance where storedBy is not null"; - - jdbcTemplate.query( sql, new RowMapper() + StatementHolder holder = statementManager.getHolder(); + Statement statement = holder.getStatement(); + + ResultSet resultSet = statement.executeQuery( "SELECT programstageinstanceid, storedBy" + + " FROM programstageinstance where storedBy is not null" ); + + while ( resultSet.next() ) { - public Boolean mapRow( ResultSet rs, int rowNum ) - throws SQLException - { - executeSql( "UPDATE patientdatavalue SET storedBy='" + rs.getString( 2 ) - + "' where programstageinstanceid=" + rs.getInt( 1 ) ); - return true; - } - } ); + executeSql( "UPDATE patientdatavalue SET storedBy='" + resultSet.getString( 2 ) + + "' where programstageinstanceid=" + resultSet.getInt( 1 ) ); + } executeSql( "ALTER TABLE programstageinstance DROP COLUMN storedBy" ); } @@ -288,9 +299,18 @@ { } } - - private void executeSql(String sql) + + private int executeSql( String sql ) { - jdbcTemplate.execute( sql ); + try + { + return statementManager.getHolder().executeUpdate( sql ); + } + catch ( Exception ex ) + { + log.debug( ex ); + + return -1; + } } } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml 2012-07-26 08:53:44 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml 2012-07-26 11:26:41 +0000 @@ -369,7 +369,7 @@ - +