001    /*
002     * Copyright 2007-2008 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.kew.edl;
017    
018    
019    /**
020     * Represents a User Action in eDoc Lite.  Also contains methods
021     * for classifying the user action.
022     * 
023     * @author Kuali Rice Team (rice.collab@kuali.org)
024     */
025    public class UserAction {
026    
027        public static final String ACTION_CREATE = "initiate";
028        public static final String ACTION_LOAD = "load";
029        public static final String ACTION_UNDEFINED = "undefined";
030        public static final String ACTION_ROUTE = "route";
031        public static final String ACTION_APPROVE = "approve";
032        public static final String ACTION_DISAPPROVE = "disapprove";
033        public static final String ACTION_CANCEL = "cancel";
034        public static final String ACTION_BLANKETAPPROVE = "blanketApprove";
035        public static final String ACTION_FYI = "fyi";
036        public static final String ACTION_ACKNOWLEDGE = "acknowledge";
037        public static final String ACTION_SAVE = "save";
038        public static final String ACTION_COMPLETE = "complete";
039        public static final String ACTION_DELETE = "delete";
040        public static final String ACTION_RETURN_TO_PREVIOUS = "returnToPrevious";
041        public static final String ACTION_REFRESH_FROM_LOOKUP = "refresh";
042        
043        public static final String ACTION_CREATE_LABEL = "initiate";
044        public static final String ACTION_LOAD_LABEL = "load";
045        public static final String ACTION_ROUTE_LABEL = "submit";
046        public static final String ACTION_APPROVE_LABEL = "approve";
047        public static final String ACTION_DISAPPROVE_LABEL = "disapprove";
048        public static final String ACTION_CANCEL_LABEL = "cancel";
049        public static final String ACTION_BLANKETAPPROVE_LABEL = "blanket approve";
050        public static final String ACTION_FYI_LABEL = "fyi";
051        public static final String ACTION_ACKNOWLEDGE_LABEL = "acknowledge";
052        public static final String ACTION_SAVE_LABEL = "save";
053        public static final String ACTION_COMPLETE_LABEL = "complete";
054        public static final String ACTION_DELETE_LABEL = "delete";
055        public static final String ACTION_RETURN_TO_PREVIOUS_LABEL = "return to previous";
056        public static final String ACTION_REFRESH_FROM_LOOKUP_LABEL = ACTION_REFRESH_FROM_LOOKUP;
057        
058        public static final String[] LOAD_ACTIONS = new String[] {
059            ACTION_LOAD,
060            ACTION_CREATE
061        };
062        
063        public static final String[] REPLACE_VERSION_ACTIONS = new String[] {
064            ACTION_UNDEFINED
065        };
066        
067        public static final String[] VALIDATABLE_ACTIONS = new String[] {
068            ACTION_SAVE,
069            ACTION_ROUTE,
070            ACTION_APPROVE,
071            ACTION_ACKNOWLEDGE,
072            ACTION_COMPLETE,
073            ACTION_FYI,
074            ACTION_DISAPPROVE,
075            ACTION_RETURN_TO_PREVIOUS
076        };
077        
078        public static final String[] ANNOTATABLE_ACTIONS = new String[] {
079            ACTION_APPROVE,
080            ACTION_ACKNOWLEDGE,
081            ACTION_COMPLETE,
082            ACTION_FYI,
083            ACTION_DISAPPROVE,
084            ACTION_CANCEL,
085            ACTION_RETURN_TO_PREVIOUS
086        };
087        
088        public static final String[] EDITABLE_ACTIONS = new String[] { 
089            ACTION_CREATE,
090            ACTION_ROUTE,
091            ACTION_APPROVE,
092            ACTION_DISAPPROVE,
093            ACTION_COMPLETE
094        };
095        
096        private String action;
097        
098        public UserAction(String action) {
099                    if (action.equals(ACTION_CREATE_LABEL)) {
100                            this.action = ACTION_CREATE;
101                    } else if (action.equals(ACTION_LOAD_LABEL)) {
102                            this.action = ACTION_LOAD;
103                    } else if (action.equals(ACTION_ROUTE_LABEL)) {
104                            this.action = ACTION_ROUTE;
105                    } else if (action.equals(ACTION_APPROVE_LABEL)) {
106                            this.action = ACTION_APPROVE;
107                    } else if (action.equals(ACTION_DISAPPROVE_LABEL)) {
108                            this.action = ACTION_DISAPPROVE;
109                    } else if (action.equals(ACTION_CANCEL_LABEL)) {
110                            this.action = ACTION_CANCEL;
111                    } else if (action.equals(ACTION_BLANKETAPPROVE_LABEL)) {
112                            this.action = ACTION_BLANKETAPPROVE;
113                    } else if (action.equals(ACTION_FYI_LABEL)) {
114                            this.action = ACTION_FYI;
115                    } else if (action.equals(ACTION_ACKNOWLEDGE_LABEL)) {
116                            this.action = ACTION_ACKNOWLEDGE;
117                    } else if (action.equals(ACTION_SAVE_LABEL)) {
118                            this.action = ACTION_SAVE;
119                    } else if (action.equals(ACTION_COMPLETE_LABEL)) {
120                            this.action = ACTION_COMPLETE;
121                    } else if (action.equals(ACTION_DELETE_LABEL)) {
122                            this.action = ACTION_DELETE;
123                    } else if (action.equals(ACTION_RETURN_TO_PREVIOUS_LABEL)) {
124                            this.action = ACTION_RETURN_TO_PREVIOUS;
125                    } else if (action.equals(ACTION_REFRESH_FROM_LOOKUP_LABEL)) {
126                            this.action = ACTION_REFRESH_FROM_LOOKUP;
127                    } else {
128                            this.action = action;
129                    }
130            }
131        
132        public String getAction() {
133            return action;
134        }
135        
136        public boolean isLoadAction() {
137            return containsAction(LOAD_ACTIONS, action);
138        }
139        
140        public boolean isIncrementVersionAction() {
141            return !isLoadAction() && !isReplaceVersionAction() && !ACTION_REFRESH_FROM_LOOKUP.equals(action);
142        }
143        
144        public boolean isReplaceVersionAction() {
145            return containsAction(REPLACE_VERSION_ACTIONS, action);
146        }
147    
148        public boolean isValidatableAction() {
149            return containsAction(VALIDATABLE_ACTIONS, action);
150        }
151        
152        public boolean isAnnotatableAction() {
153            return containsAction(ANNOTATABLE_ACTIONS, action);
154        }
155        
156        public boolean isEditableAction() {
157            return containsAction(EDITABLE_ACTIONS, action);
158        }
159        
160        private boolean containsAction(String[] actions, String action) {
161            for (int index = 0; index < actions.length; index++) {
162                if (actions[index].equals(action)) {
163                    return true;
164                }
165            }
166            return false;
167        }
168        
169    }