View Javadoc

1   package org.apache.turbine.services.security.torque;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import java.util.Iterator;
23  
24  import org.apache.turbine.om.security.Permission;
25  import org.apache.turbine.om.security.Role;
26  import org.apache.turbine.services.security.TurbineSecurity;
27  import org.apache.turbine.util.security.PermissionSet;
28  import org.apache.turbine.util.security.TurbineSecurityException;
29  
30  import org.apache.torque.om.Persistent;
31  
32  /***
33   * This class represents a role played by the User associated with the
34   * current Session. It is separated from the actual Torque peer object
35   * to be able to replace the Peer with an user supplied Peer (and Object)
36   *
37   * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
38   * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
39   * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
40   * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
41   * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
42   * @version $Id: TorqueRole.java 534527 2007-05-02 16:10:59Z tv $
43   */
44  
45  public class TorqueRole
46      extends TorqueObject
47      implements Role,
48                 Comparable
49  {
50  
51  	private static final long serialVersionUID = -7774684697021445523L;
52  
53      /*** The permissions for this role. */
54      private PermissionSet permissionSet = null;
55  
56      /***
57       * Constructs a new Role
58       */
59      public TorqueRole()
60      {
61          super();
62      }
63  
64      /***
65       * Constructs a new Role with the specified name.
66       *
67       * @param name The name of the new object.
68       */
69      public TorqueRole(String name)
70      {
71          super(name);
72      }
73  
74      /***
75       * The package private Constructor is used when the RolePeerManager
76       * has retrieved a list of Database Objects from the peer and
77       * must 'wrap' them into TorqueRole Objects. You should not use it directly!
78       *
79       * @param obj An Object from the peer
80       */
81      public TorqueRole(Persistent obj)
82      {
83          super(obj);
84      }
85  
86      /***
87       * Returns the underlying Object for the Peer
88       *
89       * Used in the RolePeerManager when building a new Criteria.
90       *
91       * @return The underlying persistent object
92       *
93       */
94  
95      public Persistent getPersistentObj()
96      {
97          if (obj == null)
98          {
99              obj = RolePeerManager.newPersistentInstance();
100         }
101         return obj;
102     }
103 
104     /***
105      * Returns the name of this role.
106      *
107      * @return The name of the role.
108      */
109     public String getName()
110     {
111         return RolePeerManager.getRoleName(getPersistentObj());
112     }
113 
114     /***
115      * Sets the name of this Role
116      *
117      * @param name The name of the role.
118      */
119     public void setName(String name)
120     {
121         RolePeerManager.setRoleName(getPersistentObj(), name);
122     }
123 
124     /***
125      * Gets the Id of this object
126      *
127      * @return The Id of the object
128      */
129     public int getId()
130     {
131         return RolePeerManager.getIdAsObj(getPersistentObj()).intValue();
132     }
133 
134     /***
135      * Gets the Id of this object
136      *
137      * @return The Id of the object
138      */
139     public Integer getIdAsObj()
140     {
141         return RolePeerManager.getIdAsObj(getPersistentObj());
142     }
143 
144     /***
145      * Sets the Id of this object
146      *
147      * @param id The new Id
148      */
149     public void setId(int id)
150     {
151         RolePeerManager.setId(getPersistentObj(), id);
152     }
153     /***
154      * Returns the set of Permissions associated with this Role.
155      *
156      * @return A PermissionSet.
157      *
158      * @exception Exception a generic exception.
159      */
160     public PermissionSet getPermissions()
161         throws Exception
162     {
163         return permissionSet;
164     }
165 
166     /***
167      * Sets the Permissions associated with this Role.
168      *
169      * @param permissionSet A PermissionSet.
170      */
171     public void setPermissions(PermissionSet permissionSet)
172     {
173         this.permissionSet = permissionSet;
174     }
175 
176     // These following methods are wrappers around TurbineSecurity
177 
178     /***
179      * Creates a new Role in the system.
180      *
181      * @param name The name of the new Role.
182      * @return An object representing the new Role.
183      * @throws TurbineSecurityException if the Role could not be created.
184      */
185     public Role create(String name)
186         throws TurbineSecurityException
187     {
188         return TurbineSecurity.createRole(name);
189     }
190 
191     /***
192      * Makes changes made to the Role attributes permanent.
193      *
194      * @throws TurbineSecurityException if there is a problem while
195      *  saving data.
196      */
197     public void save()
198         throws TurbineSecurityException
199     {
200         TurbineSecurity.saveRole(this);
201     }
202 
203     /***
204      * Removes a role from the system.
205      *
206      * @throws TurbineSecurityException if the Role could not be removed.
207      */
208     public void remove()
209         throws TurbineSecurityException
210     {
211         TurbineSecurity.removeRole(this);
212     }
213 
214     /***
215      * Renames the role.
216      *
217      * @param name The new Role name.
218      * @throws TurbineSecurityException if the Role could not be renamed.
219      */
220     public void rename(String name)
221         throws TurbineSecurityException
222     {
223         TurbineSecurity.renameRole(this, name);
224     }
225 
226     /***
227      * Grants a Permission to this Role.
228      *
229      * @param permission A Permission.
230      * @throws TurbineSecurityException if there is a problem while assigning
231      * the Permission.
232      */
233     public void grant(Permission permission)
234         throws TurbineSecurityException
235     {
236         TurbineSecurity.grant(this, permission);
237     }
238 
239     /***
240      * Grants Permissions from a PermissionSet to this Role.
241      *
242      * @param permissionSet A PermissionSet.
243      * @throws TurbineSecurityException if there is a problem while assigning
244      * the Permissions.
245      */
246     public void grant(PermissionSet permissionSet)
247         throws TurbineSecurityException
248     {
249         Iterator permissions = permissionSet.iterator();
250         while (permissions.hasNext())
251         {
252             TurbineSecurity.grant(this, (Permission) permissions.next());
253         }
254     }
255 
256     /***
257      * Revokes a Permission from this Role.
258      *
259      * @param permission A Permission.
260      * @throws TurbineSecurityException if there is a problem while unassigning
261      * the Permission.
262      */
263     public void revoke(Permission permission)
264         throws TurbineSecurityException
265     {
266         TurbineSecurity.revoke(this, permission);
267     }
268 
269     /***
270      * Revokes Permissions from a PermissionSet from this Role.
271      *
272      * @param permissionSet A PermissionSet.
273      * @throws TurbineSecurityException if there is a problem while unassigning
274      * the Permissions.
275      */
276     public void revoke(PermissionSet permissionSet)
277         throws TurbineSecurityException
278     {
279         Iterator permissions = permissionSet.iterator();
280         while (permissions.hasNext())
281         {
282             TurbineSecurity.revoke(this, (Permission) permissions.next());
283         }
284     }
285 }