001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.security;
034:
035: import com.flexive.shared.ObjectWithColor;
036: import com.flexive.shared.SelectableObjectWithName;
037: import com.flexive.shared.SelectableObjectWithLabel;
038: import com.flexive.shared.value.FxString;
039:
040: import java.io.Serializable;
041: import java.util.ArrayList;
042: import java.util.Arrays;
043: import java.util.List;
044:
045: /**
046: * User roles
047: *
048: * @author Markus Plesser (markus.plesser@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
049: */
050: public enum Role implements SelectableObjectWithName,
051: SelectableObjectWithLabel, ObjectWithColor, Serializable {
052:
053: /**
054: * Global Supervisor - no restrictions at all
055: */
056: GlobalSupervisor((byte) 1, "Global Supervisor", "#0000FF"),
057:
058: /**
059: * Mandator Supervisor - may do everything for "his" mandator
060: */
061: MandatorSupervisor((byte) 2, "Mandator Supervisor", "#0000AA"),
062:
063: /**
064: * may CRUD ACLs for "his" mandator
065: */
066: ACLManagement((byte) 3, "ACL Management", "#00AA00"),
067:
068: /**
069: * may CRUD users, groups and roles (may only add roles he is assigned himself,
070: * may not alter assigned roles that he has not assigned himself) for "his" mandator
071: */
072: AccountManagement((byte) 4, "Account Management", "#00AA00"),
073:
074: /**
075: * may see the user interface to edit selectlist items (role entitles to no CRUD rights!),
076: * actual permissions are taken from the select lists createItemACL
077: */
078: SelectListEditor((byte) 5, "SelectList Editor", "#00AA00"),
079:
080: /**
081: * may CRUD steps and workflows for "his" mandator
082: */
083: WorkflowManagement((byte) 6, "Workflow Management", "#00AA00"),
084:
085: /**
086: * may CRUD types/relations/groups/properties/assignments/selectlists and assign scripts to structures for "his" mandator
087: */
088: StructureManagement((byte) 7, "Structure Management", "#00AA00"),
089:
090: /**
091: * may CRUD scripts
092: */
093: ScriptManagement((byte) 8, "Script Management", "#00AA00"),
094:
095: /**
096: * may execute scripts that can be run "standalone"
097: */
098: ScriptExecution((byte) 9, "Script Execution", "#00AA00"),
099:
100: /**
101: * may login to the backend (does not imply any rights)
102: */
103: BackendAccess((byte) 10, "Backend Access", "#00AA00"), ;
104:
105: private static final long serialVersionUID = -8561324370315868526L;
106:
107: private byte id = -1;
108: private String desc = null;
109: private String color = null;
110: private FxString label = null;
111:
112: /**
113: * Private constructor.
114: *
115: * @param id the unique id
116: * @param description the description
117: * @param color the color
118: */
119: private Role(byte id, String description, String color) {
120: this .id = id;
121: this .desc = description;
122: this .color = color;
123: this .label = new FxString(false, desc);
124: }
125:
126: /**
127: * Check if the given role id is undefined
128: *
129: * @param roleId role id to check
130: * @return if undefined
131: */
132: public static boolean isUndefined(long roleId) {
133: return roleId <= 0 || getById(roleId) == null;
134: }
135:
136: /**
137: * Get all roles as a List
138: *
139: * @return roles as List
140: */
141: public static List<Role> getList() {
142: List<Role> result = new ArrayList<Role>(values().length);
143: result.addAll(Arrays.asList(values()));
144: return result;
145: }
146:
147: /**
148: * Returns a role identified by its unique id.
149: *
150: * @param roleId the id of the role to fetch
151: * @return the role, or null if the id is not defined
152: */
153: public static Role getById(long roleId) {
154: for (Role role : values()) {
155: if (role.getId() == roleId)
156: return role;
157: }
158: return null;
159: }
160:
161: /**
162: * Return the description of the role.
163: *
164: * @return the description of the role
165: */
166: public String getName() {
167: return this .desc;
168: }
169:
170: /**
171: * Returns the unique id of the role.
172: *
173: * @return the unique id of the role
174: */
175: public long getId() {
176: return this .id;
177: }
178:
179: /**
180: * Returns the color of the role.
181: *
182: * @return the color of the role.
183: */
184: public String getColor() {
185: return this .color;
186: }
187:
188: /**
189: * Returns a string representation of the role.
190: *
191: * @return a string representation of the role
192: */
193: @Override
194: public String toString() {
195: return Role.class + "@[id=" + this .id + ",desc="
196: + this .getName() + "]";
197: }
198:
199: /**
200: * {@inheritDoc}
201: */
202: public FxString getLabel() {
203: return this .label;
204: }
205:
206: /**
207: * Convert a Role array to an id array
208: *
209: * @param roles roles
210: * @return id's
211: */
212: public static long[] toIdArray(Role[] roles) {
213: if (roles == null || roles.length == 0)
214: return new long[0];
215: long[] res = new long[roles.length];
216: for (int i = 0; i < roles.length; i++)
217: res[i] = roles[i].getId();
218: return res;
219: }
220: }
|