← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 15785: Removed the completed property of ProgramStageInstance; Use EventStatus for the status property o...

 

------------------------------------------------------------
revno: 15785
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2014-06-20 20:32:01 +0800
message:
  Removed the completed property of ProgramStageInstance; Use EventStatus for the status property of ProgramStageInstance object.
removed:
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchTrackedEntityInstanceAction.java
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/event/EventStatus.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstance.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstance.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java
  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/JdbcEventStore.java
  dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/startup/TableAlteror.java
  dhis-2/dhis-services/dhis-service-tracker/src/main/resources/org/hisp/dhis/program/hibernate/ProgramStageInstance.hbm.xml
  dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceServiceTest.java
  dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceStoreTest.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadProgramStageInstancesAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SaveValuesAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UncompleteDataEntryAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UploadAnonymousEventAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SetEventStatusAction.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryenrollment/action/SaveMobileProgramEnrollmentAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/MarkCompleteProgramStageAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/SaveProgramStageFormAction.java
  dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/event/EventStatus.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/event/EventStatus.java	2014-04-23 20:15:31 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/event/EventStatus.java	2014-06-20 12:32:01 +0000
@@ -37,7 +37,7 @@
 @JacksonXmlRootElement( localName = "eventStatus", namespace = DxfNamespaces.DXF_2_0 )
 public enum EventStatus
 {
-    ACTIVE( 0 ), COMPLETED( 1 ), VISITED( 2 ), FUTURE_VISIT( 3 ), LATE_VISIT( 4 ), SKIPPED( 5 );
+    ACTIVE( 0 ), COMPLETED( 1 ), VISITED( 2 ), SCHEDULE( 3 ), OVERDUE( 4 ), SKIPPED( 5 );
 
     private final int value;
 

=== 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	2014-06-17 15:55:23 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstance.java	2014-06-20 12:32:01 +0000
@@ -33,10 +33,12 @@
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+
 import org.hisp.dhis.common.BaseIdentifiableObject;
 import org.hisp.dhis.common.DxfNamespaces;
 import org.hisp.dhis.common.view.DetailedView;
 import org.hisp.dhis.common.view.ExportView;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.message.MessageConversation;
 import org.hisp.dhis.sms.outbound.OutboundSms;
 import org.hisp.dhis.trackedentity.TrackedEntityInstance;
@@ -144,7 +146,7 @@
         {
             if ( programStageInstance.getProgramStage().getOpenAfterEnrollment()
                 && !programStageInstance.isCompleted()
-                && (programStageInstance.getStatus() != null && programStageInstance.getStatus() != ProgramStageInstance.SKIPPED_STATUS) )
+                && (programStageInstance.getStatus() != null && programStageInstance.getStatus() != EventStatus.SKIPPED) )
             {
                 return programStageInstance;
             }
@@ -153,7 +155,7 @@
         for ( ProgramStageInstance programStageInstance : programStageInstances )
         {
             if ( !programStageInstance.isCompleted()
-                && (programStageInstance.getStatus() != null && programStageInstance.getStatus() != ProgramStageInstance.SKIPPED_STATUS) )
+                && (programStageInstance.getStatus() != null && programStageInstance.getStatus() != EventStatus.SKIPPED) )
             {
                 return programStageInstance;
             }

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstance.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstance.java	2014-06-19 12:51:12 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstance.java	2014-06-20 12:32:01 +0000
@@ -29,6 +29,7 @@
  */
 
 import org.hisp.dhis.common.BaseIdentifiableObject;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.message.MessageConversation;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.sms.outbound.OutboundSms;
@@ -45,13 +46,6 @@
 public class ProgramStageInstance
     extends BaseIdentifiableObject
 {
-    public static final int ACTIVE_STATUS = 0;
-    private Integer status = ACTIVE_STATUS;
-    public static final int COMPLETED_STATUS = 1;
-    public static final int VISITED_STATUS = 2;
-    public static final int FUTURE_VISIT_STATUS = 3;
-    public static final int LATE_VISIT_STATUS = 4;
-    public static final int SKIPPED_STATUS = 5;
     /**
      * Determines if a de-serialized file is compatible with this class.
      */
@@ -61,10 +55,10 @@
     private Date dueDate;
     private Date executionDate;
     private OrganisationUnit organisationUnit;
-    private boolean completed;
     private List<OutboundSms> outboundSms = new ArrayList<OutboundSms>();
     private List<MessageConversation> messageConversations = new ArrayList<MessageConversation>();
     private TrackedEntityComment comment;
+    private EventStatus status = EventStatus.ACTIVE;
     private Double longitude;
 
     private Double latitude;
@@ -171,15 +165,7 @@
      */
     public boolean isCompleted()
     {
-        return completed;
-    }
-
-    /**
-     * @param completed the completed to set
-     */
-    public void setCompleted( boolean completed )
-    {
-        this.completed = completed;
+        return ( status == EventStatus.COMPLETED ) ? true : false;
     }
 
     public OrganisationUnit getOrganisationUnit()
@@ -212,12 +198,7 @@
         this.completedDate = completedDate;
     }
 
-    public Integer getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus( Integer status )
+    public void setStatus( EventStatus status )
     {
         this.status = status;
     }
@@ -261,16 +242,16 @@
     {
         this.comment = comment;
     }
-
-    public Integer getEventStatus()
+    
+    public EventStatus getStatus()
     {
-        if ( this.status != 0 )
+        if ( status == EventStatus.COMPLETED )
         {
             return status;
         }
         else if ( this.getExecutionDate() != null )
         {
-            return ProgramStageInstance.VISITED_STATUS;
+            return EventStatus.VISITED;
         }
         else
         {
@@ -286,10 +267,10 @@
 
             if ( dueDateCalendar.getTime().before( new Date() ) )
             {
-                return ProgramStageInstance.LATE_VISIT_STATUS;
+                return EventStatus.OVERDUE;
             }
 
-            return ProgramStageInstance.FUTURE_VISIT_STATUS;
+            return EventStatus.SCHEDULE;
         }
     }
 }

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java	2014-05-23 15:22:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java	2014-06-20 12:32:01 +0000
@@ -28,18 +28,18 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+
 import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
 import org.hisp.dhis.trackedentity.TrackedEntityInstance;
 
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
 /**
  * @author Abyot Asalefew
  * @version $Id$
@@ -100,30 +100,20 @@
      * Retrieve an event list on program instance list with a certain status
      *
      * @param programInstances ProgramInstance list
-     * @param completed        Optional flag to only get completed (<code>true</code> )
-     *                         or uncompleted (<code>false</code>) instances.
+     * @param status        EventStatus
      * @return ProgramStageInstance list
      */
     Collection<ProgramStageInstance> getProgramStageInstances( Collection<ProgramInstance> programInstances,
-        boolean completed );
-
-    /**
-     * Get statuses of events
-     *
-     * @param programStageInstances ProgramStageInstance list
-     * @return Map< ProgramStageInstance ID, status >
-     */
-    Map<Integer, Integer> statusProgramStageInstances( Collection<ProgramStageInstance> programStageInstances );
+        EventStatus status );
 
     /**
      * Get all events by TrackedEntityInstance, optionally filtering by completed.
      *
      * @param entityInstance TrackedEntityInstance
-     * @param completed      - optional flag to only get completed (
-     *                       <code>true</code> ) or uncompleted (<code>false</code>) instances.
+     * @param status      EventStatus
      * @return ProgramStageInstance list
      */
-    List<ProgramStageInstance> getProgramStageInstances( TrackedEntityInstance entityInstance, boolean completed );
+    List<ProgramStageInstance> getProgramStageInstances( TrackedEntityInstance entityInstance, EventStatus status );
 
     /**
      * Retrieve scheduled list of entityInstances registered

=== 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	2014-05-23 15:28:46 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java	2014-06-20 12:32:01 +0000
@@ -30,6 +30,7 @@
 
 import org.hisp.dhis.common.GenericIdentifiableObjectStore;
 import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.trackedentity.TrackedEntityInstance;
 
@@ -60,21 +61,19 @@
      * Retrieve an event list on program instance list with a certain status
      *
      * @param programInstances ProgramInstance list
-     * @param completed        Optional flag to only get completed (<code>true</code> )
-     *                         or uncompleted (<code>false</code>) instances.
+     * @param status EventStatus
      * @return ProgramStageInstance list
      */
-    Collection<ProgramStageInstance> get( Collection<ProgramInstance> programInstances, boolean completed );
+    Collection<ProgramStageInstance> get( Collection<ProgramInstance> programInstances, EventStatus status );
 
     /**
      * Get all events by TrackedEntityInstance, optionally filtering by completed.
      *
      * @param entityInstance TrackedEntityInstance
-     * @param completed      - optional flag to only get completed (
-     *                       <code>true</code> ) or uncompleted (<code>false</code>) instances.
+     * @param status EventStatus
      * @return ProgramStageInstance list
      */
-    List<ProgramStageInstance> get( TrackedEntityInstance entityInstance, boolean completed );
+    List<ProgramStageInstance> get( TrackedEntityInstance entityInstance, EventStatus status );
 
     /**
      * Retrieve scheduled list of entityInstances registered

=== 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	2014-06-16 10:42:58 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/InitTableAlteror.java	2014-06-20 12:32:01 +0000
@@ -42,7 +42,7 @@
     extends AbstractStartupRoutine
 {
     private static final Log log = LogFactory.getLog( InitTableAlteror.class );
-    
+
     @Autowired
     private StatementManager statementManager;
 
@@ -54,10 +54,13 @@
     public void execute()
     {
         // domain type
-        
+
         executeSql( "update dataelement set domaintype='AGGREGATE' where domaintype='aggregate' or domaintype is null;" );
         executeSql( "update dataelement set domaintype='TRACKER' where domaintype='patient';" );
         executeSql( "alter table dataelement alter column domaintype set not null;" );
+        executeSql( "alter table programstageinstance alter column  status  type varchar(25);" );
+        executeSql( "UPDATE programstageinstance SET status='ACTIVE' WHERE status='0';" );
+        executeSql( "UPDATE programstageinstance SET status='COMPLETED' WHERE status='1';" );
     }
 
     // -------------------------------------------------------------------------

=== 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	2014-06-11 15:01:05 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/AbstractEventService.java	2014-06-20 12:32:01 +0000
@@ -204,7 +204,7 @@
             if ( program.isSingleEvent() )
             {
                 List<ProgramStageInstance> programStageInstances = new ArrayList<ProgramStageInstance>(
-                    programStageInstanceService.getProgramStageInstances( programInstances, false ) );
+                    programStageInstanceService.getProgramStageInstances( programInstances, EventStatus.ACTIVE ) );
 
                 if ( programStageInstances.isEmpty() )
                 {
@@ -368,14 +368,13 @@
 
         if ( event.getStatus() == EventStatus.ACTIVE )
         {
-            programStageInstance.setCompleted( false );
-            programStageInstance.setStatus( ProgramStageInstance.ACTIVE_STATUS );
+            programStageInstance.setStatus( EventStatus.ACTIVE );
             programStageInstance.setCompletedDate( null );
             programStageInstance.setCompletedUser( null );
         }
         else if ( event.getStatus() == EventStatus.COMPLETED )
         {
-            programStageInstance.setStatus( ProgramStageInstance.COMPLETED_STATUS );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstance.setCompletedDate( date );
             programStageInstance.setCompletedUser( storedBy );
 
@@ -478,7 +477,7 @@
             event.setTrackedEntityInstance( programStageInstance.getProgramInstance().getEntityInstance().getUid() );
         }
 
-        event.setStatus( EventStatus.fromInt( programStageInstance.getStatus() ) );
+        event.setStatus( programStageInstance.getStatus() );
         event.setEventDate( DateUtils.getLongDateString( programStageInstance.getExecutionDate() ) );
         event.setStoredBy( programStageInstance.getCompletedUser() );
         event.setOrgUnit( programStageInstance.getOrganisationUnit().getUid() );
@@ -648,18 +647,18 @@
     }
 
     private ProgramStageInstance createProgramStageInstance( ProgramStage programStage,
-        ProgramInstance programInstance, OrganisationUnit organisationUnit, Date date, Boolean completed,
+        ProgramInstance programInstance, OrganisationUnit organisationUnit, Date date, int status,
         Coordinate coordinate, String storedBy )
     {
         ProgramStageInstance programStageInstance = new ProgramStageInstance();
-        updateProgramStageInstance( programStage, programInstance, organisationUnit, date, completed, coordinate,
+        updateProgramStageInstance( programStage, programInstance, organisationUnit, date, status, coordinate,
             storedBy, programStageInstance );
 
         return programStageInstance;
     }
 
     private void updateProgramStageInstance( ProgramStage programStage, ProgramInstance programInstance,
-        OrganisationUnit organisationUnit, Date date, Boolean completed, Coordinate coordinate, String storedBy,
+        OrganisationUnit organisationUnit, Date date, int status, Coordinate coordinate, String storedBy,
         ProgramStageInstance programStageInstance )
     {
         programStageInstance.setProgramInstance( programInstance );
@@ -677,7 +676,7 @@
             }
         }
 
-        programStageInstance.setCompleted( completed );
+        programStageInstance.setStatus( EventStatus.fromInt( status ) );
 
         if ( programStageInstance.getId() == 0 )
         {
@@ -686,7 +685,7 @@
 
         if ( programStageInstance.isCompleted() )
         {
-            programStageInstance.setStatus( ProgramStageInstance.COMPLETED_STATUS );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstance.setCompletedDate( new Date() );
             programStageInstance.setCompletedUser( storedBy );
             programStageInstanceService
@@ -720,12 +719,12 @@
             if ( programStageInstance == null )
             {
                 programStageInstance = createProgramStageInstance( programStage, programInstance, organisationUnit,
-                    eventDate, EventStatus.COMPLETED == event.getStatus(), event.getCoordinate(), storedBy );
+                    eventDate, event.getStatus().getValue(), event.getCoordinate(), storedBy );
             }
             else
             {
                 updateProgramStageInstance( programStage, programInstance, organisationUnit, eventDate,
-                    EventStatus.COMPLETED == event.getStatus(), event.getCoordinate(), storedBy, programStageInstance );
+                    event.getStatus().getValue(), event.getCoordinate(), storedBy, programStageInstance );
             }
 
             saveTrackedEntityCommentFromEvent( programInstance, event, storedBy );

=== 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	2014-04-23 20:15:31 +0000
+++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/event/JdbcEventStore.java	2014-06-20 12:32:01 +0000
@@ -114,7 +114,7 @@
 
                 event.setEvent( rowSet.getString( "psi_uid" ) );
                 event.setTrackedEntityInstance( rowSet.getString( "pa_uid" ) );
-                event.setStatus( EventStatus.fromInt( rowSet.getInt( "psi_status" ) ) );
+                event.setStatus( EventStatus.valueOf( rowSet.getString( "psi_status" ) ) );
                 event.setProgram( rowSet.getString( "p_uid" ) );
                 event.setProgramStage( rowSet.getString( "ps_uid" ) );
                 event.setStoredBy( rowSet.getString( "psi_completeduser" ) );
@@ -263,17 +263,17 @@
             
             if ( status == EventStatus.VISITED )
             {
-                sql = "and psi.completed = false and psi.status = 0 ";
+                sql = "and psi.status = " +  + EventStatus.ACTIVE.getValue() + " and psi.executiondate is not null ";
             }
             else if ( status == EventStatus.COMPLETED )
             {
-                sql = "and psi.completed = true and psi.status = 0 ";
+                sql = "and psi.status = " + EventStatus.COMPLETED.getValue();
             }
-            else if ( status == EventStatus.FUTURE_VISIT )
+            else if ( status == EventStatus.SCHEDULE )
             {
                 sql += "and psi.executiondate is null and date(now()) <= date(psi.duedate) and psi.status = 0 ";
             }
-            else  if ( status == EventStatus.LATE_VISIT )
+            else  if ( status == EventStatus.OVERDUE )
             {
                 sql += "and psi.executiondate is null and date(now()) > date(psi.duedate) and psi.status = 0 ";
             }

=== 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	2014-05-28 16:31:17 +0000
+++ dhis-2/dhis-services/dhis-service-mobile/src/main/java/org/hisp/dhis/mobile/service/ActivityReportingServiceImpl.java	2014-06-20 12:32:01 +0000
@@ -279,7 +279,7 @@
             TrackedEntityInstance trackedEntityInstance = entityInstanceService
                 .getTrackedEntityInstance( entityInstance.get( 0 ).toString() );
             for ( ProgramStageInstance programStageInstance : programStageInstanceService.getProgramStageInstances(
-                trackedEntityInstance, false ) )
+                trackedEntityInstance, EventStatus.ACTIVE ) )
             {
                 if ( programStageInstance.getDueDate().getTime() >= lowerBound
                     && programStageInstance.getDueDate().getTime() <= upperBound )
@@ -316,7 +316,7 @@
             TrackedEntityInstance trackedEntityInstance = entityInstanceService
                 .getTrackedEntityInstance( entityInstance.get( 0 ).toString() );
             for ( ProgramStageInstance programStageInstance : programStageInstanceService.getProgramStageInstances(
-                trackedEntityInstance, false ) )
+                trackedEntityInstance, EventStatus.ACTIVE ) )
             {
 
                 items.add( getActivity( programStageInstance, false ) );
@@ -396,7 +396,7 @@
         // Set ProgramStageInstance to completed
         if ( programStageSectionId == 0 )
         {
-            programStageInstance.setCompleted( true );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstanceService.updateProgramStageInstance( programStageInstance );
         }
 
@@ -442,7 +442,7 @@
             programStageInstance.setDueDate( new Date() );
             programStageInstance.setExecutionDate( new Date() );
             programStageInstance.setOrganisationUnit( organisationUnit );
-            programStageInstance.setCompleted( true );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstanceService.addProgramStageInstance( programStageInstance );
 
             // ---------------------------------------------------------------------
@@ -534,7 +534,7 @@
             }
             else
             {
-                programStageInstance.setCompleted( mobileProgramStage.isCompleted() );
+//                programStageInstance.setCompleted( mobileProgramStage.isCompleted() );
                 programStageInstanceService.updateProgramStageInstance( programStageInstance );
 
                 // check if all belonged program stage are completed
@@ -1570,11 +1570,11 @@
 
         if ( searchEventInfosArray[1].equalsIgnoreCase( "Scheduled in future" ) )
         {
-            eventStatus = EventStatus.FUTURE_VISIT;
+            eventStatus = EventStatus.SCHEDULE;
         }
         else if ( searchEventInfosArray[1].equalsIgnoreCase( "Overdue" ) )
         {
-            eventStatus = EventStatus.LATE_VISIT;
+            eventStatus = EventStatus.OVERDUE;
         }
 
         String eventsInfo = "";
@@ -1647,7 +1647,7 @@
             ProgramStageInstance programStageInstance = programStageInstanceService.getProgramStageInstance( lostEvent
                 .getId() );
             programStageInstance.setDueDate( PeriodUtil.stringToDate( lostEvent.getDueDate() ) );
-            programStageInstance.setStatus( lostEvent.getStatus() );
+            programStageInstance.setStatus(EventStatus.fromInt( lostEvent.getStatus() ) );
 
             if ( lostEvent.getComment() != null )
             {
@@ -1777,7 +1777,7 @@
 
         programStageInstance.setExecutionDate( new Date() );
 
-        programStageInstance.setCompleted( true );
+        programStageInstance.setStatus( EventStatus.COMPLETED );
 
         programStageInstance.setOrganisationUnit( organisationUnitService.getOrganisationUnit( orgUnitId ) );
 
@@ -1873,11 +1873,11 @@
 
         if ( status.equals( "Schedule in future" ) )
         {
-            eventStatus = EventStatus.FUTURE_VISIT;
+            eventStatus = EventStatus.SCHEDULE;
         }
         else if ( status.equals( "Overdue" ) )
         {
-            eventStatus = EventStatus.LATE_VISIT;
+            eventStatus = EventStatus.OVERDUE;
         }
         else if ( status.equals( "Incomplete" ) )
         {

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java	2014-06-18 13:30:41 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java	2014-06-20 12:32:01 +0000
@@ -40,6 +40,7 @@
 import org.hisp.dhis.common.Grid;
 import org.hisp.dhis.common.GridHeader;
 import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.i18n.I18nManager;
@@ -529,7 +530,7 @@
 
         for ( ProgramStageInstance stageInstance : stageInstances )
         {
-            if ( (!stageInstance.isCompleted() && stageInstance.getStatus().intValue() != ProgramStageInstance.SKIPPED_STATUS)
+            if ( (!stageInstance.isCompleted() && stageInstance.getStatus()!= EventStatus.SKIPPED )
                 || stageInstance.getProgramStage().getIrregular() )
             {
                 return false;
@@ -607,7 +608,7 @@
                 // ---------------------------------------------------------------------
                 if ( programStageInstance.getDueDate().before( currentDate ) )
                 {
-                    programStageInstance.setStatus( ProgramStageInstance.SKIPPED_STATUS );
+                    programStageInstance.setStatus( EventStatus.SKIPPED );
                     programStageInstanceService.updateProgramStageInstance( programStageInstance );
                 }
 

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java	2014-06-18 13:30:41 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java	2014-06-20 12:32:01 +0000
@@ -32,14 +32,13 @@
 import java.util.Calendar;
 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 java.util.Set;
 
 import org.hisp.dhis.common.Grid;
 import org.hisp.dhis.common.GridHeader;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.message.MessageConversation;
@@ -152,29 +151,16 @@
     }
 
     @Override
-    public Map<Integer, Integer> statusProgramStageInstances( Collection<ProgramStageInstance> programStageInstances )
-    {
-        Map<Integer, Integer> colorMap = new HashMap<Integer, Integer>();
-
-        for ( ProgramStageInstance programStageInstance : programStageInstances )
-        {
-            colorMap.put( programStageInstance.getId(), programStageInstance.getEventStatus() );
-        }
-
-        return colorMap;
-    }
-
-    @Override
     public Collection<ProgramStageInstance> getProgramStageInstances( Collection<ProgramInstance> programInstances,
-        boolean completed )
+        EventStatus status )
     {
-        return programStageInstanceStore.get( programInstances, completed );
+        return programStageInstanceStore.get( programInstances, status );
     }
 
     @Override
-    public List<ProgramStageInstance> getProgramStageInstances( TrackedEntityInstance entityInstance, boolean completed )
+    public List<ProgramStageInstance> getProgramStageInstances( TrackedEntityInstance entityInstance, EventStatus status )
     {
-        return programStageInstanceStore.get( entityInstance, completed );
+        return programStageInstanceStore.get( entityInstance, status );
     }
 
     @Override
@@ -324,13 +310,11 @@
     @Override
     public void completeProgramStageInstance( ProgramStageInstance programStageInstance, I18nFormat format )
     {
-        programStageInstance.setCompleted( true );
-
         Calendar today = Calendar.getInstance();
         PeriodType.clearTimeOfDay( today );
         Date date = today.getTime();
 
-        programStageInstance.setStatus( ProgramStageInstance.COMPLETED_STATUS );
+        programStageInstance.setStatus( EventStatus.COMPLETED );
         programStageInstance.setCompletedDate( date );
         programStageInstance.setCompletedUser( currentUserService.getCurrentUsername() );
 

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java	2014-05-21 08:04:49 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java	2014-06-20 12:32:01 +0000
@@ -41,6 +41,7 @@
 import org.hisp.dhis.common.Grid;
 import org.hisp.dhis.common.GridHeader;
 import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.period.PeriodType;
 import org.hisp.dhis.program.Program;
@@ -93,22 +94,21 @@
 
     @Override
     @SuppressWarnings( "unchecked" )
-    public Collection<ProgramStageInstance> get( Collection<ProgramInstance> programInstances, boolean completed )
+    public Collection<ProgramStageInstance> get( Collection<ProgramInstance> programInstances, EventStatus status )
     {
         return getCriteria( 
             Restrictions.in( "programInstance", programInstances ), 
-            Restrictions.eq( "completed", completed ) ).list();
+            Restrictions.eq( "status", status ) ).list();
     }
 
     @Override
     @SuppressWarnings( "unchecked" )
-    public List<ProgramStageInstance> get( TrackedEntityInstance entityInstance, boolean completed )
+    public List<ProgramStageInstance> get( TrackedEntityInstance entityInstance, EventStatus status )
     {
         Criteria criteria = getCriteria();
         criteria.createAlias( "programInstance", "programInstance" );
         criteria.add( Restrictions.eq( "programInstance.entityInstance", entityInstance));
-        criteria.add(  Restrictions.eq( "completed", completed ));
-        
+        criteria.add(  Restrictions.eq( "status", status ));      
         return criteria.list();
     }
 
@@ -211,9 +211,9 @@
             + "inner join program pg on pg.programid = ps.programid "
             + "where ou.organisationunitid in ( " + TextUtils.getCommaDelimitedString( orgunitIds ) + " ) "
             + "and pg.programid = " + program.getId()
-            + "group by ou.name, ps.name, psi.completeduser, psi.completeddate, psi.completed "
+            + "group by ou.name, ps.name, psi.completeduser, psi.completeddate, psi.status "
             + "having psi.completeddate >= '" + startDate + "' AND psi.completeddate <= '" + endDate + "' "
-            + "and psi.completed=true "
+            + "and psi.status=" + EventStatus.COMPLETED.getValue()
             + "order by ou.name, ps.name, psi.completeduser";
 
         SqlRowSet rs = jdbcTemplate.queryForRowSet( sql );
@@ -250,7 +250,7 @@
         criteria.add( Restrictions.eq( "programInstance.status", status ) );
         criteria.add( Restrictions.in( "organisationUnit.id", orgunitIds ) );
         criteria.add( Restrictions.between( "programInstance.endDate", after, before ) );
-        criteria.add( Restrictions.eq( "completed", true ) );
+        criteria.add( Restrictions.eq( "status", EventStatus.COMPLETED ) );
         
         if ( programInstances != null && programInstances.size() > 0 )
         {
@@ -277,16 +277,16 @@
         {
             criteria.createAlias( "programInstance.entityInstance", "entityInstance" );
             criteria.createAlias( "entityInstance.organisationUnit", "regOrgunit" );
-            criteria.add( Restrictions.or( Restrictions.and( Restrictions.eq( "completed", true ),
+            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( "completed", false ), Restrictions.isNotNull( "executionDate" ),
+                Restrictions.eq( "status", EventStatus.ACTIVE ), Restrictions.isNotNull( "executionDate" ),
                 Restrictions.between( "executionDate", startDate, endDate ),
                 Restrictions.in( "organisationUnit.id", orgunitIds ) ),
-                Restrictions.and( Restrictions.eq( "completed", false ), Restrictions.isNull( "executionDate" ),
+                Restrictions.and( Restrictions.eq( "status", EventStatus.ACTIVE ), Restrictions.isNull( "executionDate" ),
                     Restrictions.between( "dueDate", startDate, endDate ),
                     Restrictions.in( "regOrgunit.id", orgunitIds ) ), Restrictions.and(
-                    Restrictions.eq( "status", ProgramStageInstance.SKIPPED_STATUS ),
+                    Restrictions.eq( "status", EventStatus.SKIPPED ),
                     Restrictions.between( "dueDate", startDate, endDate ),
                     Restrictions.in( "regOrgunit.id", orgunitIds ) ) ) );
         }
@@ -294,7 +294,7 @@
         {
             if ( completed )
             {
-                criteria.add( Restrictions.and( Restrictions.eq( "completed", true ),
+                criteria.add( Restrictions.and( Restrictions.eq( "status", EventStatus.COMPLETED ),
                     Restrictions.between( "executionDate", startDate, endDate ),
                     Restrictions.in( "organisationUnit.id", orgunitIds ) ) );
             }
@@ -302,7 +302,7 @@
             {
                 criteria.createAlias( "programInstance.entityInstance", "entityInstance" );
                 criteria.createAlias( "entityInstance.organisationUnit", "regOrgunit" );
-                criteria.add( Restrictions.and( Restrictions.eq( "completed", false ),
+                criteria.add( Restrictions.and( Restrictions.eq( "status", EventStatus.ACTIVE ),
                     Restrictions.isNotNull( "executionDate" ),
                     Restrictions.between( "executionDate", startDate, endDate ),
                     Restrictions.in( "organisationUnit.id", orgunitIds ) ) );

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java	2014-06-14 17:58:11 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java	2014-06-20 12:32:01 +0000
@@ -29,7 +29,6 @@
  */
 
 import static org.hisp.dhis.common.IdentifiableObjectUtils.getIdentifiers;
-import static org.hisp.dhis.program.ProgramStageInstance.SKIPPED_STATUS;
 import static org.hisp.dhis.system.util.DateUtils.getMediumDateString;
 import static org.hisp.dhis.system.util.TextUtils.getCommaDelimitedString;
 import static org.hisp.dhis.system.util.TextUtils.getTokens;
@@ -366,21 +365,21 @@
         {
             sql = 
                 "and psi.executiondate >= '" + start + "' and psi.executiondate <= '" + end + "' " +
-                "and psi.completed = true ";
+                "and psi.status = " + EventStatus.COMPLETED.getValue() ;
         }
         else if ( params.isEventStatus( EventStatus.VISITED ) )
         {
             sql = 
                 "and psi.executiondate >= '" + start + "' and psi.executiondate <= '" + end + "' " + 
-                "and psi.completed = false ";
+                "and psi.status = " + EventStatus.ACTIVE.getValue() ;
         }
-        else if ( params.isEventStatus( EventStatus.FUTURE_VISIT ) )
+        else if ( params.isEventStatus( EventStatus.SCHEDULE ) )
         {
             sql = 
                 "and psi.executiondate is null and psi.duedate >= '" + start + "' and psi.duedate <= '" + end + "' " +
                 "and psi.status is not null and date(now()) <= date(psi.duedate) ";
         }
-        else if ( params.isEventStatus( EventStatus.LATE_VISIT ) )
+        else if ( params.isEventStatus( EventStatus.OVERDUE ) )
         {
             sql = 
                 "and psi.executiondate is null and psi.duedate >= '" + start + "' and psi.duedate <= '" + end + "' " +
@@ -390,7 +389,7 @@
         {
             sql = 
                 "and psi.duedate >= '" + start + "' and psi.duedate <= '" + end + "' " +
-                "and psi.status = " + SKIPPED_STATUS + " ";
+                "and psi.status = " + EventStatus.SKIPPED.getValue() + " ";
         }
 
         return sql;

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/startup/TableAlteror.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/startup/TableAlteror.java	2014-06-17 12:21:26 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/startup/TableAlteror.java	2014-06-20 12:32:01 +0000
@@ -275,6 +275,9 @@
         updateUidColumn();
         
         executeSql( "UPDATE program_attributes SET allowDateInFuture='false' WHERE allowDateInFuture is null" );
+
+        executeSql( "UPDATE programstageinstance SET status=1 WHERE completed=true" );
+        executeSql( "ALTER TABLE programstageinstance DROP COLUMN completed" );
         
     }
 

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/resources/org/hisp/dhis/program/hibernate/ProgramStageInstance.hbm.xml'
--- dhis-2/dhis-services/dhis-service-tracker/src/main/resources/org/hisp/dhis/program/hibernate/ProgramStageInstance.hbm.xml	2014-04-08 15:44:49 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/main/resources/org/hisp/dhis/program/hibernate/ProgramStageInstance.hbm.xml	2014-06-20 12:32:01 +0000
@@ -26,8 +26,6 @@
 
 		<property name="executionDate" column="executiondate" type="timestamp" />
 
-		<property name="completed" not-null="true" />
-
 		<many-to-one name="organisationUnit"
 			class="org.hisp.dhis.organisationunit.OrganisationUnit" column="organisationunitid"
 			foreign-key="fk_programstageinstance_organisationunitid" />
@@ -46,8 +44,8 @@
 				column="messageconversationid" />
 		</list>
 
-		<property name="status" column="status" />
-
+ 		<property name="status" column="status" type="org.hisp.dhis.program.EventStatusUserType" not-null="true" />
+ 
 		<property name="longitude" />
 
 		<property name="latitude" />

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceServiceTest.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceServiceTest.java	2014-06-19 13:55:32 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceServiceTest.java	2014-06-20 12:32:01 +0000
@@ -36,15 +36,14 @@
 import java.util.Calendar;
 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 java.util.Set;
 
 import org.hisp.dhis.DhisSpringTest;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.mock.MockI18nFormat;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
@@ -382,10 +381,10 @@
     @Test
     public void testGetProgramStageInstancesByInstanceListComplete()
     {
-        programStageInstanceA.setCompleted( true );
-        programStageInstanceB.setCompleted( false );
-        programStageInstanceC.setCompleted( true );
-        programStageInstanceD1.setCompleted( false );
+        programStageInstanceA.setStatus( EventStatus.COMPLETED );
+        programStageInstanceB.setStatus( EventStatus.ACTIVE );
+        programStageInstanceC.setStatus( EventStatus.COMPLETED );
+        programStageInstanceD1.setStatus( EventStatus.ACTIVE );
 
         programStageInstanceService.addProgramStageInstance( programStageInstanceA );
         programStageInstanceService.addProgramStageInstance( programStageInstanceB );
@@ -397,53 +396,24 @@
         programInstances.add( programInstanceB );
 
         Collection<ProgramStageInstance> stageInstances = programStageInstanceService.getProgramStageInstances(
-            programInstances, true );
+            programInstances, EventStatus.COMPLETED );
         assertEquals( 2, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceA ) );
         assertTrue( stageInstances.contains( programStageInstanceC ) );
 
-        stageInstances = programStageInstanceService.getProgramStageInstances( programInstances, false );
+        stageInstances = programStageInstanceService.getProgramStageInstances( programInstances, EventStatus.ACTIVE );
         assertEquals( 2, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceB ) );
         assertTrue( stageInstances.contains( programStageInstanceD1 ) );
     }
 
     @Test
-    public void testStatusProgramStageInstances()
-    {
-        programStageInstanceA.setCompleted( true );
-        programStageInstanceA.setStatus( ProgramStageInstance.COMPLETED_STATUS );
-        programStageInstanceC.setStatus( ProgramStageInstance.SKIPPED_STATUS );
-
-        int idA = programStageInstanceService.addProgramStageInstance( programStageInstanceA );
-        int idB = programStageInstanceService.addProgramStageInstance( programStageInstanceB );
-        int idC = programStageInstanceService.addProgramStageInstance( programStageInstanceC );
-        int idD = programStageInstanceService.addProgramStageInstance( programStageInstanceD1 );
-
-        Collection<ProgramStageInstance> programStageInstances = new HashSet<ProgramStageInstance>();
-        programStageInstances.add( programStageInstanceA );
-        programStageInstances.add( programStageInstanceB );
-        programStageInstances.add( programStageInstanceC );
-        programStageInstances.add( programStageInstanceD1 );
-
-        Map<Integer, Integer> expectedMap = new HashMap<Integer, Integer>();
-        expectedMap.put( idA, ProgramStageInstance.COMPLETED_STATUS );
-        expectedMap.put( idB, ProgramStageInstance.FUTURE_VISIT_STATUS );
-        expectedMap.put( idC, ProgramStageInstance.SKIPPED_STATUS );
-        expectedMap.put( idD, ProgramStageInstance.FUTURE_VISIT_STATUS );
-
-        Map<Integer, Integer> actualMap = programStageInstanceService
-            .statusProgramStageInstances( programStageInstances );
-        assertEquals( expectedMap, actualMap );
-    }
-
-    @Test
     public void testGetProgramStageInstancesByStatus()
     {
-        programStageInstanceA.setCompleted( true );
-        programStageInstanceB.setCompleted( false );
-        programStageInstanceC.setCompleted( true );
-        programStageInstanceD1.setCompleted( true );
+        programStageInstanceA.setStatus( EventStatus.COMPLETED );
+        programStageInstanceB.setStatus( EventStatus.ACTIVE );
+        programStageInstanceC.setStatus( EventStatus.COMPLETED );
+        programStageInstanceD1.setStatus( EventStatus.ACTIVE );
 
         programStageInstanceService.addProgramStageInstance( programStageInstanceA );
         programStageInstanceService.addProgramStageInstance( programStageInstanceB );
@@ -451,11 +421,11 @@
         programStageInstanceService.addProgramStageInstance( programStageInstanceD1 );
 
         List<ProgramStageInstance> stageInstances = programStageInstanceService.getProgramStageInstances( entityInstanceA,
-            true );
+            EventStatus.COMPLETED );
         assertEquals( 1, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceA ) );
 
-        stageInstances = programStageInstanceService.getProgramStageInstances( entityInstanceA, false );
+        stageInstances = programStageInstanceService.getProgramStageInstances( entityInstanceA, EventStatus.ACTIVE );
         assertEquals( 1, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceB ) );
     }
@@ -470,6 +440,7 @@
         int idA = programStageInstanceService.addProgramStageInstance( programStageInstanceA );
 
         programStageInstanceService.completeProgramStageInstance( programStageInstanceA, mockFormat );
+        
         assertEquals( true, programStageInstanceService.getProgramStageInstance( idA ).isCompleted() );
     }
 

=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceStoreTest.java'
--- dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceStoreTest.java	2014-05-16 15:26:10 +0000
+++ dhis-2/dhis-services/dhis-service-tracker/src/test/java/org/hisp/dhis/program/ProgramStageInstanceStoreTest.java	2014-06-20 12:32:01 +0000
@@ -35,12 +35,12 @@
 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.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 import org.hisp.dhis.period.PeriodType;
@@ -281,10 +281,10 @@
     @Test
     public void testGetProgramStageInstancesByInstanceListComplete()
     {
-        programStageInstanceA.setCompleted( true );
-        programStageInstanceB.setCompleted( false );
-        programStageInstanceC.setCompleted( true );
-        programStageInstanceD1.setCompleted( false );
+        programStageInstanceA.setStatus( EventStatus.COMPLETED );
+        programStageInstanceB.setStatus( EventStatus.ACTIVE );
+        programStageInstanceC.setStatus( EventStatus.COMPLETED );
+        programStageInstanceD1.setStatus( EventStatus.ACTIVE );
 
         programStageInstanceStore.save( programStageInstanceA );
         programStageInstanceStore.save( programStageInstanceB );
@@ -295,38 +295,16 @@
         programInstances.add( programInstanceA );
         programInstances.add( programInstanceB );
 
-        Collection<ProgramStageInstance> stageInstances = programStageInstanceStore.get( programInstances, true );
+        Collection<ProgramStageInstance> stageInstances = programStageInstanceStore.get( programInstances, EventStatus.COMPLETED );
         assertEquals( 2, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceA ) );
         assertTrue( stageInstances.contains( programStageInstanceC ) );
 
-        stageInstances = programStageInstanceStore.get( programInstances, false );
+        stageInstances = programStageInstanceStore.get( programInstances, EventStatus.ACTIVE );
         assertEquals( 2, stageInstances.size() );
         assertTrue( stageInstances.contains( programStageInstanceB ) );
         assertTrue( stageInstances.contains( programStageInstanceD1 ) );
     }
-
-    @Test
-    public void testGetProgramStageInstancesByEntityInstanceStatus()
-    {
-        programStageInstanceA.setCompleted( true );
-        programStageInstanceB.setCompleted( false );
-        programStageInstanceC.setCompleted( true );
-        programStageInstanceD1.setCompleted( true );
-
-        programStageInstanceStore.save( programStageInstanceA );
-        programStageInstanceStore.save( programStageInstanceB );
-        programStageInstanceStore.save( programStageInstanceC );
-        programStageInstanceStore.save( programStageInstanceD1 );
-
-        List<ProgramStageInstance> stageInstances = programStageInstanceStore.get( entityInstanceA, true );
-        assertEquals( 1, stageInstances.size() );
-        assertTrue( stageInstances.contains( programStageInstanceA ) );
-
-        stageInstances = programStageInstanceStore.get( entityInstanceA, false );
-        assertEquals( 1, stageInstances.size() );
-        assertTrue( stageInstances.contains( programStageInstanceB ) );
-    }
     
     @Test
     public void testGetOverDueEventCount()

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java	2014-06-18 13:30:41 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java	2014-06-20 12:32:01 +0000
@@ -30,7 +30,6 @@
 
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.program.ProgramInstance;
-import org.hisp.dhis.program.ProgramInstanceService;
 import org.hisp.dhis.program.ProgramStageInstance;
 import org.hisp.dhis.program.ProgramStageInstanceService;
 

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadProgramStageInstancesAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadProgramStageInstancesAction.java	2014-04-21 16:30:29 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/LoadProgramStageInstancesAction.java	2014-06-20 12:32:01 +0000
@@ -75,13 +75,6 @@
         this.programInstanceService = programInstanceService;
     }
 
-    private ProgramStageInstanceService programStageInstanceService;
-
-    public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService )
-    {
-        this.programStageInstanceService = programStageInstanceService;
-    }
-
     // -------------------------------------------------------------------------
     // Input && Output
     // -------------------------------------------------------------------------
@@ -135,40 +128,26 @@
     public String execute()
         throws Exception
     {
-        TrackedEntityInstance entityInstance = entityInstanceService.getTrackedEntityInstance( entityInstanceId );
+//        TrackedEntityInstance entityInstance = entityInstanceService.getTrackedEntityInstance( entityInstanceId );
 
         program = programService.getProgram( programId );
-
-        List<ProgramInstance> programInstances = new ArrayList<ProgramInstance>();
-
-        if ( program.getType() == Program.MULTIPLE_EVENTS_WITH_REGISTRATION )
-        {
-            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( entityInstance,
-                program, ProgramInstance.STATUS_ACTIVE ) );
-        }
-        else if ( program.getType() == Program.SINGLE_EVENT_WITH_REGISTRATION )
-        {
-            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( entityInstance,
-                program ) );
-        }
-        else
-        {
-            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( program ) );
-        }
-
-        if ( !programInstances.isEmpty() )
-        {
-            programInstance = programInstances.iterator().next();
-
-            if ( programInstance.getProgramStageInstances() != null )
-            {
-                if ( program.isRegistration() )
-                {
-                    statusMap = programStageInstanceService.statusProgramStageInstances( programInstance
-                        .getProgramStageInstances() );
-                }
-            }
-        }
+//
+//        List<ProgramInstance> programInstances = new ArrayList<ProgramInstance>();
+//
+//        if ( program.getType() == Program.MULTIPLE_EVENTS_WITH_REGISTRATION )
+//        {
+//            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( entityInstance,
+//                program, ProgramInstance.STATUS_ACTIVE ) );
+//        }
+//        else if ( program.getType() == Program.SINGLE_EVENT_WITH_REGISTRATION )
+//        {
+//            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( entityInstance,
+//                program ) );
+//        }
+//        else
+//        {
+//            programInstances = new ArrayList<ProgramInstance>( programInstanceService.getProgramInstances( program ) );
+//        }
 
         return SUCCESS;
     }

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SaveValuesAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SaveValuesAction.java	2014-04-06 15:48:31 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SaveValuesAction.java	2014-06-20 12:32:01 +0000
@@ -36,6 +36,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.struts2.ServletActionContext;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager;
 import org.hisp.dhis.program.Program;
 import org.hisp.dhis.program.ProgramInstance;
@@ -177,7 +178,7 @@
         programStageInstance.setDueDate( currentDate );
         programStageInstance.setExecutionDate( currentDate );
         programStageInstance.setOrganisationUnit( selectionManager.getSelectedOrganisationUnit() );
-        programStageInstance.setCompleted( true );
+        programStageInstance.setStatus( EventStatus.COMPLETED );
 
         programStageInstanceService.addProgramStageInstance( programStageInstance );
 

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UncompleteDataEntryAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UncompleteDataEntryAction.java	2014-06-19 12:51:12 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UncompleteDataEntryAction.java	2014-06-20 12:32:01 +0000
@@ -28,6 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.program.ProgramInstance;
 import org.hisp.dhis.program.ProgramInstanceService;
 import org.hisp.dhis.program.ProgramStageInstance;
@@ -87,8 +88,7 @@
             return SUCCESS;
         }
 
-        programStageInstance.setCompleted( false );
-        programStageInstance.setStatus( ProgramStageInstance.ACTIVE_STATUS );
+        programStageInstance.setStatus( EventStatus.ACTIVE );
 
         programStageInstanceService.updateProgramStageInstance( programStageInstance );
         

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UploadAnonymousEventAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UploadAnonymousEventAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/UploadAnonymousEventAction.java	2014-06-20 12:32:01 +0000
@@ -35,6 +35,7 @@
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
 import org.hisp.dhis.dxf2.utils.JacksonUtils;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
@@ -125,15 +126,15 @@
 
         Date date = format.parseDate( (String) executionDate.get( "executionDate" ) );
 
-        Boolean completed = null;
+        Integer status = null;
 
         try
         {
-            String completeString = (String) executionDate.get( "completed" );
+            String statusString = (String) executionDate.get( "status" );
 
-            if ( completeString != null )
+            if ( statusString != null )
             {
-                completed = Boolean.parseBoolean( completeString );
+                status = Integer.parseInt( statusString );
             }
         }
         catch ( ClassCastException ignored )
@@ -174,7 +175,7 @@
         if ( programStageInstanceId != null )
         {
             programStageInstance = programStageInstanceService.getProgramStageInstance( programStageInstanceId );
-            updateExecutionDate( programStageInstance, date, completed, longitude, latitude );
+            updateExecutionDate( programStageInstance, date, status, longitude, latitude );
         }
         else
         {
@@ -210,7 +211,7 @@
                 return INPUT;
             }
 
-            programStageInstance = saveExecutionDate( programId, organisationUnitId, date, completed, longitude, latitude );
+            programStageInstance = saveExecutionDate( programId, organisationUnitId, date, status, longitude, latitude );
         }
 
         Map<String, Object> values = (Map<String, Object>) input.get( "values" );
@@ -232,7 +233,7 @@
         return SUCCESS;
     }
 
-    private void updateExecutionDate( ProgramStageInstance programStageInstance, Date date, Boolean completed,
+    private void updateExecutionDate( ProgramStageInstance programStageInstance, Date date, Integer status,
         Double longitude, Double latitude )
     {
         if ( date != null )
@@ -241,9 +242,9 @@
             programStageInstance.setExecutionDate( date );
         }
 
-        if ( completed != null )
+        if ( status != null )
         {
-            programStageInstance.setCompleted( completed );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstance.setCompletedDate( new Date() );
             programStageInstance.setCompletedUser( currentUserService.getCurrentUsername() );
         }
@@ -263,7 +264,7 @@
     }
 
     private ProgramStageInstance saveExecutionDate( Integer programId, Integer organisationUnitId, Date date,
-        Boolean completed, Double longitude, Double latitude )
+        Integer status, Double longitude, Double latitude )
     {
         OrganisationUnit organisationUnit = organisationUnitService.getOrganisationUnit( organisationUnitId );
         Program program = programService.getProgram( programId );
@@ -277,11 +278,14 @@
         programStageInstance.setExecutionDate( date );
         programStageInstance.setOrganisationUnit( organisationUnit );
 
-        if ( completed != null )
+        if ( status != null )
         {
-            programStageInstance.setCompleted( completed );
-            programStageInstance.setCompletedDate( new Date() );
-            programStageInstance.setCompletedUser( currentUserService.getCurrentUsername() );
+            programStageInstance.setStatus( EventStatus.fromInt( status ) );
+            if( programStageInstance.isCompleted() )
+            {
+                programStageInstance.setCompletedDate( new Date() );
+                programStageInstance.setCompletedUser( currentUserService.getCurrentUsername() );
+            }
         }
 
         if ( programStage.getCaptureCoordinates() )

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SetEventStatusAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SetEventStatusAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/reminder/SetEventStatusAction.java	2014-06-20 12:32:01 +0000
@@ -28,6 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.program.ProgramStageInstance;
 import org.hisp.dhis.program.ProgramStageInstanceService;
@@ -71,9 +72,9 @@
         this.programStageInstanceId = programStageInstanceId;
     }
 
-    private Integer status;
+    private int status;
 
-    public void setStatus( Integer status )
+    public void setStatus( int status )
     {
         this.status = status;
     }
@@ -89,32 +90,21 @@
         ProgramStageInstance programStageInstance = programStageInstanceService
             .getProgramStageInstance( programStageInstanceId );
 
-        switch ( status.intValue() )
+        EventStatus eventStatus = EventStatus.fromInt( status );
+        if ( eventStatus == EventStatus.COMPLETED )
         {
-        case ProgramStageInstance.COMPLETED_STATUS:
             programStageInstanceService.completeProgramStageInstance( programStageInstance, format );
-            break;
-        case ProgramStageInstance.VISITED_STATUS:
-            programStageInstance.setCompleted( false );
-            programStageInstance.setStatus( ProgramStageInstance.ACTIVE_STATUS );
-            programStageInstanceService.updateProgramStageInstance( programStageInstance );
-            break;
-        case ProgramStageInstance.LATE_VISIT_STATUS:
-            programStageInstance.setCompleted( false );
-            programStageInstance.setStatus(  ProgramStageInstance.ACTIVE_STATUS );
-            programStageInstanceService.updateProgramStageInstance( programStageInstance );
-            break;
-        case ProgramStageInstance.FUTURE_VISIT_STATUS:
-            programStageInstance.setCompleted( false );
-            programStageInstance.setStatus(  ProgramStageInstance.ACTIVE_STATUS );
-            programStageInstanceService.updateProgramStageInstance( programStageInstance );
-            break;
-        case ProgramStageInstance.SKIPPED_STATUS:
-            programStageInstance.setStatus( status );
-            programStageInstanceService.updateProgramStageInstance( programStageInstance );
-            break;
-        default:
-            break;
+        }
+        else if ( eventStatus == EventStatus.SKIPPED )
+        {
+            programStageInstance.setStatus( eventStatus );
+            programStageInstanceService.updateProgramStageInstance( programStageInstance );
+
+        }
+        else
+        {
+            programStageInstance.setStatus( EventStatus.ACTIVE );
+            programStageInstanceService.updateProgramStageInstance( programStageInstance );
         }
 
         return SUCCESS;

=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchTrackedEntityInstanceAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchTrackedEntityInstanceAction.java	2014-06-12 16:30:25 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/trackedentity/SearchTrackedEntityInstanceAction.java	1970-01-01 00:00:00 +0000
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2004-2013, 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.caseentry.action.trackedentity;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.hisp.dhis.organisationunit.OrganisationUnit;
-import org.hisp.dhis.organisationunit.OrganisationUnitService;
-import org.hisp.dhis.paging.ActionPagingSupport;
-import org.hisp.dhis.program.Program;
-import org.hisp.dhis.program.ProgramService;
-import org.hisp.dhis.trackedentity.TrackedEntityAttribute;
-import org.hisp.dhis.trackedentity.TrackedEntityAttributeService;
-import org.hisp.dhis.trackedentity.TrackedEntityInstance;
-import org.hisp.dhis.trackedentity.TrackedEntityInstanceService;
-import org.hisp.dhis.trackedentity.comparator.TrackedEntityAttributeSortOrderInListNoProgramComparator;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * @author Chau Thu Tran
- * 
- * @version $ SearchTrackedEntityInstanceAction.java Jun 11, 2014 4:28:11 PM $
- */
-public class SearchTrackedEntityInstanceAction
-    extends ActionPagingSupport<TrackedEntityInstance>
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    @Autowired
-    private OrganisationUnitService orgunitService;
-
-    @Autowired
-    private ProgramService programService;
-
-    @Autowired
-    private TrackedEntityAttributeService attributeService;
-
-    @Autowired
-    private TrackedEntityInstanceService entityInstanceService;
-
-    // -------------------------------------------------------------------------
-    // Input/Output
-    // -------------------------------------------------------------------------
-
-    private String orgunitId;
-
-    public void setOrgunitId( String orgunitId )
-    {
-        this.orgunitId = orgunitId;
-    }
-
-    private String attributeValue;
-
-    public void setAttributeValue( String attributeValue )
-    {
-        this.attributeValue = attributeValue;
-    }
-
-    private String programId;
-
-    public void setProgramId( String programId )
-    {
-        this.programId = programId;
-    }
-
-    private List<TrackedEntityInstance> entityInstances;
-
-    public List<TrackedEntityInstance> getEntityInstances()
-    {
-        return entityInstances;
-    }
-
-    private Program program;
-
-    public Program getProgram()
-    {
-        return program;
-    }
-
-    private List<TrackedEntityAttribute> attributes;
-
-    public List<TrackedEntityAttribute> getAttributes()
-    {
-        return attributes;
-    }
-
-    private int total;
-
-    public int getTotal()
-    {
-        return total;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action implementation
-    // -------------------------------------------------------------------------
-
-    public String execute()
-        throws Exception
-    {
-        OrganisationUnit orgunit = orgunitService.getOrganisationUnit( orgunitId );
-
-        if ( !programId.isEmpty() )
-        {
-            program = programService.getProgram( programId );
-        }
-        else
-        {
-            attributes = new ArrayList<TrackedEntityAttribute>(
-                attributeService.getTrackedEntityAttributesDisplayInList() );
-            Collections.sort( attributes, new TrackedEntityAttributeSortOrderInListNoProgramComparator() );
-        }
-
-        /* TODO use the TEI query interface
-        total = entityInstanceService.countTrackedEntityByAttribute( orgunit, attributeValue, program );
-        this.paging = createPaging( total );
-
-        entityInstances = new ArrayList<TrackedEntityInstance>( entityInstanceService.searchTrackedEntityByAttribute(
-            orgunit, attributeValue, program, paging.getStartPos(), paging.getPageSize() ) );
-            */
-
-        return SUCCESS;
-    }
-}

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml	2014-06-18 13:30:41 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml	2014-06-20 12:32:01 +0000
@@ -55,8 +55,6 @@
 		<property name="entityInstanceService" ref="org.hisp.dhis.trackedentity.TrackedEntityInstanceService" />
 		<property name="programService" ref="org.hisp.dhis.program.ProgramService" />
 		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
-		<property name="programStageInstanceService"
-			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
 	</bean>
 
 	<bean id="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction"

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/anonymous/action/SaveAnonymousProgramAction.java	2014-06-20 12:32:01 +0000
@@ -40,6 +40,7 @@
 import org.apache.struts2.StrutsStatics;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.light.utils.NamebasedUtils;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 import org.hisp.dhis.program.Program;
@@ -327,7 +328,7 @@
 
         programStageInstance.setExecutionDate( new Date() );
 
-        programStageInstance.setCompleted( true );
+        programStageInstance.setStatus( EventStatus.COMPLETED );
         
         programStageInstance.setOrganisationUnit( orgUnitService.getOrganisationUnit( orgUnitId ) );
         

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryenrollment/action/SaveMobileProgramEnrollmentAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryenrollment/action/SaveMobileProgramEnrollmentAction.java	2014-04-15 03:48:38 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/beneficiaryenrollment/action/SaveMobileProgramEnrollmentAction.java	2014-06-20 12:32:01 +0000
@@ -38,6 +38,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.struts2.StrutsStatics;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.light.utils.FormUtils;
 import org.hisp.dhis.light.utils.ValueUtils;
 import org.hisp.dhis.program.Program;
@@ -378,7 +379,7 @@
             for ( ProgramStageInstance programStageInstance : programInstance.getProgramStageInstances() )
             {
                 if ( !programStageInstance.isCompleted()
-                    || programStageInstance.getStatus() != ProgramStageInstance.SKIPPED_STATUS )
+                    || programStageInstance.getStatus() != EventStatus.SKIPPED )
                 {
                     Date dueDate = DateUtils.getDateAfterAddition( sdf.parseDateTime( incidentDate ).toDate(),
                         programStageInstance.getProgramStage().getMinDaysFromStart() );

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/MarkCompleteProgramStageAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/MarkCompleteProgramStageAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/MarkCompleteProgramStageAction.java	2014-06-20 12:32:01 +0000
@@ -28,6 +28,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.program.ProgramStageInstance;
 import org.hisp.dhis.program.ProgramStageInstanceService;
 
@@ -79,7 +80,7 @@
         throws Exception
     {
         ProgramStageInstance programStageInstance = programStageInstanceService.getProgramStageInstance( programStageInstanceId );
-        programStageInstance.setCompleted( true );
+        programStageInstance.setStatus( EventStatus.COMPLETED );
         programStageInstanceService.updateProgramStageInstance( programStageInstance );
         return SUCCESS;
     }

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/SaveProgramStageFormAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/SaveProgramStageFormAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/namebaseddataentry/action/SaveProgramStageFormAction.java	2014-06-20 12:32:01 +0000
@@ -39,6 +39,7 @@
 
 import org.apache.struts2.StrutsStatics;
 import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.light.utils.NamebasedUtils;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
@@ -538,11 +539,11 @@
 
         if ( programStageSectionId != null && programStageSectionId != 0 )
         {
-            programStageInstance.setCompleted( false );
+            programStageInstance.setStatus( EventStatus.ACTIVE );
         }
         else
         {
-            programStageInstance.setCompleted( true );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstance.setOrganisationUnit( organisationUnit );
         }
         programStageInstance.setExecutionDate( new Date() );

=== modified file 'dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java'
--- dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java	2014-03-18 08:10:10 +0000
+++ dhis-2/dhis-web/dhis-web-light/src/main/java/org/hisp/dhis/light/singleevent/action/SaveSingleEventAction.java	2014-06-20 12:32:01 +0000
@@ -41,6 +41,7 @@
 import org.apache.struts2.StrutsStatics;
 import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.event.EventStatus;
 import org.hisp.dhis.light.utils.NamebasedUtils;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
@@ -457,7 +458,7 @@
                     }
                 }
             }
-            programStageInstance.setCompleted( true );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstanceService.updateProgramStageInstance( programStageInstance );
 
             programInstance.setStatus( ProgramInstance.STATUS_COMPLETED );
@@ -479,7 +480,7 @@
             programStageInstance.setProgramStage( programStage );
             programStageInstance.setDueDate( new Date() );
             programStageInstance.setExecutionDate( new Date() );
-            programStageInstance.setCompleted( true );
+            programStageInstance.setStatus( EventStatus.COMPLETED );
             programStageInstanceService.addProgramStageInstance( programStageInstance );
 
             for ( ProgramStageDataElement programStageDataElement : programStageDataElements )