=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java 2011-03-22 04:36:39 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java 2011-05-23 06:10:58 +0000 @@ -20,6 +20,8 @@ String ID = ActivityPlanService.class.getName(); Collection getActivitiesByProvider( OrganisationUnit organisationUnit ); + + Collection getActivitiesByProvider( OrganisationUnit organisationUnit, int min, int max ); Collection getActivitiesByProvider( OrganisationUnit organisationUnit, Collection programs ); @@ -34,5 +36,7 @@ Collection getActivitiesWithInDate( Date startDate, Date endDate ); Collection getCurrentActivitiesByProvider( OrganisationUnit organisationUnit ); + + int countActivitiesByProvider ( OrganisationUnit organisationUnit ); } === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanStore.java 2011-05-23 06:10:58 +0000 @@ -0,0 +1,19 @@ +/** + * + */ +package org.hisp.dhis.activityplan; + +import java.util.Collection; + +/** + * @author abyotag_adm + * + */ +public interface ActivityPlanStore +{ + String ID = ActivityPlanStore.class.getName(); + + Collection getActivitiesByProvider( Integer orgunitId, int max, int min ); + + int countActivitiesByProvider ( Integer orgunitId ); +} === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java 2011-04-28 07:10:33 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java 2011-05-23 06:10:58 +0000 @@ -61,6 +61,13 @@ // Dependencies // ------------------------------------------------------------------------- + private ActivityPlanStore activityPlanStore; + + public void setActivityPlanStore( ActivityPlanStore activityPlanStore ) + { + this.activityPlanStore = activityPlanStore; + } + private ProgramService programService; public void setProgramService( ProgramService programService ) @@ -103,37 +110,6 @@ public Collection getCurrentActivitiesByProvider( OrganisationUnit organisationUnit ) { - // long time = PeriodType.createCalendarInstance().getTime().getTime(); - // - // List items = new ArrayList(); - // - // Calendar expiredDate = Calendar.getInstance(); - // - // Collection programStageInstances = - // programStageInstanceService.get( organisationUnit, - // null, null, false ); - // - // for ( ProgramStageInstance programStageInstance : - // programStageInstances ) - // { - // expiredDate.setTime( DateUtils.getDateAfterAddition( - // programStageInstance.getDueDate(), - // programStageInstance.getProgramInstance().getProgram().getMaxDaysAllowedInputData() - // ) ); - // // TODO compare with date.before - // if ( programStageInstance.getDueDate().getTime() <= time && - // expiredDate.getTimeInMillis() > time ) - // { - // Activity activity = new Activity(); - // activity.setBeneficiary( - // programStageInstance.getProgramInstance().getPatient() ); - // activity.setTask( programStageInstance ); - // activity.setDueDate( programStageInstance.getDueDate() ); - // items.add( activity ); - // } - // } - // return items; - long time = PeriodType.createCalendarInstance().getTime().getTime(); List items = new ArrayList(); @@ -308,6 +284,31 @@ } + + public Collection getActivitiesByProvider( OrganisationUnit organisationUnit, int min, int max ) + { + Collection programStageInstanceIds = activityPlanStore.getActivitiesByProvider ( organisationUnit.getId(), min, max); + + Collection activities = new ArrayList(); + + for( Integer id : programStageInstanceIds ) + { + ProgramStageInstance instance = programStageInstanceService.getProgramStageInstance( id ); + Activity activity = new Activity(); + activity.setBeneficiary( instance.getProgramInstance().getPatient() ); + activity.setTask( instance ); + activity.setDueDate( instance.getDueDate() ); + activities.add( activity ); + } + + return activities; + } + + public int countActivitiesByProvider ( OrganisationUnit organisationUnit ) + { + return activityPlanStore.countActivitiesByProvider( organisationUnit.getId() ); + } + // ------------------------------------------------------------------------- // Supportive methods // ------------------------------------------------------------------------- === added directory 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/jdbc' === added file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/jdbc/JdbcActivityPlanStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/jdbc/JdbcActivityPlanStore.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/jdbc/JdbcActivityPlanStore.java 2011-05-23 06:10:58 +0000 @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2004-2009, University of Oslo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of the HISP project nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.hisp.dhis.activityplan.jdbc; + +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.Collection; +import java.util.HashSet; + +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.activityplan.ActivityPlanStore; +import org.hisp.dhis.jdbc.StatementBuilder; +import org.hisp.dhis.patient.startup.TableAlteror; + +/** + * @author Chau Thu Tran + * @version $ JdbcActivityPlanStore.java May 22, 2011 7:52:03 PM $ + * + */ +public class JdbcActivityPlanStore + implements ActivityPlanStore +{ + private static final Log log = LogFactory.getLog( TableAlteror.class ); + + // ------------------------------------------------------------------------- + // Dependency + // ------------------------------------------------------------------------- + + private StatementManager statementManager; + + private StatementBuilder statementBuilder; + + // ------------------------------------------------------------------------- + // Setters + // ------------------------------------------------------------------------- + + public void setStatementManager( StatementManager statementManager ) + { + this.statementManager = statementManager; + } + + public void setStatementBuilder( StatementBuilder statementBuilder ) + { + this.statementBuilder = statementBuilder; + } + + // ------------------------------------------------------------------------- + // Implementation Methods + // ------------------------------------------------------------------------- + + @Override + public Collection getActivitiesByProvider( Integer orgunitId, int min, int max ) + { + StatementHolder holder = statementManager.getHolder(); + + Collection programStageInstanceIds = new HashSet(); + try + { + Statement statement = holder.getStatement(); + + String sql = statementBuilder.getActivityPlan( orgunitId, min, max ); + + ResultSet resultSet = statement.executeQuery( sql ); + + while ( resultSet.next() ) + { + programStageInstanceIds.add( resultSet.getInt( 1 ) ); + } + + return programStageInstanceIds; + + } + catch ( Exception ex ) + { + log.debug( ex ); + + return null; + } + finally + { + holder.close(); + } + } + + @Override + public int countActivitiesByProvider( Integer orgunitId ) + { + StatementHolder holder = statementManager.getHolder(); + + try + { + Statement statement = holder.getStatement(); + + String sql = "SELECT count(psi.programstageinstanceid) " + + "FROM programstageinstance psi " + + "INNER JOIN programinstance pi " + + "ON pi.programinstanceid = psi.programinstanceid " + + "INNER JOIN programstage ps " + + "ON ps.programstageid=psi.programstageid " + + "INNER JOIN program_organisationunits po " + + "ON po.programid=pi.programid " + + "WHERE pi.completed = FALSE " + + "AND po.organisationunitid = " + orgunitId + " AND psi.completed = FALSE " + + "AND ps.stageinprogram in ( SELECT min(ps1.stageinprogram) " + + "FROM programstageinstance psi1 " + + "INNER JOIN programinstance pi1 " + + "ON pi1.programinstanceid = psi1.programinstanceid " + + "INNER JOIN programstage ps1 " + + "ON ps1.programstageid=psi1.programstageid " + + "INNER JOIN program_organisationunits po1 " + + "ON po1.programid=pi1.programid " + + "WHERE pi1.completed = FALSE " + + "AND po1.organisationunitid = " + orgunitId + " AND psi1.completed = FALSE ) " + + "ORDER BY ps.stageinprogram"; + + ResultSet resultSet = statement.executeQuery( sql ); + if(resultSet.next()) + { + return resultSet.getInt( 1 ); + } + + return 0; + } + catch ( Exception ex ) + { + ex.printStackTrace(); + return 0; + } + finally + { + holder.close(); + } + } + +} === 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 2011-05-02 14:48:05 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/startup/TableAlteror.java 2011-05-23 06:10:58 +0000 @@ -29,6 +29,8 @@ import java.sql.ResultSet; import java.sql.Statement; +import java.util.Collection; +import java.util.HashSet; import org.amplecode.quick.StatementHolder; import org.amplecode.quick.StatementManager; @@ -101,9 +103,11 @@ executeSql( "UPDATE dataset SET mobile = false WHERE mobile is null" ); executeSql( "UPDATE dataset SET version = 1 WHERE version is null" ); - + updateSingleProgramValidation(); + updateStageInProgram(); + } // ------------------------------------------------------------------------- @@ -147,16 +151,15 @@ private void updateSingleProgramValidation() { StatementHolder holder = statementManager.getHolder(); - + int optionCombo = categoryService.getDefaultDataElementCategoryOptionCombo().getId(); - + try { Statement statement = holder.getStatement(); - ResultSet isUpdated = statement - .executeQuery( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS " + - "WHERE TABLE_NAME = 'programstage_dataelement_validation'" ); + ResultSet isUpdated = statement.executeQuery( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS " + + "WHERE TABLE_NAME = 'programstage_dataelement_validation'" ); if ( isUpdated.next() ) { @@ -166,29 +169,35 @@ int max = rsCount.getInt( 1 ) + 1; ResultSet resultSet = statement - .executeQuery( "SELECT pdv.description, pdv.leftprogramstageid, pdv.leftdataelementid, "+ - "pdv.rightprogramstageid, pdv.rightdataelementid, " + - "pdv.operator, ps.programid "+ - "FROM programstage_dataelement_validation pdv "+ - "INNER JOIN programstage_dataelements pd "+ - "ON (pdv.leftprogramstageid=pd.dataelementid AND "+ - "pdv.leftdataelementid=pd.programstageid) "+ - "INNER JOIN programstage ps "+ - "ON pd.programstageid=ps.programstageid" ); + .executeQuery( "SELECT pdv.description, pdv.leftprogramstageid, pdv.leftdataelementid, " + + "pdv.rightprogramstageid, pdv.rightdataelementid, " + "pdv.operator, ps.programid " + + "FROM programstage_dataelement_validation pdv " + "INNER JOIN programstage_dataelements pd " + + "ON (pdv.leftprogramstageid=pd.dataelementid AND " + + "pdv.leftdataelementid=pd.programstageid) " + "INNER JOIN programstage ps " + + "ON pd.programstageid=ps.programstageid" ); while ( resultSet.next() ) { max++; - String leftSide = "[" + resultSet.getString( 2 ) + "." + resultSet.getString( 3 ) + "." + optionCombo + "]"; - String rightSide = "[" + resultSet.getString( 4 ) + "." + resultSet.getString( 5 ) + "." + optionCombo + "]"; - String operator = resultSet.getInt( 6 ) > 0 ? ">" : ( resultSet.getInt( 6 ) < 0 ) ? "<" : "=="; - + String leftSide = "[" + resultSet.getString( 2 ) + "." + resultSet.getString( 3 ) + "." + + optionCombo + "]"; + String rightSide = "[" + resultSet.getString( 4 ) + "." + resultSet.getString( 5 ) + "." + + optionCombo + "]"; + String operator = resultSet.getInt( 6 ) > 0 ? ">" : (resultSet.getInt( 6 ) < 0) ? "<" : "=="; + String fomular = leftSide + operator + rightSide; - - executeSql( "INSERT INTO programvalidation (programvalidationid, description,leftSide, rightSide, programid )" + - "VALUES ( " + max + ",'" + resultSet.getString( 1 ) + "', '" + fomular + "', '1==1', " + resultSet.getInt( 7 ) + ")" ); + + executeSql( "INSERT INTO programvalidation (programvalidationid, description,leftSide, rightSide, programid )" + + "VALUES ( " + + max + + ",'" + + resultSet.getString( 1 ) + + "', '" + + fomular + + "', '1==1', " + + resultSet.getInt( 7 ) + ")" ); } - + executeSql( "DROP TABLE programstage_dataelement_validation" ); } } @@ -202,6 +211,75 @@ } } + private void updateStageInProgram() + { + StatementHolder holder = statementManager.getHolder(); + + try + { + Statement statement = holder.getStatement(); + + Collection programIds = getPrograms(); + + for ( Integer programId : programIds ) + { + ResultSet resultSet = statement.executeQuery( "SELECT programstageid " + + "FROM programstage WHERE programid = " + programId ); + + int index = 1; + while ( resultSet.next() ) + { + executeSql( "UPDATE programstage SET stageinprogram = " + index + " WHERE programstageid = " + + resultSet.getInt( 1 ) ); + index++; + } + } + } + catch ( Exception ex ) + { + log.debug( ex ); + } + finally + { + holder.close(); + } + } + + private Collection getPrograms() + { + Collection result = new HashSet(); + + StatementHolder holder = statementManager.getHolder(); + + try + { + Statement statement = holder.getStatement(); + + ResultSet rsMax = statement.executeQuery( "SELECT max(stageinprogram), programid " + + "FROM programstage GROUP BY programid" ); + + while ( rsMax.next() ) + { + if ( rsMax.getInt( 1 ) == 0 ) + { + result.add( rsMax.getInt( 2 ) ); + } + } + + return result; + } + catch ( Exception ex ) + { + log.debug( ex ); + + return null; + } + finally + { + holder.close(); + } + } + private int executeSql( String sql ) { try === 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 2011-04-29 07:41:04 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml 2011-05-23 06:10:58 +0000 @@ -15,6 +15,12 @@ + + + + + @@ -144,6 +150,8 @@ ref="org.hisp.dhis.program.ProgramInstanceService" /> + betweenPeriodIds); + String getActivityPlan( int orgunitId, int min, int max ); } === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java 2011-04-07 08:21:36 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/DerbyStatementBuilder.java 2011-05-23 06:10:58 +0000 @@ -392,5 +392,30 @@ } return sqlsb.toString(); } - + + public String getActivityPlan( int orgunitId, int min, int max ) + { + return "SELECT psi.programstageinstanceid " + + "FROM programstageinstance psi " + + "INNER JOIN programinstance pi " + + "ON pi.programinstanceid = psi.programinstanceid " + + "INNER JOIN programstage ps " + + "ON ps.programstageid=psi.programstageid " + + "INNER JOIN program_organisationunits po " + + "ON po.programid=pi.programid " + + "WHERE pi.completed = FALSE " + + "AND po.organisationunitid = " + orgunitId + " AND psi.completed = FALSE " + + "AND ps.stageinprogram in ( SELECT min(ps1.stageinprogram) " + + "FROM programstageinstance psi1 " + + "INNER JOIN programinstance pi1 " + + "ON pi1.programinstanceid = psi1.programinstanceid " + + "INNER JOIN programstage ps1 " + + "ON ps1.programstageid=psi1.programstageid " + + "INNER JOIN program_organisationunits po1 " + + "ON po1.programid=pi1.programid " + + "WHERE pi1.completed = FALSE " + + "AND po1.organisationunitid = " + orgunitId + " AND psi1.completed = FALSE ) " + + "ORDER BY ps.stageinprogram " + + "LIMIT " + max + " OFFSET " + min; + } } === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2011-04-07 08:21:36 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/H2StatementBuilder.java 2011-05-23 06:10:58 +0000 @@ -397,6 +397,30 @@ } return sqlsb.toString(); } - - + + public String getActivityPlan( int orgunitId, int min, int max ) + { + return "SELECT psi.programstageinstanceid " + + "FROM programstageinstance psi " + + "INNER JOIN programinstance pi " + + "ON pi.programinstanceid = psi.programinstanceid " + + "INNER JOIN programstage ps " + + "ON ps.programstageid=psi.programstageid " + + "INNER JOIN program_organisationunits po " + + "ON po.programid=pi.programid " + + "WHERE pi.completed = FALSE " + + "AND po.organisationunitid = " + orgunitId + " AND psi.completed = FALSE " + + "AND ps.stageinprogram in ( SELECT min(ps1.stageinprogram) " + + "FROM programstageinstance psi1 " + + "INNER JOIN programinstance pi1 " + + "ON pi1.programinstanceid = psi1.programinstanceid " + + "INNER JOIN programstage ps1 " + + "ON ps1.programstageid=psi1.programstageid " + + "INNER JOIN program_organisationunits po1 " + + "ON po1.programid=pi1.programid " + + "WHERE pi1.completed = FALSE " + + "AND po1.organisationunitid = " + orgunitId + " AND psi1.completed = FALSE ) " + + "ORDER BY ps.stageinprogram " + + "LIMIT " + max + " OFFSET " + min; + } } === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2011-05-02 18:40:36 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/MySQLStatementBuilder.java 2011-05-23 06:10:58 +0000 @@ -396,4 +396,30 @@ } return sqlsb.toString(); } + + public String getActivityPlan( int orgunitId, int min, int max ) + { + return "SELECT psi.programstageinstanceid " + + "FROM programstageinstance psi " + + "INNER JOIN programinstance pi " + + "ON pi.programinstanceid = psi.programinstanceid " + + "INNER JOIN programstage ps " + + "ON ps.programstageid=psi.programstageid " + + "INNER JOIN program_organisationunits po " + + "ON po.programid=pi.programid " + + "WHERE pi.completed = FALSE " + + "AND po.organisationunitid = " + orgunitId + " AND psi.completed = FALSE " + + "AND ps.stageinprogram in ( SELECT min(ps1.stageinprogram) " + + "FROM programstageinstance psi1 " + + "INNER JOIN programinstance pi1 " + + "ON pi1.programinstanceid = psi1.programinstanceid " + + "INNER JOIN programstage ps1 " + + "ON ps1.programstageid=psi1.programstageid " + + "INNER JOIN program_organisationunits po1 " + + "ON po1.programid=pi1.programid " + + "WHERE pi1.completed = FALSE " + + "AND po1.organisationunitid = " + orgunitId + " AND psi1.completed = FALSE ) " + + "ORDER BY ps.stageinprogram " + + "LIMIT " + min + " ," + max; + } } === modified file 'dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java' --- dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2011-04-07 08:21:36 +0000 +++ dhis-2/dhis-support/dhis-support-jdbc/src/main/java/org/hisp/dhis/jdbc/statementbuilder/PostgreSQLStatementBuilder.java 2011-05-23 06:10:58 +0000 @@ -394,4 +394,30 @@ } return sqlsb.toString(); } + + public String getActivityPlan( int orgunitId, int min, int max ) + { + return "SELECT psi.programstageinstanceid " + + "FROM programstageinstance psi " + + "INNER JOIN programinstance pi " + + "ON pi.programinstanceid = psi.programinstanceid " + + "INNER JOIN programstage ps " + + "ON ps.programstageid=psi.programstageid " + + "INNER JOIN program_organisationunits po " + + "ON po.programid=pi.programid " + + "WHERE pi.completed = FALSE " + + "AND po.organisationunitid = " + orgunitId + " AND psi.completed = FALSE " + + "AND ps.stageinprogram in ( SELECT min(ps1.stageinprogram) " + + "FROM programstageinstance psi1 " + + "INNER JOIN programinstance pi1 " + + "ON pi1.programinstanceid = psi1.programinstanceid " + + "INNER JOIN programstage ps1 " + + "ON ps1.programstageid=psi1.programstageid " + + "INNER JOIN program_organisationunits po1 " + + "ON po1.programid=pi1.programid " + + "WHERE pi1.completed = FALSE " + + "AND po1.organisationunitid = " + orgunitId + " AND psi1.completed = FALSE ) " + + "ORDER BY ps.stageinprogram " + + "LIMIT " + max + " OFFSET " + min; + } } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/visitplan/SearchVisitPlanAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/visitplan/SearchVisitPlanAction.java 2011-05-12 07:02:28 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/visitplan/SearchVisitPlanAction.java 2011-05-23 06:10:58 +0000 @@ -151,6 +151,13 @@ return activities; } + private Integer total; + + public Integer getTotal() + { + return total; + } + // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- @@ -164,7 +171,12 @@ organisationUnit = selectionManager.getSelectedOrganisationUnit(); - activities = activityPlanService.getActivitiesByProvider( organisationUnit ); + total = activityPlanService.countActivitiesByProvider( organisationUnit ); + + this.paging = createPaging( total ); + + activities = new ArrayList( activityPlanService.getActivitiesByProvider( organisationUnit, paging + .getStartPos(), paging.getPageSize() ) ); for ( Activity activity : activities ) { @@ -186,11 +198,6 @@ { Collection patientsToBeVisited = visitsByPatients.keySet(); - this.paging = this.createPaging( patientsToBeVisited.size() ); - - patientsToBeVisited = this.getBlockElement( new ArrayList( patientsToBeVisited ), paging - .getStartPos(), paging.getEndPos() ); - // ------------------------------------------------------------- // Get all the attributes of the patients to be visited (in case // users want to make sorting based on attributes === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/report.js' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/report.js 2011-05-12 09:40:29 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/report.js 2011-05-23 06:10:58 +0000 @@ -25,6 +25,7 @@ { var type = messageElement.getAttribute( 'type' ); var message = messageElement.firstChild.nodeValue; + hideById( 'contentDiv' ); if ( type == 'success' ) { @@ -48,7 +49,7 @@ { 'startDate': getFieldValue( 'startDate' ), '&endDate': getFieldValue( 'endDate' ) - }, function() { unLockScreen(); }); + }, function() { unLockScreen();hideById( 'message' );showById( 'contentDiv' );}); } function viewRecords( programStageInstanceId ) === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/AddProgramStageAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/AddProgramStageAction.java 2011-03-31 01:42:05 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/AddProgramStageAction.java 2011-05-23 06:10:58 +0000 @@ -144,9 +144,11 @@ Program program = programService.getProgram( id ); - programStage.setProgram( program ); programStage.setName( name ); programStage.setDescription( description ); + programStage.setStageInProgram( program.getProgramStages().size() + 1 ); + programStage.setProgram( program ); + minDaysFromStart = (minDaysFromStart == null) ? 0 : minDaysFromStart; programStage.setMinDaysFromStart( minDaysFromStart );