=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramInstanceDeletionHandler.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramInstanceDeletionHandler.java 2012-05-23 19:48:53 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramInstanceDeletionHandler.java 2012-10-02 08:22:33 +0000 @@ -118,63 +118,29 @@ for ( ProgramInstance programInstance : programInstances ) { - Set programStageInstances = programInstance.getProgramStageInstances(); - - for ( ProgramStageInstance programStageInstance : programStageInstances ) - { - programStageInstanceService.deleteProgramStageInstance( programStageInstance ); - } + Set programStageInstances = programInstance.getProgramStageInstances(); + + for ( ProgramStageInstance programStageInstance : programStageInstances ) + { + programStageInstanceService.deleteProgramStageInstance( programStageInstance ); + } } - + // --------------------------------------------------------------------- // Delete Program Instances // --------------------------------------------------------------------- for ( ProgramInstance programInstance : programInstances ) { - programInstanceService.deleteProgramInstance( programInstance ); + programInstanceService.deleteProgramInstance( programInstance ); } } } @Override - public void deleteProgram( Program program ) + public String allowDeleteProgram( Program program ) { - // --------------------------------------------------------------------- - // Delete Patient data values - // --------------------------------------------------------------------- - Collection programInstances = programInstanceService.getProgramInstances( program ); - - Set dataValues = new HashSet(); - - for ( ProgramInstance programInstance : programInstances ) - { - Collection stageInstances = programInstance.getProgramStageInstances(); - if ( stageInstances != null && stageInstances.size() > 0 ) - { - dataValues.addAll( patientDataValueService.getPatientDataValues( stageInstances ) ); - } - } - - if ( dataValues != null && dataValues.size() > 0 ) - { - for ( PatientDataValue dataValue : dataValues ) - { - patientDataValueService.deletePatientDataValue( dataValue ); - } - } - - // --------------------------------------------------------------------- - // Delete Program Instances - // --------------------------------------------------------------------- - - if ( programInstances != null && programInstances.size() > 0 ) - { - for ( ProgramInstance programInstance : programInstances ) - { - programInstanceService.deleteProgramInstance( programInstance ); - } - } + return (programInstances != null && programInstances.size() > 0) ? null : ERROR; } } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramStageInstanceDeletionHandler.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramStageInstanceDeletionHandler.java 2012-10-01 09:28:45 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/ProgramStageInstanceDeletionHandler.java 2012-10-02 08:22:33 +0000 @@ -63,17 +63,24 @@ @Override public String allowDeleteProgramStage( ProgramStage programStage ) { - String sql = "SELECT COUNT(*) " + "FROM programstageinstance " + "WHERE programstageid=" + programStage.getId(); - - return jdbcTemplate.queryForInt( sql ) == 0 ? null : ERROR; - } - - @Override - public void deleteProgramInstance( ProgramInstance programInstance ) - { - String sql = "DELETE FROM programstageinstance " + - "WHERE programinstanceid = " + programInstance.getId(); - - jdbcTemplate.execute( sql ); + String sql = "SELECT COUNT(*) FROM programstageinstance WHERE programstageid=" + programStage.getId(); + + return jdbcTemplate.queryForInt( sql ) == 0 ? null : ERROR; + } + + @Override + public String allowDeleteProgramInstance( ProgramInstance programInstance ) + { + String sql = "SELECT COUNT(*) FROM programstageinstance WHERE programinstanceid=" + programInstance.getId(); + + return jdbcTemplate.queryForInt( sql ) == 0 ? null : ERROR; + } + + @Override + public String allowDeleteProgram( Program program ) + { + String sql = "SELECT COUNT(*) FROM programstageinstance psi join programinstance pi on pi.programinstanceid=psi.programinstanceid where pi.programid = " + program.getId(); + + return jdbcTemplate.queryForInt( sql ) == 0 ? null : ERROR; } }