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