001    /**
002     * Copyright 2005-2014 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.kim.api;
017    
018    import org.kuali.rice.core.api.CoreConstants;
019    import org.kuali.rice.core.api.membership.MemberType;
020    
021    import java.util.HashMap;
022    import java.util.Map;
023    
024    public final class KimConstants {
025    
026            public static final String KIM_MODULE_NAMESPACE = "KIM";
027            
028            public static final String NAMESPACE_CODE = "KR-IDM";
029            public static final String KIM_TYPE_DEFAULT_NAMESPACE = "KUALI";
030            public static final String KIM_TYPE_RICE_NAMESPACE = "RICE";
031            public static final String KIM_TYPE_DEFAULT_NAME = "Default";
032            public static final String KIM_GROUP_DEFAULT_NAMESPACE_CODE = "KUALI";
033            public static final String KIM_GROUP_WORKFLOW_NAMESPACE_CODE = "KR-WKFLW";
034            public static final String RESTRICTED_DATA_MASK = "Xxxxxx";
035    
036            public static final String KIM_PERSON_SERVICE = "personService";
037            public static final String DEFAULT_KIM_TYPE_SERVICE = "kimTypeService";
038    
039            //Kim Attribute Boolean representations
040            public static final String KIM_ATTRIBUTE_BOOLEAN_TRUE_STR_VALUE_DISPLAY = "Yes";
041            public static final String KIM_ATTRIBUTE_BOOLEAN_FALSE_STR_VALUE_DISPLAY = "No";
042            public static final String KIM_ATTRIBUTE_BOOLEAN_TRUE_STR_VALUE = "Y";
043            public static final String KIM_ATTRIBUTE_BOOLEAN_FALSE_STR_VALUE = "N";
044    
045        public static final String KIM_ENABLE_HISTORY_KEY = "kim.enable.history";
046            
047            public static final class EntityTypes {
048                    public static final String PERSON = "PERSON";
049                    public static final String SYSTEM = "SYSTEM";
050                    
051                    private EntityTypes() {
052                            throw new UnsupportedOperationException("do not call");
053                    }
054            }
055    
056        public static final class AddressTypes {
057            public static final String HOME = "HM";
058                    public static final String WORK = "WRK";
059            public static final String OTHER= "OTH";
060    
061                    private AddressTypes() {
062                            throw new UnsupportedOperationException("do not call");
063                    }
064        }
065    
066        public static final class NameTypes {
067            public static final String PREFERRED = "PRFR";
068                    public static final String PRIMARY = "PRM";
069            public static final String OTHER= "OTH";
070    
071                    private NameTypes() {
072                            throw new UnsupportedOperationException("do not call");
073                    }
074        }
075    
076        public static final class GenderChangeCodes {
077                    public static final String MALE_TO_FEMALE = "ChangeFemale";
078            public static final String FEMALE_TO_MALE = "ChangeMale";
079    
080                    private GenderChangeCodes() {
081                            throw new UnsupportedOperationException("do not call");
082                    }
083        }
084    
085            public static final class PersonExternalIdentifierTypes {
086                    public static final String TAX = "TAX";
087                    
088                    private PersonExternalIdentifierTypes() {
089                            throw new UnsupportedOperationException("do not call");
090                    }
091            }
092            public static final class PersonAffiliationTypes {
093                    public static final String STAFF_AFFILIATION_TYPE = "STAFF";
094                    public static final String STUDENT_AFFILIATION_TYPE = "STUDENT";
095                    public static final String AFFILIATE_AFFILIATION_TYPE = "AFFILIATE";
096                    public static final String FACULTY_AFFILIATION_TYPE = "FACULTY";
097                    
098                    private PersonAffiliationTypes() {
099                            throw new UnsupportedOperationException("do not call");
100                    }
101            }
102    
103            public static final class PermissionTemplateNames {
104            public static final String FULL_UNMASK_FIELD = "Full Unmask Field";
105            public static final String PARTIAL_UNMASK_FIELD = "Partial Unmask Field";
106            public static final String VIEW_MAINTENANCE_INQUIRY_FIELD = "View Inquiry or Maintenance Document Field";
107            public static final String MODIFY_FIELD = "Modify Maintenance Document Field";
108            public static final String VIEW_SECTION = "View Inquiry or Maintenance Document Section";
109            public static final String MODIFY_SECTION = "Modify Maintenance Document Section";
110            public static final String CREATE_MAINTAIN_RECORDS = "Create / Maintain Record(s)";
111    
112            public static final String EDIT_DOCUMENT = "Edit Document";
113            public static final String COPY_DOCUMENT = "Copy Document";
114            public static final String OPEN_DOCUMENT = "Open Document";
115            public static final String TAKE_REQUESTED_ACTION = "Take Requested Action";
116            public static final String INITIATE_DOCUMENT = "Initiate Document";
117            public static final String BLANKET_APPROVE_DOCUMENT ="Blanket Approve Document";
118            public static final String CANCEL_DOCUMENT ="Cancel Document";
119            public static final String SAVE_DOCUMENT ="Save Document";
120            public static final String ROUTE_DOCUMENT ="Route Document";
121            public static final String APPROVE_DOCUMENT = "Approve Document";
122            public static final String AD_HOC_REVIEW_DOCUMENT = "Ad Hoc Review Document";
123            public static final String ADD_MESSAGE_TO_ROUTE_LOG = "Add Message to Route Log";
124            
125            public static final String ADD_NOTE_ATTACHMENT = "Add Note / Attachment";
126            public static final String VIEW_NOTE_ATTACHMENT = "View Note / Attachment";
127            public static final String DELETE_NOTE_ATTACHMENT = "Delete Note / Attachment";
128    
129            public static final String USE_TRANSACTIONAL_DOCUMENT = "Use Transactional Document";
130    
131            public static final String POPULATE_GROUP = "Populate Group";
132            public static final String ASSIGN_ROLE = "Assign Role";
133            public static final String GRANT_PERMISSION = "Grant Permission";
134            public static final String GRANT_RESPONSIBILITY = "Grant Responsibility";
135    
136            public static final String LOOK_UP_RECORDS = "Look Up Records";
137            public static final String INQUIRE_INTO_RECORDS = "Inquire Into Records";
138            public static final String USE_SCREEN = "Use Screen";
139            public static final String BACKDOOR_RESTRICTION = "Backdoor Restriction";
140    
141            public static final String PERFORM_CUSTOM_MAINTENANCE_DOCUMENT_FUNCTION ="Perform Custom Maintenance Document Function";
142            public static final String MAINTAIN_SYSTEM_PARAMETER = "Maintain System Parameter";
143            public static final String SEND_AD_HOC_REQUEST ="Send Ad Hoc Request";
144    
145            public static final String EDIT_VIEW = "Edit View";
146            public static final String OPEN_VIEW = "Open View";
147            public static final String EDIT_FIELD = "Edit Field";
148            public static final String VIEW_FIELD = "View Field";
149            public static final String EDIT_GROUP = "Edit Group";
150            public static final String VIEW_GROUP = "View Group";
151            public static final String EDIT_WIDGET = "Edit Widget";
152            public static final String VIEW_WIDGET = "View Widget";
153            public static final String PERFORM_ACTION = "Perform Action";
154            public static final String EDIT_LINE = "Edit Line";
155            public static final String VIEW_LINE = "View Line";
156            public static final String EDIT_LINE_FIELD = "Edit Line Field";
157            public static final String VIEW_LINE_FIELD = "View Line Field";
158            public static final String PERFORM_LINE_ACTION = "Perform Line Action";
159    
160                    private PermissionTemplateNames() {
161                            throw new UnsupportedOperationException("do not call");
162                    }
163            }
164    
165            public final static class PermissionNames {
166                    public static final String LOG_IN = "Log In Kuali Portal";
167                    public static final String ADMIN_PESSIMISTIC_LOCKING = "Administer Pessimistic Locking";
168                    public static final String OVERRIDE_ENTITY_PRIVACY_PREFERENCES = "Override Entity Privacy Preferences";
169            public static final String MODIFY_ENTITY = "Modify Entity";
170            public static final String ACCESS_LOCKED_MODULE = "Access Locked Module";
171            
172                    private PermissionNames() {
173                            throw new UnsupportedOperationException("do not call");
174                    }
175            }
176    
177            public final static class KimUIConstants {
178                    public static final String NAME_VALUE_SEPARATOR = " : ";
179                    public static final String COMMA_SEPARATOR = ", ";
180                    public static final String OR_OPERATOR = "|";
181                    public static final String URL_SEPARATOR = "/";
182                    public static final String PARAMETERIZED_URL_SEPARATOR = "%2F";
183                    public static final String KIM_URL_KEY = "kim.url";
184                    public static final String KIM_APPLICATION = "kim";
185                    public static final String MEMBER_ID_PREFIX = PrimaryKeyConstants.MEMBER_ID+".";
186                    public static final String MEMBER_NAME = "memberName";
187                    public static final String MEMBER_NAMESPACE_CODE = "memberNamespaceCode";
188                    public static final String MEMBER_TYPE_PRINCIPAL = "Principal";
189                    public static final String MEMBER_TYPE_GROUP = "Group";
190                    public static final String MEMBER_TYPE_ROLE = "Role";
191                    public static final Map<String, String> KIM_MEMBER_TYPES_MAP = getKimMemberTypesMap();
192                private static Map<String, String> getKimMemberTypesMap() {
193                    Map<String, String> kimDocumentActionsMap = new HashMap<String, String>();
194                    kimDocumentActionsMap.put(MemberType.PRINCIPAL.getCode(), MEMBER_TYPE_PRINCIPAL);
195                    kimDocumentActionsMap.put(MemberType.GROUP.getCode(), MEMBER_TYPE_GROUP);
196                    kimDocumentActionsMap.put(MemberType.ROLE.getCode(), MEMBER_TYPE_ROLE);
197                    return kimDocumentActionsMap;
198                }
199    
200                    public static final String KIM_ROLE_DOCUMENT_TYPE_NAME = "IdentityManagementRoleDocument";
201                    public static final String KIM_GROUP_DOCUMENT_TYPE_NAME = "IdentityManagementGroupDocument";
202                    public static final String KIM_PERSON_DOCUMENT_TYPE_NAME = "IdentityManagementPersonDocument";
203                    public static final String KIM_PERMISSION_DOCUMENT_TYPE_NAME = "IdentityManagementGenericPermissionMaintenanceDocument";
204                    public static final String KIM_REVIEW_RESPONSIBILITY_DOCUMENT_TYPE_NAME = "IdentityManagementReviewResponsibilityMaintenanceDocument";
205                    public static final String KIM_ROLE_DOCUMENT_SHORT_KEY = "IMRD";
206                    public static final String KIM_GROUP_DOCUMENT_SHORT_KEY = "IMGD";
207            public static final String KIM_PERSON_DOCUMENT_SHORT_KEY = "IMPD";
208            public static final String KIM_GROUP_INQUIRY_SORT_DESC_VALUE = "KIM_GROUP_INQUIRY_SORT_DESC_VALUE";
209            public static final String KIM_GROUP_INQUIRY_SORT_PREV_COL_NM = "KIM_GROUP_INQUIRY_SORT_PREV_COL_NM";
210            public static final String KIM_ROLE_INQUIRY_SORT_DESC_VALUE = "KIM_ROLE_INQUIRY_SORT_DESC_VALUE";
211            public static final String KIM_ROLE_INQUIRY_SORT_PREV_COL_NM = "KIM_ROLE_INQUIRY_SORT_PREV_COL_NM";
212    
213            public static final String KIM_ROLE_DOCUMENT_ACTION = "identityManagementRoleDocument.do";
214                    public static final String KIM_ROLE_INQUIRY_ACTION = "identityManagementRoleInquiry.do";
215                    public static final String KIM_PERSON_DOCUMENT_ACTION = "identityManagementPersonDocument.do";
216                    public static final String KIM_PERSON_INQUIRY_ACTION = "identityManagementPersonInquiry.do";
217                    public static final String KIM_GROUP_DOCUMENT_ACTION = "identityManagementGroupDocument.do";
218                    public static final String KIM_GROUP_INQUIRY_ACTION = "identityManagementGroupInquiry.do";
219                    public static final Map<String, String> KIM_DOCUMENTS_ACTIONS_MAP = getDocumentActionsMap();
220                private static Map<String, String> getDocumentActionsMap() {
221                    Map<String, String> kimDocumentActionsMap = new HashMap<String, String>();
222                    kimDocumentActionsMap.put(KIM_ROLE_DOCUMENT_SHORT_KEY, KIM_ROLE_DOCUMENT_ACTION);
223                    kimDocumentActionsMap.put(KIM_GROUP_DOCUMENT_SHORT_KEY, KIM_GROUP_DOCUMENT_ACTION);
224                    kimDocumentActionsMap.put(KIM_PERSON_DOCUMENT_SHORT_KEY, KIM_PERSON_DOCUMENT_ACTION);
225                    return kimDocumentActionsMap;
226                }
227    
228                    public static final Map<String, String> KIM_DOCUMENT_TYPE_NAMES_MAP = getDocumentTypeNamesMap();
229                private static Map<String, String> getDocumentTypeNamesMap() {
230                    Map<String, String> kimDocumentTypeNamesMap = new HashMap<String, String>();
231                            kimDocumentTypeNamesMap.put(KIM_ROLE_DOCUMENT_SHORT_KEY, KIM_ROLE_DOCUMENT_TYPE_NAME);
232                            kimDocumentTypeNamesMap.put(KIM_GROUP_DOCUMENT_SHORT_KEY, KIM_GROUP_DOCUMENT_TYPE_NAME);
233                            kimDocumentTypeNamesMap.put(KIM_PERSON_DOCUMENT_SHORT_KEY, KIM_PERSON_DOCUMENT_TYPE_NAME);
234                            return kimDocumentTypeNamesMap;
235                }
236    
237                public static final String DELEGATION_PRIMARY = "P";
238                public static final String DELEGATION_SECONDARY = "S";
239                public static final String DELEGATION_PRIMARY_LABEL = "Primary";
240                public static final String DELEGATION_SECONDARY_LABEL = "Secondary";
241    
242                public static final Map<String, String> DELEGATION_TYPES = getDelegationTypesMap();
243                private static Map<String, String> getDelegationTypesMap() {
244                    Map<String, String> delegationTypesMap = new HashMap<String, String>();
245                    delegationTypesMap.put(DELEGATION_PRIMARY, DELEGATION_PRIMARY_LABEL);
246                    delegationTypesMap.put(DELEGATION_SECONDARY, DELEGATION_SECONDARY_LABEL);
247                    return delegationTypesMap;
248                }
249    
250                public static final String ROLE_LOOKUPABLE_IMPL = "roleLookupable";
251                public static final String KIM_DOCUMENT_ROLE_MEMBER_LOOKUPABLE_IMPL = "kimDocumentRoleMemberLookupable";
252                public static final String ROLE_MEMBER_LOOKUPABLE_IMPL = "roleMemberImplLookupable";
253                public static final String ROLE_MEMBERS_COLLECTION_NAME = "roleMembers";
254                
255                    private KimUIConstants() {
256                            throw new UnsupportedOperationException("do not call");
257                    }
258            }
259    
260            public final static class PrimaryKeyConstants {
261                    public static final String ENTITY_ID = "id";
262            public static final String SUB_ENTITY_ID = "entityId";
263                    public static final String PRINCIPAL_ID = "principalId";
264                    public static final String ROLE_ID = "id";
265            public static final String SUB_ROLE_ID = "roleId";
266                    public static final String GROUP_ID = "id";
267                    public static final String KIM_TYPE_ID = "id";
268                    public static final String RESPONSIBILITY_ID = "id";
269                    public static final String PERMISSION_ID = "id";
270                    public static final String DELEGATION_ID = "delegationId";
271                    public static final String MEMBER_ID = "memberId";
272                    public static final String DELEGATION_MEMBER_ID = "delegationMemberId";
273                    public static final String ROLE_MEMBER_ID = "roleMemberId";
274                    public static final String ROLE_RESPONSIBILITY_ID = "roleResponsibilityId";
275                    public static final String ROLE_RESPONSIBILITY_ACTION_ID = "roleResponsibilityActionId";
276                    public static final String KIM_PERMISSION_REQUIRED_ATTR_ID = "kimPermissionRequiredAttributeId";
277                    public static final String KIM_ATTRIBUTE_ID = "id";
278                    public static final String KIM_TYPE_CODE ="id";
279            public static final String ID = "id";
280            public static final String CODE = "code";
281                    
282                    private PrimaryKeyConstants() {
283                            throw new UnsupportedOperationException("do not call");
284                    }
285            }
286    
287            public final static class UniqueKeyConstants {
288                    public static final String NAMESPACE_CODE = "namespaceCode";
289                    public static final String PRINCIPAL_NAME = "principalName";
290                    public static final String GROUP_NAME = "name";
291                    public static final String ROLE_NAME = "name";
292                    public static final String PERMISSION_NAME = "name";
293                    public static final String RESPONSIBILITY_NAME = "name";
294                    public static final String PERMISSION_TEMPLATE_NAME = "name";
295                    public static final String RESPONSIBILITY_TEMPLATE_NAME = "name";
296            public static final String NAME = "name";
297                    
298                    private UniqueKeyConstants() {
299                            throw new UnsupportedOperationException("do not call");
300                    }
301            }
302    
303            public final static class SequenceNames {
304                    public static final String KRIM_PRNCPL_ID_S = "KRIM_PRNCPL_ID_S";
305                    public static final String KRIM_ENTITY_ID_S = "KRIM_ENTITY_ID_S";
306                    public static final String KRIM_ROLE_ID_S = "KRIM_ROLE_ID_S";
307                    public static final String KRIM_GROUP_ID_S = "KRIM_GRP_ID_S";
308                    public static final String KRIM_ROLE_PERM_ID_S = "KRIM_ROLE_PERM_ID_S";
309                    public static final String KRIM_ROLE_RSP_ID_S = "KRIM_ROLE_RSP_ID_S";
310                    public static final String KRIM_ROLE_MBR_ID_S = "KRIM_ROLE_MBR_ID_S";
311                    public static final String KRIM_DLGN_MBR_ID_S = "KRIM_DLGN_MBR_ID_S";
312                    public static final String KRIM_ROLE_RSP_ACTN_ID_S = "KRIM_ROLE_RSP_ACTN_ID_S";
313                    public static final String KRIM_DLGN_ID_S = "KRIM_DLGN_ID_S";
314                    public static final String KRIM_PERM_ID_S = "KRIM_PERM_ID_S";
315                    public static final String KRIM_RSP_ID_S = "KRIM_RSP_ID_S";
316                    public static final String KRIM_ATTR_DATA_ID_S = "KRIM_ATTR_DATA_ID_S";
317                    
318                    private SequenceNames() {
319                            throw new UnsupportedOperationException("do not call");
320                    }
321            }
322    
323        public final static class AttributeConstants {
324            public static final String PRINCIPAL_ID = "principalId";
325            public static final String PRINCIPAL_NAME = "principalName";
326            public static final String BUTTON_NAME = "buttonName";
327            public static final String BEAN_NAME = "beanName";
328            public static final String ACTION_CLASS = "actionClass";
329            public static final String NAME = "name";
330            public static final String NAMESPACE_CODE = "namespaceCode";
331            public static final String COMPONENT_NAME = "componentName";
332            public static final String PROPERTY_NAME = "propertyName";
333            public static final String EXISTING_RECORDS_ONLY = "existingRecordsOnly";
334            public static final String CREATED_BY_SELF = "createdBySelf";
335            public static final String CREATED_BY_SELF_ONLY = "createdBySelfOnly";
336            public static final String ATTACHMENT_TYPE_CODE = "attachmentTypeCode";
337            public static final String EDIT_MODE = "editMode";
338            public static final String PARAMETER_NAME = "parameterName";
339            public static final String CAMPUS_CODE = "campusCode";
340            public static final String ACTION_REQUEST_CD = "actionRequestCd";
341            public static final String ROUTE_STATUS_CODE = "routeStatusCode";
342            public static final String APP_DOC_STATUS = "appDocStatus";
343            public static final String ROUTE_NODE_NAME = "routeNodeName";
344            public static final String ROLE_NAME = "roleName";
345            public static final String PERMISSION_NAME = "permissionName";
346            public static final String RESPONSIBILITY_NAME = "responsibilityName";
347            public static final String ATTRIBUTE_NAME = "attributeName";
348            public static final String GROUP_NAME = "groupName";
349            public static final String REQUIRED = "required";
350            public static final String ACTION_DETAILS_AT_ROLE_MEMBER_LEVEL = "actionDetailsAtRoleMemberLevel";
351            public static final String DOCUMENT_NUMBER = "documentNumber";
352            public static final String DOCUMENT_TYPE_NAME = "documentTypeName";
353            public static final String APP_CODE = "appCode";
354            public static final String SECTION_ID = "sectionId";
355            public static final String KIM_TYPE_ID = PrimaryKeyConstants.KIM_TYPE_ID;
356            public static final String KIM_TYPE_NAME = "kimTypeName";
357            public static final String QUALIFIER_RESOLVER_PROVIDED_IDENTIFIER = "qualifierResolverProvidedIdentifier";
358            public static final String VIEW_ID = "viewId";
359            public static final String ACTION_EVENT = "actionEvent";
360            public static final String COLLECTION_PROPERTY_NAME = "collectionPropertyName";
361            public static final String FIELD_ID = "fieldId";
362            public static final String GROUP_ID = "groupId";
363            public static final String WIDGET_ID = "widgetId";
364        }
365    
366            /**
367             *
368             * KimGroupS can contain other KimGroupS and KimPrincipalS.
369             * Use these constants to flags their members with the appropriate member
370             * type code.
371             *
372             * @author Kuali Rice Team (rice.collab@kuali.org)
373             */
374            public final static class KimGroupMemberTypes {
375    
376                    /**
377                     * For group members that are themselves groups
378                     */
379                    public static final MemberType GROUP_MEMBER_TYPE = MemberType.GROUP;
380    
381                    /**
382                     * For group members that are principals
383                     */
384                    public static final MemberType PRINCIPAL_MEMBER_TYPE = MemberType.PRINCIPAL;
385    
386                    private KimGroupMemberTypes() {
387                            throw new UnsupportedOperationException("do not call");
388                    }
389            }
390    
391            private KimConstants() {
392                    throw new UnsupportedOperationException("do not call");
393            }
394    
395        public final static String SERVICE_PATH_SOAP = "soap/" + Namespaces.MODULE_NAME + "/" + CoreConstants.Versions.VERSION_2_0;
396    
397        public final static class Namespaces {
398            public static final String MODULE_NAME = "kim";
399            public static final String KIM_NAMESPACE_PREFIX = CoreConstants.Namespaces.ROOT_NAMESPACE_PREFIX + "/" + MODULE_NAME;
400    
401            public static final String KIM_NAMESPACE_2_0 = KIM_NAMESPACE_PREFIX + "/" + CoreConstants.Versions.VERSION_2_0;
402        }
403        
404        public static class ParameterKey {
405            public static final String SHOW_BLANK_QUALIFIERS = "KIM_SHOW_BLANK_QUALIFIERS";
406            }
407        
408    }