001 package org.apache.turbine.om.security;
002
003
004 /*
005 * Licensed to the Apache Software Foundation (ASF) under one
006 * or more contributor license agreements. See the NOTICE file
007 * distributed with this work for additional information
008 * regarding copyright ownership. The ASF licenses this file
009 * to you under the Apache License, Version 2.0 (the
010 * "License"); you may not use this file except in compliance
011 * with the License. You may obtain a copy of the License at
012 *
013 * http://www.apache.org/licenses/LICENSE-2.0
014 *
015 * Unless required by applicable law or agreed to in writing,
016 * software distributed under the License is distributed on an
017 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
018 * KIND, either express or implied. See the License for the
019 * specific language governing permissions and limitations
020 * under the License.
021 */
022
023
024 import java.sql.Connection;
025 import java.util.Iterator;
026
027 import org.apache.turbine.services.security.TurbineSecurity;
028 import org.apache.turbine.util.security.RoleSet;
029 import org.apache.turbine.util.security.TurbineSecurityException;
030
031 /**
032 * This class represents a Group of Users in the system that are associated
033 * with specific entity or resource. The users belonging to the Group may have
034 * various Roles. The Permissions to perform actions upon the resource depend
035 * on the Roles in the Group that they are assigned.
036 *
037 * <a name="global">
038 * <p> Certain Roles that the Users may have in the system may are not related
039 * to any specific resource nor entity.
040 * They are assigned within a special group named 'global' that can be
041 * referenced in the code as {@link #GLOBAL_GROUP_NAME}.
042 * <br>
043 *
044 * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
045 * @version $Id: TurbineGroup.java 1078552 2011-03-06 19:58:46Z tv $
046 */
047 public class TurbineGroup extends SecurityObject<Group> implements Group
048 {
049 /** Serial version */
050 private static final long serialVersionUID = -6034684697021752649L;
051
052 /**
053 * Constructs a new Group.
054 */
055 public TurbineGroup()
056 {
057 super();
058 }
059
060 /**
061 * Constructs a new Group with the specified name.
062 *
063 * @param name The name of the new object.
064 */
065 public TurbineGroup(String name)
066 {
067 super(name);
068 }
069
070 // These following methods are wrappers around TurbineSecurity
071
072 /**
073 * Makes changes made to the Group attributes permanent.
074 *
075 * @throws TurbineSecurityException if there is a problem while saving data.
076 */
077 public void save() throws TurbineSecurityException
078 {
079 TurbineSecurity.saveGroup(this);
080 }
081
082 /**
083 * not implemented
084 *
085 * @param conn
086 * @throws Exception
087 */
088 public void save(Connection conn) throws Exception
089 {
090 throw new Exception("not implemented");
091 }
092
093 /**
094 * not implemented
095 *
096 * @param dbname
097 * @throws Exception
098 */
099 public void save(String dbname) throws Exception
100 {
101 throw new Exception("not implemented");
102 }
103
104 /**
105 * Removes a group from the system.
106 *
107 * @throws TurbineSecurityException if the Group could not be removed.
108 */
109 public void remove() throws TurbineSecurityException
110 {
111 TurbineSecurity.removeGroup(this);
112 }
113
114 /**
115 * Renames the role.
116 *
117 * @param name The new Group name.
118 * @throws TurbineSecurityException if the Group could not be renamed.
119 */
120 public void rename(String name) throws TurbineSecurityException
121 {
122 TurbineSecurity.renameGroup(this, name);
123 }
124
125 /**
126 * Grants a Role in this Group to an User.
127 *
128 * @param user An User.
129 * @param role A Role.
130 * @throws TurbineSecurityException if there is a problem while assigning
131 * the Role.
132 */
133 public void grant(User user, Role role) throws TurbineSecurityException
134 {
135 TurbineSecurity.grant(user, this, role);
136 }
137
138 /**
139 * Grants Roles in this Group to an User.
140 *
141 * @param user An User.
142 * @param roleSet A RoleSet.
143 * @throws TurbineSecurityException if there is a problem while assigning
144 * the Roles.
145 */
146 public void grant(User user, RoleSet roleSet)
147 throws TurbineSecurityException
148 {
149 for (Iterator roles = roleSet.iterator(); roles.hasNext();)
150 {
151 TurbineSecurity.grant(user, this, (Role) roles.next());
152 }
153 }
154
155 /**
156 * Revokes a Role in this Group from an User.
157 *
158 * @param user An User.
159 * @param role A Role.
160 * @throws TurbineSecurityException if there is a problem while unassigning
161 * the Role.
162 */
163 public void revoke(User user, Role role) throws TurbineSecurityException
164 {
165 TurbineSecurity.revoke(user, this, role);
166 }
167
168 /**
169 * Revokes Roles in this group from an User.
170 *
171 * @param user An User.
172 * @param roleSet a RoleSet.
173 * @throws TurbineSecurityException if there is a problem while unassigning
174 * the Roles.
175 */
176 public void revoke(User user, RoleSet roleSet)
177 throws TurbineSecurityException
178 {
179 for (Iterator roles = roleSet.iterator(); roles.hasNext();)
180 {
181 TurbineSecurity.revoke(user, this, (Role) roles.next());
182 }
183 }
184 }