=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstance.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstance.java 2015-09-11 11:54:53 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstance.java 2015-09-24 08:32:10 +0000 @@ -64,13 +64,7 @@ */ private static final long serialVersionUID = -1235315582356509653L; - public static int STATUS_ACTIVE = 0; - - private Integer status = STATUS_ACTIVE; - - public static int STATUS_COMPLETED = 1; - - public static int STATUS_CANCELLED = 2; + private ProgramStatus status = ProgramStatus.ACTIVE; private OrganisationUnit organisationUnit; @@ -318,12 +312,12 @@ @JsonProperty @JacksonXmlProperty( namespace = DxfNamespaces.DXF_2_0 ) - public int getStatus() + public ProgramStatus getStatus() { return status; } - public void setStatus( Integer status ) + public void setStatus( ProgramStatus status ) { this.status = status; } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2015-09-11 11:54:53 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2015-09-24 08:32:10 +0000 @@ -28,16 +28,16 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.common.IllegalQueryException; +import org.hisp.dhis.common.OrganisationUnitSelectionMode; +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.trackedentity.TrackedEntityInstance; + import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Set; -import org.hisp.dhis.common.IllegalQueryException; -import org.hisp.dhis.common.OrganisationUnitSelectionMode; -import org.hisp.dhis.organisationunit.OrganisationUnit; -import org.hisp.dhis.trackedentity.TrackedEntityInstance; - /** * @author Abyot Asalefew * @version $Id$ @@ -181,8 +181,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List getProgramInstances( Collection programs, OrganisationUnit organisationUnit, - int status ); + List getProgramInstances( Collection programs, OrganisationUnit organisationUnit, ProgramStatus status ); /** * Retrieve program instances on a program by status @@ -192,7 +191,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List getProgramInstances( Program program, Integer status ); + List getProgramInstances( Program program, ProgramStatus status ); /** * Retrieve program instances on a program list by status @@ -202,7 +201,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List getProgramInstances( Collection programs, Integer status ); + List getProgramInstances( Collection programs, ProgramStatus status ); /** * Retrieve program instances on a TrackedEntityInstance by a status @@ -212,7 +211,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List getProgramInstances( TrackedEntityInstance entityInstance, Integer status ); + List getProgramInstances( TrackedEntityInstance entityInstance, ProgramStatus status ); /** * Retrieve program instances on a TrackedEntityInstance by a program @@ -232,7 +231,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List getProgramInstances( TrackedEntityInstance entityInstance, Program program, Integer status ); + List getProgramInstances( TrackedEntityInstance entityInstance, Program program, ProgramStatus status ); /** * Retrieve program instances with active status on an orgunit by a program @@ -244,11 +243,10 @@ * @param max Maximum results * @return ProgramInstance list */ - List getProgramInstances( Program program, OrganisationUnit organisationUnit, Integer min, - Integer max ); + List getProgramInstances( Program program, OrganisationUnit organisationUnit, Integer min, Integer max ); /** - * Retrieve program instances with active status on an organisation unit by + * Retrieve program instances with active status on an organisation unit by * a program for a certain period with result limited * * @param program Program @@ -286,7 +284,7 @@ * @param endDate The end date for retrieving on enrollment-date * @return ProgramInstance list */ - List getProgramInstancesByStatus( Integer status, Program program, + List getProgramInstancesByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ); /** @@ -301,7 +299,7 @@ * @param endDate The end date for retrieving on enrollment-date * @return A number */ - int countProgramInstancesByStatus( Integer status, Program program, Collection orgunitIds, Date startDate, + int countProgramInstancesByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ); /** @@ -317,12 +315,12 @@ * @param trackedEntityInstance TrackedEntityInstance * @param program Program * @param enrollmentDate The date of enrollment - * @param incidentDate The date of incident + * @param incidentDate The date of incident * @param orgunit Organisation Unit * @param uid UID to use for new instance * @return ProgramInstance */ - ProgramInstance enrollTrackedEntityInstance( TrackedEntityInstance trackedEntityInstance, Program program, + ProgramInstance enrollTrackedEntityInstance( TrackedEntityInstance trackedEntityInstance, Program program, Date enrollmentDate, Date incidentDate, OrganisationUnit orgunit, String uid ); /** @@ -331,7 +329,7 @@ * @param trackedEntityInstance TrackedEntityInstance * @param program Program * @param enrollmentDate The date of enrollment - * @param incidentDate The date of incident + * @param incidentDate The date of incident * @param orgunit Organisation Unit * @return ProgramInstance */ === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java 2015-07-07 14:54:50 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java 2015-09-24 08:32:10 +0000 @@ -97,7 +97,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List get( Collection programs, OrganisationUnit organisationUnit, int status ); + List get( Collection programs, OrganisationUnit organisationUnit, ProgramStatus status ); /** * Retrieve program instances on a program by status @@ -107,7 +107,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List get( Program program, Integer status ); + List get( Program program, ProgramStatus status ); /** * Retrieve program instances on a program list by status @@ -117,7 +117,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List get( Collection programs, Integer status ); + List get( Collection programs, ProgramStatus status ); /** * Retrieve program instances on a TrackedEntityInstance by a status @@ -127,7 +127,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List get( TrackedEntityInstance entityInstance, Integer status ); + List get( TrackedEntityInstance entityInstance, ProgramStatus status ); /** * Retrieve program instances on a TrackedEntityInstance by a program @@ -147,7 +147,7 @@ * STATUS_COMPLETED and STATUS_CANCELLED * @return ProgramInstance list */ - List get( TrackedEntityInstance entityInstance, Program program, Integer status ); + List get( TrackedEntityInstance entityInstance, Program program, ProgramStatus status ); /** * Retrieve program instances with active status on an orgunit by a program @@ -209,7 +209,7 @@ * @param endDate The end date for retrieving on enrollment-date * @return A number */ - int countByStatus( Integer status, Program program, Collection orgunitIds, Date startDate, Date endDate ); + int countByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ); /** * Retrieve program instances with a certain status on a program and an @@ -223,7 +223,7 @@ * @param endDate The end date for retrieving on enrollment-date * @return ProgramInstance list */ - List getByStatus( Integer status, Program program, Collection orgunitIds, + List getByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ); /** @@ -238,7 +238,7 @@ * @param endDate The end date for retrieving on enrollment-date * @return ProgramInstance list */ - List getByStatus( Integer status, Program program, Collection orgunitIds, + List getByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate, Integer min, Integer max ); /** === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2015-06-16 13:17:59 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2015-09-24 08:32:10 +0000 @@ -61,7 +61,7 @@ * Retrieve an event list on program instance list with a certain status * * @param programInstances ProgramInstance list - * @param status EventStatus + * @param status EventStatus * @return ProgramStageInstance list */ List get( Collection programInstances, EventStatus status ); @@ -70,7 +70,7 @@ * Get all events by TrackedEntityInstance, optionally filtering by completed. * * @param entityInstance TrackedEntityInstance - * @param status EventStatus + * @param status EventStatus * @return ProgramStageInstance list */ List get( TrackedEntityInstance entityInstance, EventStatus status ); @@ -80,7 +80,7 @@ * * @return A SchedulingProgramObject list */ - Collection getSendMesssageEvents(); + Collection getSendMessageEvents(); /** * Get the number of events by completed status @@ -93,8 +93,7 @@ * or uncompleted (false) instances. * @return A number */ - int count( ProgramStage programStage, Collection orgunitIds, Date startDate, Date endDate, - Boolean completed ); + int count( ProgramStage programStage, Collection orgunitIds, Date startDate, Date endDate, Boolean completed ); /** * Get the number of over due events of a program stage in a certain period @@ -119,7 +118,7 @@ * LATE_VISIT_STATUS * @return A number */ - int averageNumberCompleted( Program program, Collection orgunitIds, Date after, Date before, int status ); + int averageNumberCompleted( Program program, Collection orgunitIds, Date after, Date before, ProgramStatus status ); /** * Get/Export a report about the number of events of a program completed on @@ -135,6 +134,7 @@ /** * Get the number of ProgramStageInstances updates since the given Date. + * * @param time the time. * @return the number of ProgramStageInstances. */ === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStatus.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStatus.java 2015-01-17 07:41:26 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStatus.java 2015-09-24 08:32:10 +0000 @@ -37,7 +37,7 @@ private int value; - private ProgramStatus( int value ) + ProgramStatus( int value ) { this.value = value; } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2015-09-18 20:42:16 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2015-09-24 08:32:10 +0000 @@ -28,18 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.hisp.dhis.common.OrganisationUnitSelectionMode.ACCESSIBLE; -import static org.hisp.dhis.common.OrganisationUnitSelectionMode.ALL; -import static org.hisp.dhis.common.OrganisationUnitSelectionMode.CHILDREN; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.common.CodeGenerator; @@ -69,6 +57,16 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static org.hisp.dhis.common.OrganisationUnitSelectionMode.*; + /** * @author Abyot Asalefew */ @@ -362,25 +360,25 @@ @Override public List getProgramInstances( Collection programs, - OrganisationUnit organisationUnit, int status ) + OrganisationUnit organisationUnit, ProgramStatus status ) { return programInstanceStore.get( programs, organisationUnit, status ); } @Override - public List getProgramInstances( Collection programs, Integer status ) + public List getProgramInstances( Collection programs, ProgramStatus status ) { return programInstanceStore.get( programs, status ); } @Override - public List getProgramInstances( Program program, Integer status ) + public List getProgramInstances( Program program, ProgramStatus status ) { return programInstanceStore.get( program, status ); } @Override - public List getProgramInstances( TrackedEntityInstance entityInstance, Integer status ) + public List getProgramInstances( TrackedEntityInstance entityInstance, ProgramStatus status ) { return programInstanceStore.get( entityInstance, status ); } @@ -392,15 +390,13 @@ } @Override - public List getProgramInstances( TrackedEntityInstance entityInstance, Program program, - Integer status ) + public List getProgramInstances( TrackedEntityInstance entityInstance, Program program, ProgramStatus status ) { return programInstanceStore.get( entityInstance, program, status ); } @Override - public List getProgramInstances( Program program, OrganisationUnit organisationUnit, - Integer min, Integer max ) + public List getProgramInstances( Program program, OrganisationUnit organisationUnit, Integer min, Integer max ) { return programInstanceStore.get( program, organisationUnit, min, max ); } @@ -419,14 +415,14 @@ } @Override - public int countProgramInstancesByStatus( Integer status, Program program, Collection orgunitIds, + public int countProgramInstancesByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ) { return programInstanceStore.countByStatus( status, program, orgunitIds, startDate, endDate ); } @Override - public List getProgramInstancesByStatus( Integer status, Program program, + public List getProgramInstancesByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ) { return programInstanceStore.getByStatus( status, program, orgunitIds, startDate, endDate ); @@ -483,7 +479,7 @@ programInstance.setIncidentDate( new Date() ); } - programInstance.setStatus( ProgramInstance.STATUS_ACTIVE ); + programInstance.setStatus( ProgramStatus.ACTIVE ); addProgramInstance( programInstance ); // ----------------------------------------------------------------- @@ -571,7 +567,7 @@ // Update program-instance // ----------------------------------------------------------------- - programInstance.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance.setStatus( ProgramStatus.COMPLETED ); programInstance.setEndDate( new Date() ); updateProgramInstance( programInstance ); @@ -589,7 +585,7 @@ Date currentDate = today.getTime(); programInstance.setEndDate( currentDate ); - programInstance.setStatus( ProgramInstance.STATUS_CANCELLED ); + programInstance.setStatus( ProgramStatus.CANCELLED ); updateProgramInstance( programInstance ); // --------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2015-09-13 17:45:53 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2015-09-24 08:32:10 +0000 @@ -28,14 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import org.hisp.dhis.event.EventStatus; import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.message.MessageConversation; @@ -52,6 +44,14 @@ import org.hisp.dhis.user.CurrentUserService; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + /** * @author Abyot Asalefew */ @@ -164,7 +164,7 @@ public long getProgramStageInstanceCount( int days ) { Calendar cal = PeriodType.createCalendarInstance(); - cal.add( Calendar.DAY_OF_YEAR, ( days * -1 ) ); + cal.add( Calendar.DAY_OF_YEAR, (days * -1) ); return programStageInstanceStore.getProgramStageInstanceCountLastUpdatedAfter( cal.getTime() ); } @@ -172,7 +172,7 @@ @Override public Collection getSendMesssageEvents() { - return programStageInstanceStore.getSendMesssageEvents(); + return programStageInstanceStore.getSendMessageEvents(); } @Override @@ -247,13 +247,13 @@ { programStage = program.getProgramStages().iterator().next(); } - + ProgramInstance programInstance = null; - - if ( program.isWithoutRegistration() ) + + if ( program.isWithoutRegistration() ) { Collection programInstances = programInstanceService.getProgramInstances( program ); - + if ( programInstances == null || programInstances.size() == 0 ) { // Add a new program instance if it doesn't exist @@ -261,7 +261,7 @@ programInstance.setEnrollmentDate( executionDate ); programInstance.setIncidentDate( executionDate ); programInstance.setProgram( program ); - programInstance.setStatus( ProgramInstance.STATUS_ACTIVE ); + programInstance.setStatus( ProgramStatus.ACTIVE ); programInstanceService.addProgramInstance( programInstance ); } else @@ -337,7 +337,7 @@ if ( phoneNumbers.size() > 0 ) { String msg = reminderService.getMessageFromTemplate( reminder, programStageInstance, format ); - + try { outboundSms = new OutboundSms(); @@ -392,7 +392,7 @@ && rm.getWhenToSend() != null && rm.getWhenToSend() == status && (rm.getMessageType() == TrackedEntityInstanceReminder.MESSAGE_TYPE_DHIS_MESSAGE || rm - .getMessageType() == TrackedEntityInstanceReminder.MESSAGE_TYPE_BOTH) ) + .getMessageType() == TrackedEntityInstanceReminder.MESSAGE_TYPE_BOTH) ) { int id = messageService.sendMessage( programStageInstance.getProgramStage().getDisplayName(), reminderService.getMessageFromTemplate( rm, programStageInstance, format ), null, === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2015-07-07 14:54:50 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2015-09-24 08:32:10 +0000 @@ -52,10 +52,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Date; -import java.util.HashMap; import java.util.HashSet; import java.util.List; -import java.util.Map; import static org.hisp.dhis.common.IdentifiableObjectUtils.getUids; import static org.hisp.dhis.commons.util.TextUtils.getQuotedCommaDelimitedString; @@ -71,15 +69,6 @@ @Autowired private TrackedEntityInstanceReminderService reminderService; - private static final Map PROGRAM_STATUS_MAP = new HashMap() - { - { - put( ProgramStatus.ACTIVE, ProgramInstance.STATUS_ACTIVE ); - put( ProgramStatus.COMPLETED, ProgramInstance.STATUS_COMPLETED ); - put( ProgramStatus.CANCELLED, ProgramInstance.STATUS_CANCELLED ); - } - }; - // ------------------------------------------------------------------------- // Implemented methods // ------------------------------------------------------------------------- @@ -158,7 +147,7 @@ if ( params.hasProgramStatus() ) { - hql += hlp.whereAnd() + "pi.status = " + PROGRAM_STATUS_MAP.get( params.getProgramStatus() ); + hql += hlp.whereAnd() + "pi.status = '" + params.getProgramStatus() + "'"; } if ( params.hasFollowUp() ) @@ -215,7 +204,7 @@ @Override @SuppressWarnings( "unchecked" ) - public List get( Collection programs, OrganisationUnit organisationUnit, int status ) + public List get( Collection programs, OrganisationUnit organisationUnit, ProgramStatus status ) { if ( programs == null || programs.isEmpty() ) { @@ -231,14 +220,14 @@ @Override @SuppressWarnings( "unchecked" ) - public List get( Program program, Integer status ) + public List get( Program program, ProgramStatus status ) { return getCriteria( Restrictions.eq( "program", program ), Restrictions.eq( "status", status ) ).list(); } @Override @SuppressWarnings( "unchecked" ) - public List get( Collection programs, Integer status ) + public List get( Collection programs, ProgramStatus status ) { if ( programs == null || programs.isEmpty() ) { @@ -250,7 +239,7 @@ @Override @SuppressWarnings( "unchecked" ) - public List get( TrackedEntityInstance entityInstance, Integer status ) + public List get( TrackedEntityInstance entityInstance, ProgramStatus status ) { return getCriteria( Restrictions.eq( "entityInstance", entityInstance ), Restrictions.eq( "status", status ) ).list(); } @@ -264,7 +253,7 @@ @Override @SuppressWarnings( "unchecked" ) - public List get( TrackedEntityInstance entityInstance, Program program, Integer status ) + public List get( TrackedEntityInstance entityInstance, Program program, ProgramStatus status ) { return getCriteria( Restrictions.eq( "entityInstance", entityInstance ), Restrictions.eq( "program", program ), Restrictions.eq( "status", status ) ).list(); @@ -344,7 +333,7 @@ } @Override - public int countByStatus( Integer status, Program program, Collection orgunitIds, Date startDate, Date endDate ) + public int countByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ) { Number rs = (Number) getCriteria( Restrictions.eq( "program", program ), @@ -360,7 +349,7 @@ @Override @SuppressWarnings( "unchecked" ) - public List getByStatus( Integer status, Program program, Collection orgunitIds, + public List getByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate ) { return getCriteria( @@ -374,7 +363,7 @@ @Override @SuppressWarnings( "unchecked" ) - public List getByStatus( Integer status, Program program, Collection orgunitIds, + public List getByStatus( ProgramStatus status, Program program, Collection orgunitIds, Date startDate, Date endDate, Integer min, Integer max ) { Criteria criteria = getCriteria( @@ -478,8 +467,8 @@ + " ON org.organisationunitid = p.organisationunitid INNER JOIN trackedentityinstancereminder prm " + " ON prm.programid = pi.programid INNER JOIN trackedentityattributevalue pav " + " ON pav.trackedentityinstanceid=p.trackedentityinstanceid INNER JOIN trackedentityattribute pa " - + " ON pa.trackedentityattributeid=pav.trackedentityattributeid " + " WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + + " ON pa.trackedentityattributeid=pav.trackedentityattributeid " + + " WHERE pi.status= '" + ProgramStatus.ACTIVE + "'" + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null and pa.valuetype='phoneNumber' " + " and ( DATE(now()) - DATE(pi." + dateToCompare + ") ) = prm.daysallowedsendmessage " @@ -496,7 +485,7 @@ + " ON p.trackedentityinstanceid=pi.trackedentityinstanceid INNER JOIN program pg " + " ON pg.programid=pi.programid INNER JOIN organisationunit org " + " ON org.organisationunitid = p.organisationunitid INNER JOIN trackedentityinstancereminder prm " - + " ON prm.programid = pi.programid " + " WHERE pi.status = " + ProgramInstance.STATUS_ACTIVE + + " ON prm.programid = pi.programid " + " WHERE pi.status = '" + ProgramStatus.ACTIVE + "'" + " and org.phonenumber is not NULL and org.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " + " and ( DATE(now()) - DATE( pi." @@ -516,8 +505,7 @@ + " ON prm.programid = pi.programid INNER JOIN usermembership ums " + " ON ums.organisationunitid = p.organisationunitid INNER JOIN userinfo uif " + " ON uif.userinfoid = ums.userinfoid " - + "WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + + "WHERE pi.status= '" + ProgramStatus.ACTIVE + "'" + " and uif.phonenumber is not NULL and uif.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " @@ -540,8 +528,9 @@ + " INNER JOIN organisationunit org " + " ON org.organisationunitid = p.organisationunitid " + " INNER JOIN trackedentityinstancereminder prm " + " ON prm.programid = pg.programid " + " INNER JOIN usergroupmembers ugm " + " ON ugm.usergroupid = prm.usergroupid " - + " INNER JOIN userinfo uif " + " ON uif.userinfoid = ugm.userid " + " WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + " and uif.phonenumber is not NULL and uif.phonenumber != '' " + + " INNER JOIN userinfo uif " + " ON uif.userinfoid = ugm.userid " + + " WHERE pi.status= '" + ProgramStatus.ACTIVE + "'" + + " and uif.phonenumber is not NULL and uif.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " + " and ( DATE(now()) - DATE(" + dateToCompare + ") ) = prm.daysallowedsendmessage " + " and prm.whentosend is null " === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2015-06-23 15:59:19 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2015-09-24 08:32:10 +0000 @@ -28,12 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; - import org.hibernate.Criteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; @@ -41,6 +35,7 @@ import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore; +import org.hisp.dhis.commons.util.TextUtils; import org.hisp.dhis.event.EventStatus; import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.period.PeriodType; @@ -50,16 +45,22 @@ import org.hisp.dhis.program.ProgramStage; import org.hisp.dhis.program.ProgramStageInstance; import org.hisp.dhis.program.ProgramStageInstanceStore; +import org.hisp.dhis.program.ProgramStatus; import org.hisp.dhis.program.SchedulingProgramObject; import org.hisp.dhis.system.grid.GridUtils; import org.hisp.dhis.system.grid.ListGrid; -import org.hisp.dhis.commons.util.TextUtils; import org.hisp.dhis.trackedentity.TrackedEntityInstance; import org.hisp.dhis.trackedentity.TrackedEntityInstanceReminder; import org.hisp.dhis.trackedentity.TrackedEntityInstanceReminderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.support.rowset.SqlRowSet; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.List; + /** * @author Abyot Asalefew */ @@ -80,7 +81,7 @@ @Autowired private TrackedEntityInstanceReminderService reminderService; - + // ------------------------------------------------------------------------- // Implemented methods // ------------------------------------------------------------------------- @@ -90,7 +91,7 @@ public ProgramStageInstance get( ProgramInstance programInstance, ProgramStage programStage ) { List list = getCriteria( - Restrictions.eq( "programInstance", programInstance ), + Restrictions.eq( "programInstance", programInstance ), Restrictions.eq( "programStage", programStage ) ). addOrder( Order.asc( "id" ) ).list(); @@ -101,8 +102,8 @@ @SuppressWarnings( "unchecked" ) public List get( Collection programInstances, EventStatus status ) { - return getCriteria( - Restrictions.in( "programInstance", programInstances ), + return getCriteria( + Restrictions.in( "programInstance", programInstances ), Restrictions.eq( "status", status ) ).list(); } @@ -112,13 +113,13 @@ { Criteria criteria = getCriteria(); criteria.createAlias( "programInstance", "programInstance" ); - criteria.add( Restrictions.eq( "programInstance.entityInstance", entityInstance)); - criteria.add( Restrictions.eq( "status", status )); + criteria.add( Restrictions.eq( "programInstance.entityInstance", entityInstance ) ); + criteria.add( Restrictions.eq( "status", status ) ); return criteria.list(); } @Override - public Collection getSendMesssageEvents() + public Collection getSendMessageEvents() { String sql = " ( " + sendMessageToTrackedEntityInstanceSql() + " ) "; @@ -137,7 +138,7 @@ while ( rs.next() ) { String message = rs.getString( "templatemessage" ); - + List attributeUids = reminderService.getAttributeUids( message ); int programstageinstanceid = rs.getInt( "programstageinstanceid" ); SqlRowSet attributeValueRow = jdbcTemplate @@ -154,8 +155,8 @@ String value = attributeValueRow.getString( "value" ); String key = "\\{(" + TrackedEntityInstanceReminder.ATTRIBUTE + ")=(" + uid + ")\\}"; message = message.replaceAll( key, value ); - } - + } + String organisationunitName = rs.getString( "orgunitName" ); String programName = rs.getString( "programName" ); String programStageName = rs.getString( "programStageName" ); @@ -167,7 +168,7 @@ message = message.replace( TrackedEntityInstanceReminder.TEMPLATE_MESSSAGE_DUE_DATE, dueDate ); message = message.replace( TrackedEntityInstanceReminder.TEMPLATE_MESSSAGE_ORGUNIT_NAME, organisationunitName ); message = message.replace( TrackedEntityInstanceReminder.TEMPLATE_MESSSAGE_DAYS_SINCE_DUE_DATE, daysSinceDueDate ); - + SchedulingProgramObject schedulingProgramObject = new SchedulingProgramObject(); schedulingProgramObject.setProgramStageInstanceId( programstageinstanceid ); schedulingProgramObject.setPhoneNumber( rs.getString( "phonenumber" ) ); @@ -231,7 +232,7 @@ + "and pg.programid = " + program.getId() + " " + "group by ou.name, ps.name, psi.completeduser, psi.completeddate, psi.status " + "having psi.completeddate >= '" + startDate + "' AND psi.completeddate <= '" + endDate + "' " - + "and psi.status='" + EventStatus.COMPLETED.name() + "' " + + "and psi.status='" + EventStatus.COMPLETED.name() + "' " + "order by ou.name, ps.name, psi.completeduser"; SqlRowSet rs = jdbcTemplate.queryForRowSet( sql ); @@ -265,12 +266,10 @@ } @Override - public int averageNumberCompleted( Program program, Collection orgunitIds, Date after, Date before, - int status ) + public int averageNumberCompleted( Program program, Collection orgunitIds, Date after, Date before, ProgramStatus status ) { - Collection programInstances = programInstanceService.getProgramInstancesByStatus( - ProgramInstance.STATUS_COMPLETED, program, orgunitIds, after, before ); - + Collection programInstances = programInstanceService.getProgramInstancesByStatus( status, program, orgunitIds, after, before ); + Criteria criteria = getCriteria(); criteria.createAlias( "programInstance", "programInstance" ); criteria.createAlias( "programStage", "programStage" ); @@ -280,14 +279,14 @@ criteria.add( Restrictions.in( "organisationUnit.id", orgunitIds ) ); criteria.add( Restrictions.between( "programInstance.endDate", after, before ) ); criteria.add( Restrictions.eq( "status", EventStatus.COMPLETED ) ); - + if ( programInstances != null && programInstances.size() > 0 ) { criteria.add( Restrictions.not( Restrictions.in( "programInstance", programInstances ) ) ); } - + Number rs = (Number) criteria.setProjection( Projections.rowCount() ).uniqueResult(); - + return rs != null ? rs.intValue() : 0; } @@ -307,11 +306,11 @@ criteria.createAlias( "programInstance.entityInstance", "entityInstance" ); criteria.createAlias( "entityInstance.organisationUnit", "regOrgunit" ); criteria.add( Restrictions.or( Restrictions.and( Restrictions.eq( "status", EventStatus.COMPLETED ), - Restrictions.between( "executionDate", startDate, endDate ), - Restrictions.in( "organisationUnit.id", orgunitIds ) ), Restrictions.and( - Restrictions.eq( "status", EventStatus.ACTIVE ), Restrictions.isNotNull( "executionDate" ), - Restrictions.between( "executionDate", startDate, endDate ), - Restrictions.in( "organisationUnit.id", orgunitIds ) ), + Restrictions.between( "executionDate", startDate, endDate ), + Restrictions.in( "organisationUnit.id", orgunitIds ) ), Restrictions.and( + Restrictions.eq( "status", EventStatus.ACTIVE ), Restrictions.isNotNull( "executionDate" ), + Restrictions.between( "executionDate", startDate, endDate ), + Restrictions.in( "organisationUnit.id", orgunitIds ) ), Restrictions.and( Restrictions.eq( "status", EventStatus.ACTIVE ), Restrictions.isNull( "executionDate" ), Restrictions.between( "dueDate", startDate, endDate ), Restrictions.in( "regOrgunit.id", orgunitIds ) ), Restrictions.and( @@ -342,7 +341,7 @@ } //TODO this must be re-written - + private String sendMessageToTrackedEntityInstanceSql() { return "select psi.programstageinstanceid, pav.value as phonenumber, prm.templatemessage, org.name as orgunitName " @@ -364,7 +363,7 @@ + " INNER JOIN trackedentityattribute pa " + " ON pa.trackedentityattributeid=pav.trackedentityattributeid " + "WHERE pi.status=" - + ProgramInstance.STATUS_ACTIVE + + ProgramStatus.ACTIVE + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " + " and psi.executiondate is null and pa.valuetype='phoneNumber' " @@ -395,8 +394,7 @@ + " ON pa.trackedentityattributeid=pav.trackedentityattributeid " + " INNER JOIN userinfo uif " + " ON pav.value=concat(uif.userinfoid ,'') " - + " WHERE pi.status=" - + ProgramInstance.STATUS_ACTIVE + + " WHERE pi.status='" + ProgramStatus.ACTIVE + "'" + " and pa.valueType='users' and uif.phonenumber is not NULL and uif.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " @@ -424,8 +422,7 @@ + " ON prm.programstageid = ps.programstageid " + " INNER JOIN organisationunit ou " + " ON ou.organisationunitid=p.organisationunitid " - + "WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + + "WHERE pi.status= '" + ProgramStatus.ACTIVE + "'" + " and ou.phonenumber is not NULL and ou.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " @@ -456,8 +453,7 @@ + " ON ums.organisationunitid = p.organisationunitid " + " INNER JOIN userinfo uif " + " ON uif.userinfoid = ums.userinfoid " - + " WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + + " WHERE pi.status= '" + ProgramStatus.ACTIVE + "'" + " and uif.phonenumber is not NULL and uif.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " @@ -488,8 +484,7 @@ + " ON ugm.usergroupid = prm.usergroupid " + " INNER JOIN userinfo uif " + " ON uif.userinfoid = ugm.userid " - + " WHERE pi.status= " - + ProgramInstance.STATUS_ACTIVE + + " WHERE pi.status= '"+ ProgramStatus.ACTIVE + "'" + " and uif.phonenumber is not NULL and uif.phonenumber != '' " + " and prm.templatemessage is not NULL and prm.templatemessage != '' " + " and pg.type=1 and prm.daysallowedsendmessage is not null " === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java 2015-09-17 08:13:56 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java 2015-09-24 08:32:10 +0000 @@ -74,6 +74,7 @@ updateAggregationTypes(); updateFeatureTypes(); updateValidationRuleEnums(); + updateProgramStatus(); executeSql( "ALTER TABLE program ALTER COLUMN \"type\" TYPE varchar(255);" ); executeSql( "update program set \"type\"='WITH_REGISTRATION' where type='1' or type='2'" ); @@ -84,6 +85,15 @@ // Supportive methods // ------------------------------------------------------------------------- + private void updateProgramStatus() + { + executeSql( "alter table programinstance alter column status type varchar(50)" ); + + executeSql( "update programinstance set status='ACTIVE' where status='0'" ); + executeSql( "update programinstance set status='COMPLETED' where status='1'" ); + executeSql( "update programinstance set status='CANCELLED' where status='2'" ); + } + private void updateValidationRuleEnums() { executeSql( "alter table validationrule alter column ruletype type varchar(50)" ); === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2015-09-23 17:18:09 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2015-09-24 08:32:10 +0000 @@ -46,8 +46,6 @@ import org.hisp.dhis.jdbc.StatementBuilder; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.program.Program; -import org.hisp.dhis.program.ProgramInstance; -import org.hisp.dhis.program.ProgramStatus; import org.hisp.dhis.trackedentity.TrackedEntityAttribute; import org.hisp.dhis.trackedentity.TrackedEntityInstance; import org.hisp.dhis.trackedentity.TrackedEntityInstanceQueryParams; @@ -81,15 +79,6 @@ { private static final Log log = LogFactory.getLog( HibernateTrackedEntityInstanceStore.class ); - private static final Map PROGRAM_STATUS_MAP = new HashMap() - { - { - put( ProgramStatus.ACTIVE, ProgramInstance.STATUS_ACTIVE ); - put( ProgramStatus.COMPLETED, ProgramInstance.STATUS_COMPLETED ); - put( ProgramStatus.CANCELLED, ProgramInstance.STATUS_CANCELLED ); - } - }; - // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- @@ -193,7 +182,7 @@ if ( params.hasProgramStatus() ) { - hql += hlp.whereAnd() + "pi.status = " + PROGRAM_STATUS_MAP.get( params.getProgramStatus() ); + hql += hlp.whereAnd() + "pi.status = " + params.getProgramStatus(); } if ( params.hasFollowUp() ) @@ -412,7 +401,7 @@ if ( params.hasProgramStatus() ) { - sql += "and pi.status = " + PROGRAM_STATUS_MAP.get( params.getProgramStatus() ) + " "; + sql += "and pi.status = " + params.getProgramStatus() + " "; } if ( params.hasFollowUp() ) === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramInstance.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramInstance.hbm.xml 2015-09-11 13:17:50 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/program/hibernate/ProgramInstance.hbm.xml 2015-09-24 08:32:10 +0000 @@ -24,7 +24,13 @@ - + + + org.hisp.dhis.program.ProgramStatus + true + 12 + + programInstances = programInstanceService.getProgramInstances( entityInstanceA, programA ); @@ -314,22 +299,20 @@ ProgramInstance programInstance1 = programInstanceService.enrollTrackedEntityInstance( entityInstanceA, programA, enrollmentDate, incidenDate, organisationUnitA ); - programInstance1.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance1.setStatus( ProgramStatus.COMPLETED ); programInstanceService.updateProgramInstance( programInstance1 ); ProgramInstance programInstance2 = programInstanceService.enrollTrackedEntityInstance( entityInstanceA, programA, enrollmentDate, incidenDate, organisationUnitA ); - programInstance2.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance2.setStatus( ProgramStatus.COMPLETED ); programInstanceService.updateProgramInstance( programInstance2 ); - List programInstances = programInstanceService.getProgramInstances( entityInstanceA, programA, - ProgramInstance.STATUS_COMPLETED ); + List programInstances = programInstanceService.getProgramInstances( entityInstanceA, programA, ProgramStatus.COMPLETED ); assertEquals( 2, programInstances.size() ); assertTrue( programInstances.contains( programInstance1 ) ); assertTrue( programInstances.contains( programInstance2 ) ); - programInstances = programInstanceService.getProgramInstances( entityInstanceA, programA, - ProgramInstance.STATUS_ACTIVE ); + programInstances = programInstanceService.getProgramInstances( entityInstanceA, programA, ProgramStatus.ACTIVE ); assertEquals( 1, programInstances.size() ); assertTrue( programInstances.contains( programInstanceA ) ); } @@ -380,7 +363,7 @@ programInstanceService.addProgramInstance( programInstanceD ); List programInstances = programInstanceService.getProgramInstancesByStatus( - ProgramInstance.STATUS_ACTIVE, programA, orgunitIds, incidenDate, enrollmentDate ); + ProgramStatus.ACTIVE, programA, orgunitIds, incidenDate, enrollmentDate ); assertEquals( 2, programInstances.size() ); assertTrue( programInstances.contains( programInstanceA ) ); assertTrue( programInstances.contains( programInstanceD ) ); @@ -393,7 +376,7 @@ programInstanceService.addProgramInstance( programInstanceB ); programInstanceService.addProgramInstance( programInstanceD ); - int count = programInstanceService.countProgramInstancesByStatus( ProgramInstance.STATUS_ACTIVE, programA, + int count = programInstanceService.countProgramInstancesByStatus( ProgramStatus.ACTIVE, programA, orgunitIds, incidenDate, enrollmentDate ); assertEquals( 2, count ); } @@ -426,8 +409,8 @@ programInstanceService.completeProgramInstanceStatus( programInstanceA ); programInstanceService.completeProgramInstanceStatus( programInstanceD ); - assertEquals( ProgramInstance.STATUS_COMPLETED, programInstanceService.getProgramInstance( idA ).getStatus() ); - assertEquals( ProgramInstance.STATUS_COMPLETED, programInstanceService.getProgramInstance( idD ).getStatus() ); + assertEquals( ProgramStatus.COMPLETED, programInstanceService.getProgramInstance( idA ).getStatus() ); + assertEquals( ProgramStatus.COMPLETED, programInstanceService.getProgramInstance( idD ).getStatus() ); } @Test @@ -439,8 +422,7 @@ programInstanceService.cancelProgramInstanceStatus( programInstanceA ); programInstanceService.cancelProgramInstanceStatus( programInstanceD ); - assertEquals( ProgramInstance.STATUS_CANCELLED, programInstanceService.getProgramInstance( idA ).getStatus() ); - assertEquals( ProgramInstance.STATUS_CANCELLED, programInstanceService.getProgramInstance( idD ).getStatus() ); + assertEquals( ProgramStatus.CANCELLED, programInstanceService.getProgramInstance( idA ).getStatus() ); + assertEquals( ProgramStatus.CANCELLED, programInstanceService.getProgramInstance( idD ).getStatus() ); } - } === modified file 'dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/ProgramInstanceStoreTest.java' --- dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/ProgramInstanceStoreTest.java 2015-09-13 21:12:28 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/test/java/org/hisp/dhis/program/ProgramInstanceStoreTest.java 2015-09-24 08:32:10 +0000 @@ -28,16 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import org.hisp.dhis.DhisSpringTest; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.organisationunit.OrganisationUnitService; @@ -48,6 +38,16 @@ import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + /** * @author Chau Thu Tran */ @@ -69,7 +69,7 @@ @Autowired private ProgramStageService programStageService; - private Date incidenDate; + private Date incidentDate; private Date enrollmentDate; @@ -155,24 +155,24 @@ DateTime testDate1 = DateTime.now(); testDate1.withTimeAtStartOfDay(); testDate1 = testDate1.minusDays( 70 ); - incidenDate = testDate1.toDate(); - + incidentDate = testDate1.toDate(); + DateTime testDate2 = DateTime.now(); testDate2.withTimeAtStartOfDay(); enrollmentDate = testDate2.toDate(); - programInstanceA = new ProgramInstance( enrollmentDate, incidenDate, entityInstanceA, programA ); + programInstanceA = new ProgramInstance( enrollmentDate, incidentDate, entityInstanceA, programA ); programInstanceA.setUid( "UID-A" ); - programInstanceB = new ProgramInstance( enrollmentDate, incidenDate, entityInstanceA, programB ); + programInstanceB = new ProgramInstance( enrollmentDate, incidentDate, entityInstanceA, programB ); programInstanceB.setUid( "UID-B" ); - programInstanceB.setStatus( ProgramInstance.STATUS_CANCELLED ); + programInstanceB.setStatus( ProgramStatus.CANCELLED ); - programInstanceC = new ProgramInstance( enrollmentDate, incidenDate, entityInstanceA, programC ); + programInstanceC = new ProgramInstance( enrollmentDate, incidentDate, entityInstanceA, programC ); programInstanceC.setUid( "UID-C" ); - programInstanceC.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstanceC.setStatus( ProgramStatus.COMPLETED ); - programInstanceD = new ProgramInstance( enrollmentDate, incidenDate, entityInstanceB, programA ); + programInstanceD = new ProgramInstance( enrollmentDate, incidentDate, entityInstanceB, programA ); programInstanceD.setUid( "UID-D" ); } @@ -220,12 +220,11 @@ programInstanceStore.save( programInstanceC ); programInstanceStore.save( programInstanceD ); - List programInstances = programInstanceStore.get( entityInstanceA, programC, - ProgramInstance.STATUS_COMPLETED ); + List programInstances = programInstanceStore.get( entityInstanceA, programC, ProgramStatus.COMPLETED ); assertEquals( 1, programInstances.size() ); assertTrue( programInstances.contains( programInstanceC ) ); - programInstances = programInstanceStore.get( entityInstanceA, programA, ProgramInstance.STATUS_ACTIVE ); + programInstances = programInstanceStore.get( entityInstanceA, programA, ProgramStatus.ACTIVE ); assertEquals( 1, programInstances.size() ); assertTrue( programInstances.contains( programInstanceA ) ); } @@ -249,7 +248,7 @@ programInstanceStore.save( programInstanceB ); programInstanceStore.save( programInstanceD ); - List programInstances = programInstanceStore.get( programA, orgunitIds, incidenDate, + List programInstances = programInstanceStore.get( programA, orgunitIds, incidentDate, enrollmentDate, null, null ); assertEquals( 2, programInstances.size() ); assertTrue( programInstances.contains( programInstanceA ) ); @@ -263,7 +262,7 @@ programInstanceStore.save( programInstanceB ); programInstanceStore.save( programInstanceD ); - int count = programInstanceStore.count( programA, orgunitIds, incidenDate, enrollmentDate ); + int count = programInstanceStore.count( programA, orgunitIds, incidentDate, enrollmentDate ); assertEquals( 2, count ); } @@ -274,8 +273,9 @@ programInstanceStore.save( programInstanceB ); programInstanceStore.save( programInstanceD ); - List programInstances = programInstanceStore.getByStatus( ProgramInstance.STATUS_ACTIVE, - programA, orgunitIds, incidenDate, enrollmentDate ); + List programInstances = programInstanceStore.getByStatus( ProgramStatus.ACTIVE, programA, + orgunitIds, incidentDate, enrollmentDate ); + assertEquals( 2, programInstances.size() ); assertTrue( programInstances.contains( programInstanceA ) ); assertTrue( programInstances.contains( programInstanceD ) ); @@ -288,9 +288,7 @@ programInstanceStore.save( programInstanceB ); programInstanceStore.save( programInstanceD ); - int count = programInstanceStore.countByStatus( ProgramInstance.STATUS_ACTIVE, programA, orgunitIds, - incidenDate, enrollmentDate ); + int count = programInstanceStore.countByStatus( ProgramStatus.ACTIVE, programA, orgunitIds, incidentDate, enrollmentDate ); assertEquals( 2, count ); } - } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2015-09-11 15:53:13 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2015-09-24 08:32:10 +0000 @@ -170,7 +170,7 @@ enrollment.setCreated( programInstance.getCreated() ); enrollment.setLastUpdated( programInstance.getLastUpdated() ); enrollment.setProgram( programInstance.getProgram().getUid() ); - enrollment.setStatus( EnrollmentStatus.fromInt( programInstance.getStatus() ) ); + enrollment.setStatus( EnrollmentStatus.fromProgramStatus( programInstance.getStatus() ) ); enrollment.setEnrollmentDate( programInstance.getEnrollmentDate() ); enrollment.setIncidentDate( programInstance.getIncidentDate() ); enrollment.setFollowup( programInstance.getFollowup() ); @@ -376,7 +376,7 @@ programInstance.setEnrollmentDate( enrollment.getEnrollmentDate() ); programInstance.setFollowup( enrollment.getFollowup() ); - if ( programInstance.getStatus() != enrollment.getStatus().getValue() ) + if ( EnrollmentStatus.fromProgramStatus( programInstance.getStatus() ) != enrollment.getStatus() ) { if ( EnrollmentStatus.CANCELLED == enrollment.getStatus() ) { @@ -388,8 +388,7 @@ } else { - importSummary = new ImportSummary( ImportStatus.ERROR, - "Re-enrollment is not allowed, please create a new enrollment." ); + importSummary = new ImportSummary( ImportStatus.ERROR, "Re-enrollment is not allowed, please create a new enrollment." ); importSummary.getImportCount().incrementIgnored(); return importSummary; === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentStatus.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentStatus.java 2015-09-13 21:54:23 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentStatus.java 2015-09-24 08:32:10 +0000 @@ -28,7 +28,11 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.program.ProgramStatus; + /** + * FIXME we should probably remove this, and replace it with program status + * * @author Morten Olav Hansen */ public enum EnrollmentStatus @@ -37,7 +41,7 @@ private final int value; - private EnrollmentStatus( int value ) + EnrollmentStatus( int value ) { this.value = value; } @@ -47,16 +51,18 @@ return value; } - public static EnrollmentStatus fromInt( int status ) + public static EnrollmentStatus fromProgramStatus( ProgramStatus programStatus ) { - for ( EnrollmentStatus enrollmentStatus : EnrollmentStatus.values() ) + switch ( programStatus ) { - if ( enrollmentStatus.getValue() == status ) - { - return enrollmentStatus; - } + case ACTIVE: + return ACTIVE; + case CANCELLED: + return CANCELLED; + case COMPLETED: + return COMPLETED; } - throw new IllegalArgumentException( "Enum value not found: " + status ); + throw new IllegalArgumentException( "Enum value not found: " + programStatus ); } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java 2015-09-13 21:54:23 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java 2015-09-24 08:32:10 +0000 @@ -40,11 +40,14 @@ import org.hisp.dhis.common.IllegalQueryException; import org.hisp.dhis.common.OrganisationUnitSelectionMode; import org.hisp.dhis.common.Pager; +import org.hisp.dhis.commons.collection.CachingMap; +import org.hisp.dhis.commons.util.DebugUtils; import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.dbms.DbmsManager; import org.hisp.dhis.dxf2.common.IdSchemes; import org.hisp.dhis.dxf2.common.ImportOptions; +import org.hisp.dhis.dxf2.events.enrollment.EnrollmentStatus; import org.hisp.dhis.dxf2.events.report.EventRow; import org.hisp.dhis.dxf2.events.report.EventRows; import org.hisp.dhis.dxf2.importsummary.ImportConflict; @@ -78,8 +81,6 @@ import org.hisp.dhis.trackedentitydatavalue.TrackedEntityDataValueService; import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; -import org.hisp.dhis.commons.collection.CachingMap; -import org.hisp.dhis.commons.util.DebugUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -290,7 +291,7 @@ } List programInstances = new ArrayList<>( programInstanceService.getProgramInstances( - entityInstance, program, ProgramInstance.STATUS_ACTIVE ) ); + entityInstance, program, ProgramStatus.ACTIVE ) ); if ( programInstances.isEmpty() ) { @@ -350,7 +351,7 @@ else { List programInstances = new ArrayList<>( programInstanceService.getProgramInstances( - program, ProgramInstance.STATUS_ACTIVE ) ); + program, ProgramStatus.ACTIVE ) ); if ( programInstances.isEmpty() ) { @@ -786,7 +787,7 @@ } event.setFollowup( programStageInstance.getProgramInstance().getFollowup() ); - event.setEnrollmentStatus( EventStatus.fromInt( programStageInstance.getProgramInstance().getStatus() ) ); + event.setEnrollmentStatus( EnrollmentStatus.fromProgramStatus( programStageInstance.getProgramInstance().getStatus() ) ); event.setStatus( programStageInstance.getStatus() ); event.setEventDate( DateUtils.getLongDateString( programStageInstance.getExecutionDate() ) ); event.setDueDate( DateUtils.getLongDateString( programStageInstance.getDueDate() ) ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/Event.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/Event.java 2015-09-03 09:03:51 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/Event.java 2015-09-24 08:32:10 +0000 @@ -34,6 +34,7 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; import org.hisp.dhis.common.BaseLinkableObject; import org.hisp.dhis.common.DxfNamespaces; +import org.hisp.dhis.dxf2.events.enrollment.EnrollmentStatus; import org.hisp.dhis.event.EventStatus; import java.util.ArrayList; @@ -56,7 +57,7 @@ private String enrollment; - private EventStatus enrollmentStatus; + private EnrollmentStatus enrollmentStatus; private String orgUnit; @@ -102,12 +103,12 @@ @JsonProperty( required = true ) @JacksonXmlProperty( isAttribute = true ) - public EventStatus getEnrollmentStatus() + public EnrollmentStatus getEnrollmentStatus() { return enrollmentStatus; } - public void setEnrollmentStatus( EventStatus programStatus ) + public void setEnrollmentStatus( EnrollmentStatus programStatus ) { this.enrollmentStatus = programStatus; } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java 2015-09-13 21:54:23 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java 2015-09-24 08:32:10 +0000 @@ -35,10 +35,12 @@ import org.hisp.dhis.common.ValueType; import org.hisp.dhis.commons.util.SqlHelper; import org.hisp.dhis.dxf2.common.IdSchemes; +import org.hisp.dhis.dxf2.events.enrollment.EnrollmentStatus; import org.hisp.dhis.dxf2.events.report.EventRow; import org.hisp.dhis.dxf2.events.trackedentity.Attribute; import org.hisp.dhis.event.EventStatus; import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.program.ProgramStatus; import org.hisp.dhis.program.ProgramType; import org.hisp.dhis.system.util.DateUtils; import org.hisp.dhis.util.ObjectUtils; @@ -111,7 +113,7 @@ if ( programTye != ProgramType.WITHOUT_REGISTRATION ) { event.setEnrollment( rowSet.getString( "pi_uid" ) ); - event.setEnrollmentStatus( EventStatus.fromInt( rowSet.getInt( "pi_status" ) ) ); + event.setEnrollmentStatus( EnrollmentStatus.fromProgramStatus( ProgramStatus.valueOf( rowSet.getString( "pi_status" ) ) ) ); event.setFollowup( rowSet.getBoolean( "pi_followup" ) ); } @@ -242,7 +244,7 @@ if ( rowSet.getString( "pav_value" ) != null && rowSet.getString( "ta_uid" ) != null ) { String valueType = rowSet.getString( "ta_valuetype" ); - + Attribute attribute = new Attribute(); attribute.setValue( rowSet.getString( "pav_value" ) ); attribute.setDisplayName( rowSet.getString( "ta_name" ) ); @@ -371,7 +373,7 @@ if ( params.getProgramStatus() != null ) { - sql += hlp.whereAnd() + " pi.status = " + params.getProgramStatus().getValue() + " "; + sql += hlp.whereAnd() + " pi.status = '" + params.getProgramStatus() + "' "; } if ( params.getFollowUp() != null ) === modified file 'dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java' --- dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2015-09-21 09:24:27 +0000 +++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java 2015-09-24 08:32:10 +0000 @@ -37,12 +37,12 @@ import org.hisp.dhis.api.mobile.model.DataValue; import org.hisp.dhis.api.mobile.model.Interpretation; import org.hisp.dhis.api.mobile.model.InterpretationComment; -import org.hisp.dhis.api.mobile.model.OptionSet; -import org.hisp.dhis.api.mobile.model.PatientAttribute; import org.hisp.dhis.api.mobile.model.LWUITmodel.LostEvent; import org.hisp.dhis.api.mobile.model.LWUITmodel.Notification; import org.hisp.dhis.api.mobile.model.LWUITmodel.Patient; import org.hisp.dhis.api.mobile.model.LWUITmodel.PatientList; +import org.hisp.dhis.api.mobile.model.OptionSet; +import org.hisp.dhis.api.mobile.model.PatientAttribute; import org.hisp.dhis.api.mobile.model.Task; import org.hisp.dhis.api.mobile.model.comparator.ActivityComparator; import org.hisp.dhis.api.mobile.model.comparator.TrackedEntityAttributeValueSortOrderComparator; @@ -77,6 +77,7 @@ import org.hisp.dhis.program.ProgramStageSection; import org.hisp.dhis.program.ProgramStageSectionService; import org.hisp.dhis.program.ProgramStageService; +import org.hisp.dhis.program.ProgramStatus; import org.hisp.dhis.program.ProgramType; import org.hisp.dhis.program.comparator.ProgramStageInstanceVisitDateComparator; import org.hisp.dhis.relationship.Relationship; @@ -472,7 +473,7 @@ programInstance.setEnrollmentDate( new Date() ); programInstance.setIncidentDate( new Date() ); programInstance.setProgram( programStage.getProgram() ); - programInstance.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance.setStatus( ProgramStatus.COMPLETED ); programInstance.setEntityInstance( patient ); programInstanceService.addProgramInstance( programInstance ); @@ -600,7 +601,7 @@ { ProgramInstance programInstance = programStageInstance.getProgramInstance(); - programInstance.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance.setStatus( ProgramStatus.COMPLETED ); programInstanceService.updateProgramInstance( programInstance ); } @@ -660,7 +661,7 @@ programInstance.setIncidentDate( incidentDate ); programInstance.setProgram( program ); programInstance.setEntityInstance( patient ); - programInstance.setStatus( ProgramInstance.STATUS_ACTIVE ); + programInstance.setStatus( ProgramStatus.ACTIVE ); programInstanceService.addProgramInstance( programInstance ); Iterator programStagesIterator = program.getProgramStages().iterator(); @@ -812,7 +813,7 @@ { org.hisp.dhis.api.mobile.model.PatientAttribute patientAttribute = new org.hisp.dhis.api.mobile.model.PatientAttribute( value.getAttribute().getName(), value.getValue(), null, false, value.getAttribute() - .getDisplayInListNoProgram(), new OptionSet() ); + .getDisplayInListNoProgram(), new OptionSet() ); patientAttribute.setType( value.getAttribute().getValueType() ); patientAtts.add( patientAttribute ); @@ -824,7 +825,7 @@ // Set current programs List listOfProgramInstance = new ArrayList<>( programInstanceService.getProgramInstances( - patient, ProgramInstance.STATUS_ACTIVE ) ); + patient, ProgramStatus.ACTIVE ) ); if ( listOfProgramInstance.size() > 0 ) { @@ -837,7 +838,7 @@ // Set completed programs List listOfCompletedProgramInstance = new ArrayList<>( - programInstanceService.getProgramInstances( patient, ProgramInstance.STATUS_COMPLETED ) ); + programInstanceService.getProgramInstances( patient, ProgramStatus.COMPLETED ) ); if ( listOfCompletedProgramInstance.size() > 0 ) { @@ -912,7 +913,7 @@ mobileProgramInstance.setId( programInstance.getId() ); mobileProgramInstance.setName( programInstance.getProgram().getName() ); - mobileProgramInstance.setStatus( programInstance.getStatus() ); + mobileProgramInstance.setStatus( programInstance.getStatus().getValue() ); mobileProgramInstance.setDateOfEnrollment( PeriodUtil.dateToString( programInstance.getEnrollmentDate() ) ); mobileProgramInstance.setDateOfIncident( PeriodUtil.dateToString( programInstance.getIncidentDate() ) ); mobileProgramInstance.setPatientId( programInstance.getEntityInstance().getId() ); @@ -1300,7 +1301,7 @@ org.hisp.dhis.api.mobile.model.LWUITmodel.ProgramStageDataElement mobileDataElement = new org.hisp.dhis.api.mobile.model.LWUITmodel.ProgramStageDataElement(); mobileDataElement.setId( programStageDataElement.getDataElement().getId() ); mobileDataElement.setName( programStageDataElement.getDataElement().getName() ); - mobileDataElement.setType( programStageDataElement.getDataElement().getValueType() ); + mobileDataElement.setType( programStageDataElement.getDataElement().getValueType() ); // problem mobileDataElement.setCompulsory( programStageDataElement.isCompulsory() ); @@ -1523,7 +1524,7 @@ { errorMsg = "Duplicate value of " + attributeService.getTrackedEntityAttribute( Integer.parseInt( errorCode[1] ) ) - .getDisplayName(); + .getDisplayName(); } else { @@ -2034,7 +2035,7 @@ programInstance.setProgram( program ); - programInstance.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance.setStatus( ProgramStatus.COMPLETED ); programInstanceService.addProgramInstance( programInstance ); @@ -2405,7 +2406,7 @@ throws NotAllowedException { ProgramInstance programInstance = programInstanceService.getProgramInstance( programId ); - programInstance.setStatus( ProgramInstance.STATUS_COMPLETED ); + programInstance.setStatus( ProgramStatus.COMPLETED ); programInstanceService.updateProgramInstance( programInstance ); return PROGRAM_COMPLETED; @@ -2573,7 +2574,7 @@ { errorMsg = "Duplicate value of " + attributeService.getTrackedEntityAttribute( Integer.parseInt( errorCode[1] ) ) - .getDisplayName(); + .getDisplayName(); } else { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java 2015-09-11 11:54:53 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java 2015-09-24 08:32:10 +0000 @@ -34,6 +34,7 @@ import org.hisp.dhis.program.ProgramInstance; import org.hisp.dhis.program.ProgramInstanceService; import org.hisp.dhis.program.ProgramService; +import org.hisp.dhis.program.ProgramStatus; import org.hisp.dhis.query.Order; import org.hisp.dhis.query.Query; import org.hisp.dhis.schema.descriptors.ProgramSchemaDescriptor; @@ -70,7 +71,7 @@ programInstance.setEnrollmentDate( new Date() ); programInstance.setIncidentDate( new Date() ); programInstance.setProgram( program ); - programInstance.setStatus( ProgramInstance.STATUS_ACTIVE ); + programInstance.setStatus( ProgramStatus.ACTIVE ); programInstanceService.addProgramInstance( programInstance ); } === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/program/AddProgramAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/program/AddProgramAction.java 2015-09-23 12:27:33 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-program/src/main/java/org/hisp/dhis/trackedentity/action/program/AddProgramAction.java 2015-09-24 08:32:10 +0000 @@ -29,7 +29,6 @@ */ import com.opensymphony.xwork2.Action; - import org.apache.commons.lang3.StringUtils; import org.hisp.dhis.attribute.AttributeService; import org.hisp.dhis.dataelement.DataElementCategoryService; @@ -39,8 +38,9 @@ import org.hisp.dhis.program.ProgramService; import org.hisp.dhis.program.ProgramStage; import org.hisp.dhis.program.ProgramStageService; +import org.hisp.dhis.program.ProgramStatus; +import org.hisp.dhis.program.ProgramTrackedEntityAttribute; import org.hisp.dhis.program.ProgramType; -import org.hisp.dhis.program.ProgramTrackedEntityAttribute; import org.hisp.dhis.relationship.RelationshipType; import org.hisp.dhis.relationship.RelationshipTypeService; import org.hisp.dhis.system.util.AttributeUtils; @@ -88,7 +88,7 @@ @Autowired private AttributeService attributeService; - + @Autowired private DataElementCategoryService categoryService; @@ -249,7 +249,7 @@ { this.categoryComboId = categoryComboId; } - + // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- @@ -264,7 +264,7 @@ selectEnrollmentDatesInFuture = (selectEnrollmentDatesInFuture == null) ? false : selectEnrollmentDatesInFuture; selectIncidentDatesInFuture = (selectIncidentDatesInFuture == null) ? false : selectIncidentDatesInFuture; dataEntryMethod = (dataEntryMethod == null) ? false : dataEntryMethod; - + Program program = new Program(); program.setName( StringUtils.trimToNull( name ) ); @@ -293,8 +293,8 @@ RelationshipType relationshipType = relationshipTypeService.getRelationshipType( relationshipTypeId ); program.setRelationshipType( relationshipType ); program.setRelationshipFromA( relationshipFromA ); - program.setRelationshipText( relationshipText ); - + program.setRelationshipText( relationshipText ); + Program relatedProgram = programService.getProgram( relatedProgramId ); program.setRelatedProgram( relatedProgram ); } @@ -311,10 +311,10 @@ TrackedEntity trackedEntity = trackedEntityService.getTrackedEntity( trackedEntityId ); program.setTrackedEntity( trackedEntity ); } - + if ( categoryComboId != null ) { - program.setCategoryCombo( categoryService.getDataElementCategoryCombo( categoryComboId ) ); + program.setCategoryCombo( categoryService.getDataElementCategoryCombo( categoryComboId ) ); } programService.addProgram( program ); @@ -370,7 +370,7 @@ programInstance.setEnrollmentDate( new Date() ); programInstance.setIncidentDate( new Date() ); programInstance.setProgram( program ); - programInstance.setStatus( ProgramInstance.STATUS_ACTIVE ); + programInstance.setStatus( ProgramStatus.ACTIVE ); programInstanceService.addProgramInstance( programInstance ); }