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    }