KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > security > Role


1 /*
2  * Created on 02.03.2004
3  */

4 package com.nightlabs.ipanema.security;
5
6 import java.io.Serializable JavaDoc;
7 import java.util.Collection JavaDoc;
8 import java.util.HashMap JavaDoc;
9 import java.util.Iterator JavaDoc;
10 import java.util.Map JavaDoc;
11
12 import javax.jdo.PersistenceManager;
13 import javax.jdo.spi.PersistenceCapable;
14
15 import org.apache.log4j.Logger;
16
17 import com.nightlabs.jdo.BaseObjectID;
18
19 /**
20  * @author nick
21  */

22
23 /**
24  * @jdo.persistence-capable
25  * identity-type = "application"
26  * objectid-class = "com.nightlabs.ipanema.security.id.RoleID"
27  * detachable = "true"
28  *
29  * @jdo.inheritance strategy="new-table"
30  **/

31 public class Role implements Serializable JavaDoc
32 {
33     public static Logger LOGGER = Logger.getLogger(Role.class);
34
35     /**
36      * @jdo.field persistence-modifier="persistent" primary-key="true"
37      * @jdo.column length="100"
38      */

39     private String JavaDoc roleID;
40
41     /**
42      * key: String languageID<br/>
43      * value: String roleGroupName
44      *
45      * @jdo.field
46      * persistence-modifier="persistent"
47      * collection-type="map"
48      * key-type="java.lang.String"
49      * value-type="java.lang.String"
50      *
51      * @jdo.join
52      *
53      * @jdo.map-vendor-extension vendor-name="jpox" key="clear-on-delete" value="true"
54      * @jdo.map-vendor-extension vendor-name="jpox" key="key-length" value="max 100"
55      * @jdo.map-vendor-extension vendor-name="jpox" key="value-length" value="max 255"
56      */

57     private Map JavaDoc names = new HashMap JavaDoc();
58     
59     /**
60      * key: String languageID<br/>
61      * value: String description
62      *
63      * @jdo.field
64      * persistence-modifier="persistent"
65      * collection-type="map"
66      * key-type="java.lang.String"
67      * value-type="java.lang.String"
68      *
69      * @jdo.join
70      *
71      * @jdo.map-vendor-extension vendor-name="jpox" key="clear-on-delete" value="true"
72      * @jdo.map-vendor-extension vendor-name="jpox" key="key-length" value="max 100"
73      * @jdo.map-vendor-extension vendor-name="jpox" key="value-length" value="max 255"
74      */

75     private Map JavaDoc descriptions = new HashMap JavaDoc();
76
77     /**
78      * key: String roleGroupID<br/>
79      * value: RoleGroup roleGroup
80      * <br/><br/>
81      * User (m) - (n) RoleGroup
82      *
83      * @jdo.field
84      * persistence-modifier="persistent"
85      * collection-type="map"
86      * key-type="java.lang.String"
87      * value-type="RoleGroup"
88      *
89      * @jdo.join
90      *
91      * @jdo.map-vendor-extension vendor-name="jpox" key="key-field" value="roleGroupID"
92      */

93     private Map JavaDoc roleGroups = new HashMap JavaDoc();
94
95
96     public Role() { }
97     
98     public Role(String JavaDoc _roleID)
99     {
100         if (!BaseObjectID.isValidIDString(_roleID))
101             throw new IllegalArgumentException JavaDoc("roleID \""+_roleID+"\" is not a valid id!");
102         this.roleID = _roleID;
103     }
104
105     protected static String JavaDoc EMPTYSTRING = "";
106     
107     /**
108      * @return Returns the name.
109      */

110     public String JavaDoc getName() {
111         return (String JavaDoc)names.get(EMPTYSTRING);
112     }
113     /**
114      * @return Returns the name.
115      */

116     public String JavaDoc getName(String JavaDoc languageID) {
117         if (languageID == null)
118             languageID = EMPTYSTRING;
119         String JavaDoc res = (String JavaDoc)names.get(languageID);
120         if (res == null)
121             res = (String JavaDoc)names.get(EMPTYSTRING);
122         return res;
123     }
124     /**
125      * @param name The name to set.
126      */

127     public void setName(String JavaDoc languageID, String JavaDoc name) {
128         if (languageID == null)
129             languageID = EMPTYSTRING;
130         names.put(languageID, name);
131     }
132     
133     /**
134      * @return Returns the description.
135      */

136     public String JavaDoc getDescription() {
137         return (String JavaDoc)descriptions.get(EMPTYSTRING);
138     }
139     /**
140      * @return Returns the description.
141      */

142     public String JavaDoc getDescription(String JavaDoc languageID) {
143         if (languageID == null)
144             languageID = EMPTYSTRING;
145         String JavaDoc res = (String JavaDoc)descriptions.get(languageID);
146         if (res == null)
147             res = (String JavaDoc)descriptions.get(EMPTYSTRING);
148         return res;
149     }
150     /**
151      * @param description The description to set.
152      */

153     public void setDescription(String JavaDoc languageID, String JavaDoc description) {
154         if (languageID == null)
155             languageID = EMPTYSTRING;
156         descriptions.put(languageID, description);
157     }
158
159     /**
160      * @return Returns the roleID.
161      */

162     public String JavaDoc getRoleID()
163     {
164         return roleID;
165     }
166
167     /**
168      * @return Returns the roleGroups.
169      */

170     public Collection JavaDoc getRoleGroups() {
171         return roleGroups.values();
172     }
173     
174     /**
175      * This method is executed by RoleGroup.addRole(...).
176      *
177      * @param roleGroup
178      */

179     protected void _addRoleGroup(RoleGroup roleGroup)
180     {
181         String JavaDoc roleGroupID = roleGroup.getRoleGroupID();
182         if (roleGroups.containsKey(roleGroupID)) {
183             LOGGER.warn("_addRoleGroup(\""+roleGroupID+"\"): roleGroup was already added.");
184             return;
185         }
186         roleGroups.put(roleGroupID, roleGroup);
187     }
188     
189     /**
190      * This method is executed by RoleGroup.removeRole(...).
191      * @param roleGroup
192      */

193     protected void _removeRoleGroup(RoleGroup roleGroup)
194     {
195         if (roleGroups.remove(roleGroup.getRoleGroupID()) == null)
196             LOGGER.warn("_removeRoleGroup(\""+roleGroup.getRoleGroupID()+"\"): roleGroup was not existing.");
197     }
198
199     /**
200      * @see java.lang.Object#equals(java.lang.Object)
201      */

202     public boolean equals(Object JavaDoc obj) {
203         if (obj == this)
204             return true;
205         
206         if (!(obj instanceof Role))
207             return false;
208         
209         Role other = (Role) obj;
210         return this.getRoleID().equals(other.getRoleID());
211     }
212     /**
213      * @see java.lang.Object#hashCode()
214      */

215     public int hashCode() {
216         return getRoleID().hashCode();
217     }
218     
219     protected transient String JavaDoc thisString = null;
220     /**
221      * @see java.lang.Object#toString()
222      */

223     public String JavaDoc toString() {
224         if (thisString == null) {
225             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
226             sb.append(this.getClass().getName());
227             sb.append('{');
228             sb.append(getRoleID());
229             sb.append(',');
230             sb.append(getDescription());
231             sb.append('}');
232             thisString = sb.toString();
233         }
234         return thisString;
235     }
236     
237     
238     public static final int INCLUDE_NONE = 0;
239     public static final int INCLUDE_ROLEGROUPS = 0x1;
240     public static final int INCLUDE_ROLEGROUPS_ROLES = 0x2;
241 // public static final int INCLUDE_ROLEGROUPS_USERS = 0x4;
242

243     public void makeTransient(int includeMask)
244     {
245         PersistenceManager pm = ((PersistenceCapable)this).jdoGetPersistenceManager();
246         if (pm == null)
247             return;
248
249         pm.retrieve(this);
250         
251         Map JavaDoc tmpRoleGroups = new HashMap JavaDoc();
252         if ((includeMask & INCLUDE_ROLEGROUPS) != 0) {
253             int roleGroupIncludeMask = 0;
254             if ((includeMask & INCLUDE_ROLEGROUPS_ROLES) != 0)
255             roleGroupIncludeMask = roleGroupIncludeMask | RoleGroup.INCLUDE_ROLES;
256 // if ((includeMask & INCLUDE_ROLEGROUPS_USERS) != 0)
257
// roleGroupIncludeMask = roleGroupIncludeMask | RoleGroup.INCLUDE_USERS;
258

259             for (Iterator JavaDoc it = getRoleGroups().iterator(); it.hasNext(); ) {
260                 RoleGroup rg = (RoleGroup)it.next();
261                 rg.makeTransient(roleGroupIncludeMask);
262                 tmpRoleGroups.put(rg.getRoleGroupID(), rg);
263             }
264         }
265
266         pm.makeTransient(this);
267
268         roleGroups = tmpRoleGroups;
269     }
270
271 }
272
Popular Tags