View Javadoc

1   package org.kuali.student.r2.common.dto;
2   
3   public class DtoConstants {
4    
5       public final static String STATE_DRAFT = "Draft"; 
6       public final static String STATE_SUBMITTED = "Submitted";
7       public final static String STATE_WITHDRAWN = "Withdrawn";
8       public final static String STATE_APPROVED = "Approved";
9       public final static String STATE_NOT_APPROVED = "NotApproved";
10      public final static String STATE_ACTIVE = "Active";
11      public final static String STATE_SUPERSEDED  = "Superseded";
12      public final static String STATE_SUSPENDED  = "Suspended";
13      public final static String STATE_RETIRED = "Retired";
14  
15     
16      
17  	public static final String DTO_STATE = "DtoState";
18  	public static final String DTO_NEXT_STATE = "DtoNextState";
19  	public static final String DTO_WORKFLOW_NODE = "DtoWorkflowNode";
20  	public static final String WORKFLOW_NODE_PRE_ROUTE = "PreRoute";
21  
22  	//FIXME: Need to split out proposal states (ie. workflow states) versus dto states
23  	public enum DtoState {
24  		DRAFT, SUBMITTED, APPROVED, ACTIVE, SUSPENDED, RETIRED, SUPERSEDED, SAVED, ENROUTE;
25  
26  		public boolean equalsString(String state){
27  			if (state != null){
28  				return this.toString().equals(state.toUpperCase());
29  			}
30  			
31  			return false;
32  		}
33  		
34  		/**
35  	     * This is used to determine the next state.
36  	     * 
37  	     * TODO: Ideally this method should not be hardcoded here.  Also determining next state may
38  	     * be a more complicated and not just be a simple sequence.
39  	     * 
40  	     * @param state
41  	     * @return the next state
42  	     */
43  		public static DtoState getNextState(String state){
44  			// Element States
45  			if (DRAFT.equalsString(state)) {
46  	            return ACTIVE;
47  	        } else if (APPROVED.equalsString(state)) {
48  	        	return ACTIVE;
49  	        } else if (ACTIVE.equalsString(state)) {
50  	        	return SUSPENDED;
51  	        } else if (SUSPENDED.equalsString(state)) {
52  	        	return ACTIVE;
53  	        
54  	        // Proposal States
55  	        } else if (SAVED.equalsString(state)) {
56  	        	return ENROUTE;
57  	        } else if (ENROUTE.equalsString(state)) {
58  	        	return APPROVED;
59  	        }
60  					
61  			
62  			return null;
63  		}
64  		
65  		public static String getNextStateAsString(String state){
66  			DtoState dtoState = getNextState(state);
67  			if (dtoState == null){
68  				return null;
69  			} else {
70  				return dtoState.toString();
71  			}
72  		}
73  	}
74  }