1 package org.apache.fulcrum.security.torque.turbine;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.sql.Connection;
21 import java.util.List;
22 import java.util.Set;
23
24 import org.apache.fulcrum.security.entity.Role;
25 import org.apache.fulcrum.security.model.turbine.entity.TurbinePermission;
26 import org.apache.fulcrum.security.torque.om.TorqueTurbinePermissionPeer;
27 import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermission;
28 import org.apache.fulcrum.security.torque.om.TorqueTurbineRolePermissionPeer;
29 import org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
30 import org.apache.fulcrum.security.util.DataBackendException;
31 import org.apache.fulcrum.security.util.RoleSet;
32 import org.apache.torque.TorqueException;
33 import org.apache.torque.criteria.Criteria;
34 import org.apache.torque.om.SimpleKey;
35
36
37
38
39
40
41 public abstract class FulcrumAbstractTurbinePermission extends TorqueAbstractSecurityEntity
42 implements TurbinePermission
43 {
44
45 private static final long serialVersionUID = -5313324873688923207L;
46
47
48 private Set<Role> roleSet = null;
49
50
51
52
53
54
55
56
57
58
59
60
61
62 protected List<TorqueTurbineRolePermission> getTorqueTurbineRolePermissionsJoinTorqueTurbineRole(Criteria criteria, Connection con)
63 throws TorqueException
64 {
65 criteria.and(TorqueTurbineRolePermissionPeer.PERMISSION_ID, getEntityId() );
66 return TorqueTurbineRolePermissionPeer.doSelectJoinTorqueTurbineRole(criteria, con);
67 }
68
69
70
71
72 public void addRole(Role role)
73 {
74 getRoles().add(role);
75 }
76
77
78
79
80 public RoleSet getRoles()
81 {
82 if (roleSet == null)
83 {
84 roleSet = new RoleSet();
85 }
86 else if(!(roleSet instanceof RoleSet))
87 {
88 roleSet = new RoleSet(roleSet);
89 }
90
91 return (RoleSet)roleSet;
92 }
93
94
95
96
97 @SuppressWarnings("unchecked")
98 public <T extends Role> Set<T> getRolesAsSet()
99 {
100 return (Set<T>)roleSet;
101 }
102
103
104
105
106 public void removeRole(Role role)
107 {
108 getRoles().remove(role);
109 }
110
111
112
113
114 public void setRoles(RoleSet roleSet)
115 {
116 if (roleSet != null)
117 {
118 this.roleSet = roleSet;
119 }
120 else
121 {
122 this.roleSet = new RoleSet();
123 }
124 }
125
126
127
128
129 public <T extends Role> void setRolesAsSet(Set<T> roles)
130 {
131 setRoles(new RoleSet(roles));
132 }
133
134
135
136
137 public String getDatabaseName()
138 {
139 return TorqueTurbinePermissionPeer.DATABASE_NAME;
140 }
141
142
143
144
145 @Override
146 public void retrieveAttachedObjects( Connection con )
147 throws DataBackendException
148 {
149 retrieveAttachedObjects( con, false );
150 }
151
152
153
154
155 @Override
156 public void retrieveAttachedObjects( Connection con, Boolean lazy )
157 throws DataBackendException
158 {
159 this.roleSet = new RoleSet();
160
161 try {
162 List<TorqueTurbineRolePermission> rolepermissions = getTorqueTurbineRolePermissionsJoinTorqueTurbineRole(new Criteria(), con);
163
164 for (TorqueTurbineRolePermission ttrp : rolepermissions)
165 {
166 roleSet.add(ttrp.getTorqueTurbineRole());
167 }
168 } catch (TorqueException e ) {
169 throw new DataBackendException( e.getMessage(),e );
170 }
171 }
172
173
174
175
176 public void update(Connection con) throws TorqueException
177 {
178 if (roleSet != null)
179 {
180 Criteria criteria = new Criteria();
181
182
183 criteria.where(TorqueTurbineRolePermissionPeer.PERMISSION_ID, getEntityId());
184 TorqueTurbineRolePermissionPeer.doDelete(criteria, con);
185
186 for (Role r : roleSet)
187 {
188 TorqueTurbineRolePermissionorqueTurbineRolePermission.html#TorqueTurbineRolePermission">TorqueTurbineRolePermission rp = new TorqueTurbineRolePermission();
189 rp.setRoleId((Integer)r.getId());
190 rp.setPermissionId(getEntityId());
191 rp.save(con);
192 }
193 }
194
195 try
196 {
197 save(con);
198 }
199 catch (Exception e)
200 {
201 throw new TorqueException(e);
202 }
203 }
204
205
206
207
208 public void delete() throws TorqueException
209 {
210 TorqueTurbinePermissionPeer.doDelete(SimpleKey.keyFor(getEntityId()));
211 }
212 }