001/**
002 * Copyright 2005-2016 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 */
016package org.kuali.rice.kew.api.util;
017
018import java.util.HashMap;
019import java.util.Map;
020
021import org.kuali.rice.kew.api.KewApiConstants;
022import org.kuali.rice.kew.api.action.ActionRequestPolicy;
023import org.kuali.rice.kew.api.action.ActionRequestStatus;
024import org.kuali.rice.kew.api.action.ActionType;
025
026/**
027 * Utility class to translate the various codes into labels and vice versa.
028 *
029 * @author Kuali Rice Team (rice.collab@kuali.org)
030 */
031public class CodeTranslator {
032    public static final Map<String, String> arLabels = getArLabels();
033    public static final Map<String, String> atLabels = getAtLabels();
034    public static final Map<String, String> arStatusLabels = getArStatusLabels();
035    public static final Map<String, String> routeStatusLabels = getRouteStatusLabels();
036    public static final Map<Boolean, String> activeIndicatorLabels = getActiveIndicatorLabels();
037    public static final Map<String, String> activationPolicyLabels = getActivationPolicyLabels();
038    public static final Map<String, String> policyLabels = getPolicyLabels();
039    public static final Map<String, String> approvePolicyLabels = getApprovePolicyLabels();
040
041    private static Map<String, String> getAtLabels() {
042        Map<String, String> newAtLabels = new HashMap<String, String>();
043        newAtLabels.put(KewApiConstants.ACTION_TAKEN_ACKNOWLEDGED_CD, KewApiConstants.ACTION_TAKEN_ACKNOWLEDGED);
044        newAtLabels.put(KewApiConstants.ACTION_TAKEN_ADHOC_CD, KewApiConstants.ACTION_TAKEN_ADHOC);
045        newAtLabels.put(KewApiConstants.ACTION_TAKEN_ADHOC_REVOKED_CD, KewApiConstants.ACTION_TAKEN_ADHOC_REVOKED);
046        newAtLabels.put(KewApiConstants.ACTION_TAKEN_APPROVED_CD, KewApiConstants.ACTION_TAKEN_APPROVED);
047        newAtLabels.put(KewApiConstants.ACTION_TAKEN_BLANKET_APPROVE_CD, KewApiConstants.ACTION_TAKEN_BLANKET_APPROVE);
048        newAtLabels.put(KewApiConstants.ACTION_TAKEN_CANCELED_CD, KewApiConstants.ACTION_TAKEN_CANCELED);
049        newAtLabels.put(ActionType.RECALL.getCode(), ActionType.RECALL.getLabel());
050        newAtLabels.put(KewApiConstants.ACTION_TAKEN_COMPLETED_CD, KewApiConstants.ACTION_TAKEN_COMPLETED);
051        newAtLabels.put(KewApiConstants.ACTION_TAKEN_ROUTED_CD, KewApiConstants.ACTION_TAKEN_ROUTED);
052        newAtLabels.put(KewApiConstants.ACTION_TAKEN_DENIED_CD, KewApiConstants.ACTION_TAKEN_DENIED);
053        newAtLabels.put(KewApiConstants.ACTION_TAKEN_FYI_CD, KewApiConstants.ACTION_TAKEN_FYI);
054        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SAVED_CD, KewApiConstants.ACTION_TAKEN_SAVED);
055        newAtLabels.put(KewApiConstants.ACTION_TAKEN_RETURNED_TO_PREVIOUS_CD, KewApiConstants.ACTION_TAKEN_RETURNED_TO_PREVIOUS);
056        newAtLabels.put(KewApiConstants.ACTION_TAKEN_LOG_DOCUMENT_ACTION_CD, KewApiConstants.ACTION_TAKEN_LOG_DOCUMENT_ACTION);
057        newAtLabels.put(KewApiConstants.ACTION_TAKEN_MOVE_CD, KewApiConstants.ACTION_TAKEN_MOVE);
058        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_APPROVED_CD, KewApiConstants.ACTION_TAKEN_SU_APPROVED);
059        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_CANCELED_CD, KewApiConstants.ACTION_TAKEN_SU_CANCELED);
060        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_DISAPPROVED_CD, KewApiConstants.ACTION_TAKEN_SU_DISAPPROVED);
061        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED_CD, KewApiConstants.ACTION_TAKEN_SU_ROUTE_LEVEL_APPROVED);
062        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED_CD, KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_APPROVED);
063        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS_CD, KewApiConstants.ACTION_TAKEN_SU_RETURNED_TO_PREVIOUS);
064        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_ACKNOWLEDGED_CD, KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_ACKNOWLEDGED);
065        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_FYI_CD, KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_FYI);
066        newAtLabels.put(KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_COMPLETED_CD, KewApiConstants.ACTION_TAKEN_SU_ACTION_REQUEST_COMPLETED);
067        newAtLabels.put(KewApiConstants.ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY_CD, KewApiConstants.ACTION_TAKEN_TAKE_WORKGROUP_AUTHORITY);
068        newAtLabels.put(KewApiConstants.ACTION_TAKEN_RELEASE_WORKGROUP_AUTHORITY_CD, KewApiConstants.ACTION_TAKEN_RELEASE_WORKGROUP_AUTHORITY);
069        return newAtLabels;
070    }
071
072    private static Map<String, String> getArLabels() {
073        Map<String, String> newArLabels = new HashMap<String, String>();
074        newArLabels.put(KewApiConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ, KewApiConstants.ACTION_REQUEST_ACKNOWLEDGE_REQ_LABEL);
075        newArLabels.put(KewApiConstants.ACTION_REQUEST_APPROVE_REQ, KewApiConstants.ACTION_REQUEST_APPROVE_REQ_LABEL);
076        newArLabels.put(KewApiConstants.ACTION_REQUEST_COMPLETE_REQ, KewApiConstants.ACTION_REQUEST_COMPLETE_REQ_LABEL);
077        newArLabels.put(KewApiConstants.ACTION_REQUEST_FYI_REQ, KewApiConstants.ACTION_REQUEST_FYI_REQ_LABEL);
078        return newArLabels;
079    }
080
081    private static Map<String, String> getArStatusLabels() {
082        Map<String, String> newArStatusLabels = new HashMap<String, String>();
083        newArStatusLabels.put(ActionRequestStatus.ACTIVATED.getCode(), KewApiConstants.ACTIVE_LABEL);
084        newArStatusLabels.put(ActionRequestStatus.INITIALIZED.getCode(), ActionRequestStatus.INITIALIZED.getLabel());
085        newArStatusLabels.put(ActionRequestStatus.DONE.getCode(), ActionRequestStatus.DONE.getLabel());
086        return newArStatusLabels;
087    }
088
089    private static Map<String, String> getRouteStatusLabels() {
090        Map<String, String> newRouteStatusLabels = new HashMap<String, String>();
091        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_CANCEL_CD, KewApiConstants.ROUTE_HEADER_CANCEL_LABEL);
092        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_DISAPPROVED_CD, KewApiConstants.ROUTE_HEADER_DISAPPROVED_LABEL);
093        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_ENROUTE_CD, KewApiConstants.ROUTE_HEADER_ENROUTE_LABEL);
094        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_EXCEPTION_CD, KewApiConstants.ROUTE_HEADER_EXCEPTION_LABEL);
095        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_FINAL_CD, KewApiConstants.ROUTE_HEADER_FINAL_LABEL);
096        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_INITIATED_CD, KewApiConstants.ROUTE_HEADER_INITIATED_LABEL);
097        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_PROCESSED_CD, KewApiConstants.ROUTE_HEADER_PROCESSED_LABEL);
098        newRouteStatusLabels.put(KewApiConstants.ROUTE_HEADER_SAVED_CD, KewApiConstants.ROUTE_HEADER_SAVED_LABEL);
099        return newRouteStatusLabels;
100    }
101
102    private static Map<Boolean, String> getActiveIndicatorLabels() {
103        Map<Boolean, String> newActiveIndicatorLabels = new HashMap<Boolean, String>();
104        newActiveIndicatorLabels.put(Boolean.TRUE, KewApiConstants.ACTIVE_LABEL_LOWER);
105        newActiveIndicatorLabels.put(Boolean.FALSE, KewApiConstants.INACTIVE_LABEL_LOWER);
106        return newActiveIndicatorLabels;
107    }
108
109    private static Map<String, String> getPolicyLabels() {
110        Map<String, String> newDocTypeActiveIndicatorLabels = new HashMap<String, String>();
111        newDocTypeActiveIndicatorLabels.put(KewApiConstants.TRUE_CD, KewApiConstants.YES_LABEL);
112        newDocTypeActiveIndicatorLabels.put(KewApiConstants.FALSE_CD, KewApiConstants.NO_LABEL);
113        newDocTypeActiveIndicatorLabels.put(KewApiConstants.INHERITED_CD, KewApiConstants.INHERITED_LABEL);
114        return newDocTypeActiveIndicatorLabels;
115    }
116
117    private static Map<String, String> getActivationPolicyLabels() {
118        Map<String, String> newActivationPolicyLabels = new HashMap<String, String>();
119        newActivationPolicyLabels.put(KewApiConstants.ROUTE_LEVEL_PARALLEL, KewApiConstants.ROUTE_LEVEL_PARALLEL_LABEL);
120        newActivationPolicyLabels.put(KewApiConstants.ROUTE_LEVEL_SEQUENCE, KewApiConstants.ROUTE_LEVEL_SEQUENCE_LABEL);
121        newActivationPolicyLabels.put(KewApiConstants.ROUTE_LEVEL_PRIORITY_PARALLEL, KewApiConstants.ROUTE_LEVEL_PRIORITY_PARALLEL_LABEL);
122        return newActivationPolicyLabels;
123    }
124
125    private static Map<String, String> getApprovePolicyLabels() {
126        Map<String, String> approvePolicyLabels = new HashMap<String, String>();
127        approvePolicyLabels.put(ActionRequestPolicy.ALL.getCode(), ActionRequestPolicy.ALL.getLabel());
128        approvePolicyLabels.put(ActionRequestPolicy.FIRST.getCode(), ActionRequestPolicy.FIRST.getLabel());
129        return approvePolicyLabels;
130    }
131
132    /**
133     * Given an actionRequest code return the appropriate label.
134     *
135     * @param actionRequestCode
136     *            The actionRequestCode to be translated.
137     * @return action request label
138     */
139    static public String getActionRequestLabel(String actionRequestCode) {
140        return (String) arLabels.get(actionRequestCode);
141    }
142
143    /**
144     * Given an action taken code return the appropriate label for it.
145     *
146     * @param actionTakenCode
147     *            action taken code to use to find the label.
148     * @return action taken label
149     */
150    static public String getActionTakenLabel(String actionTakenCode) {
151        return (String) atLabels.get(actionTakenCode);
152    }
153
154    /**
155     * Return the label for the given request status level.
156     *
157     * @param status
158     *            code of the request status
159     * @return label for the corresponding code.
160     */
161    static public String getActionRequestStatusLabel(String status) {
162        return (String) arStatusLabels.get(status);
163    }
164
165    static public String getRouteStatusLabel(String status) {
166        return (String) routeStatusLabels.get(status);
167    }
168
169    static public String getActiveIndicatorLabel(Boolean indicator) {
170        return (String) activeIndicatorLabels.get(indicator);
171    }
172
173    static public String getActivationPolicyLabel(String code) {
174        return (String) activationPolicyLabels.get(code);
175    }
176
177    static public String getPolicyLabel(String code) {
178        return (String) policyLabels.get(code);
179    }
180
181}