001    package org.apache.turbine.services.security.torque;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import org.apache.torque.om.Persistent;
023    
024    import org.apache.turbine.om.security.Permission;
025    import org.apache.turbine.services.security.TurbineSecurity;
026    import org.apache.turbine.util.security.TurbineSecurityException;
027    
028    /**
029     * This class represents a permission given to a Role associated with the
030     * current Session. It is separated from the actual Torque peer object
031     * to be able to replace the Peer with an user supplied Peer (and Object)
032     *
033     * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
034     * @author <a href="mailto:jmcnally@collab.net">John D. McNally</a>
035     * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
036     * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
037     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
038     * @version $Id: TorquePermission.java 534527 2007-05-02 16:10:59Z tv $
039     */
040    
041    public class TorquePermission
042        extends TorqueObject
043        implements Permission,
044                   Comparable
045    {
046    
047            private static final long serialVersionUID = -5524685597021445523L;
048    
049        /**
050         * Constructs a Permission
051         */
052        public TorquePermission()
053        {
054          super();
055        }
056    
057        /**
058         * Constructs a new Permission with the sepcified name.
059         *
060         * @param name The name of the new object.
061         */
062        public TorquePermission(String name)
063        {
064            super(name);
065        }
066    
067        /**
068         * The package private Constructor is used when the PermissionPeerManager
069         * has retrieved a list of Database Objects from the peer and
070         * must 'wrap' them into TorquePermission Objects.
071         * You should not use it directly!
072         *
073         * @param obj An Object from the peer
074         */
075    
076        public TorquePermission(Persistent obj)
077        {
078            super(obj);
079        }
080    
081        /**
082         * Returns the underlying Object for the Peer
083         *
084         * Used in the PermissionPeerManager when building a new Criteria.
085         *
086         * @return The underlying Persistent Object
087         *
088         */
089    
090        public Persistent getPersistentObj()
091        {
092            if (obj == null)
093            {
094                obj = PermissionPeerManager.newPersistentInstance();
095            }
096            return obj;
097        }
098    
099        /**
100         * Returns the name of this object.
101         *
102         * @return The name of the object.
103         */
104        public String getName()
105        {
106            return PermissionPeerManager.getPermissionName(getPersistentObj());
107        }
108    
109        /**
110         * Sets the name of this object.
111         *
112         * @param name The name of the object.
113         */
114        public void setName(String name)
115        {
116            PermissionPeerManager.setPermissionName(getPersistentObj(), name);
117        }
118    
119        /**
120         * Gets the Id of this object
121         *
122         * @return The Id of the object
123         */
124        public int getId()
125        {
126            return PermissionPeerManager.getIdAsObj(getPersistentObj()).intValue();
127        }
128    
129        /**
130         * Gets the Id of this object
131         *
132         * @return The Id of the object
133         */
134        public Integer getIdAsObj()
135        {
136            return PermissionPeerManager.getIdAsObj(getPersistentObj());
137        }
138    
139        /**
140         * Sets the Id of this object
141         *
142         * @param id The new Id
143         */
144        public void setId(int id)
145        {
146            PermissionPeerManager.setId(getPersistentObj(), id);
147        }
148    
149        /**
150         * Creates a new Permission in the system.
151         *
152         * @param name The name of the new Permission.
153         * @return An object representing the new Permission.
154         * @throws TurbineSecurityException if the Permission could not be created.
155         * @deprecated Please use the createPermission method in TurbineSecurity.
156         */
157        public static Permission create(String name)
158            throws TurbineSecurityException
159        {
160            return TurbineSecurity.createPermission(name);
161        }
162    
163        /**
164         * Makes changes made to the Permission attributes permanent.
165         *
166         * @throws TurbineSecurityException if there is a problem while
167         *  saving data.
168         */
169        public void save()
170            throws TurbineSecurityException
171        {
172            TurbineSecurity.savePermission(this);
173        }
174    
175        /**
176         * Removes a permission from the system.
177         *
178         * @throws TurbineSecurityException if the Permission could not be removed.
179         */
180        public void remove()
181            throws TurbineSecurityException
182        {
183            TurbineSecurity.removePermission(this);
184        }
185    
186        /**
187         * Renames the permission.
188         *
189         * @param name The new Permission name.
190         * @throws TurbineSecurityException if the Permission could not be renamed.
191         */
192        public void rename(String name)
193            throws TurbineSecurityException
194        {
195            TurbineSecurity.renamePermission(this, name);
196        }
197    }
198    
199    
200