001 package org.kuali.student.common.dto;
002
003 public class DtoConstants {
004
005 public final static String STATE_DRAFT = "Draft";
006 public final static String STATE_SUBMITTED = "Submitted";
007 public final static String STATE_WITHDRAWN = "Withdrawn";
008 public final static String STATE_APPROVED = "Approved";
009 public final static String STATE_NOT_APPROVED = "Not Approved";
010 public final static String STATE_ACTIVE = "Active";
011 public final static String STATE_INACTIVE = "Inactive";
012 public final static String STATE_SUPERSEDED = "Superseded";
013 public final static String STATE_SUSPENDED = "Suspended";
014 public final static String STATE_RETIRED = "Retired";
015
016
017 public static final String DTO_STATE = "DtoState";
018 public static final String DTO_NEXT_STATE = "DtoNextState";
019
020 //FIXME: Need to split out proposal states (ie. workflow states) versus dto states
021 public enum DtoState {
022 DRAFT, SUBMITTED, APPROVED, ACTIVE, INACTIVE, RETIRED, SUPERSEDED, SAVED, ENROUTE;
023
024 public boolean equalsString(String state){
025 if (state != null){
026 return this.toString().equals(state.toUpperCase());
027 }
028
029 return false;
030 }
031
032 /**
033 * This is used to determine the next state.
034 *
035 * TODO: Ideally this method should not be hardcoded here. Also determining next state may
036 * be a more complicated and not just be a simple sequence.
037 *
038 * @param state
039 * @return the next state
040 */
041 public static DtoState getNextState(String state){
042 // Element States
043 if (DRAFT.equalsString(state)) {
044 return SUBMITTED;
045 } else if (SUBMITTED.equalsString(state)) {
046 return APPROVED;
047 } else if (APPROVED.equalsString(state)) {
048 return ACTIVE;
049 } else if (ACTIVE.equalsString(state)) {
050 return INACTIVE;
051 } else if (INACTIVE.equalsString(state)) {
052 return RETIRED;
053
054 // Proposal States
055 } else if (SAVED.equalsString(state)) {
056 return ENROUTE;
057 } else if (ENROUTE.equalsString(state)) {
058 return APPROVED;
059 }
060
061
062 return null;
063 }
064
065 public static String getNextStateAsString(String state){
066 DtoState dtoState = getNextState(state);
067 if (dtoState == null){
068 return null;
069 } else {
070 return dtoState.toString();
071 }
072 }
073 }
074 }