1 package org.apache.fulcrum.security.torque.dynamic;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.sql.Connection;
22 import java.util.List;
23 import java.util.Set;
24
25 import org.apache.fulcrum.security.entity.Group;
26 import org.apache.fulcrum.security.entity.User;
27 import org.apache.fulcrum.security.model.dynamic.entity.DynamicUser;
28 import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegates;
29 import org.apache.fulcrum.security.torque.om.TorqueDynamicUserDelegatesPeer;
30 import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroup;
31 import org.apache.fulcrum.security.torque.om.TorqueDynamicUserGroupPeer;
32 import org.apache.fulcrum.security.torque.om.TorqueDynamicUserPeer;
33 import org.apache.fulcrum.security.torque.security.TorqueAbstractSecurityEntity;
34 import org.apache.fulcrum.security.util.DataBackendException;
35 import org.apache.fulcrum.security.util.GroupSet;
36 import org.apache.fulcrum.security.util.UserSet;
37 import org.apache.torque.TorqueException;
38 import org.apache.torque.criteria.Criteria;
39 import org.apache.torque.om.SimpleKey;
40
41
42
43
44
45
46
47 public abstract class TorqueAbstractDynamicUser extends TorqueAbstractSecurityEntity implements DynamicUser {
48
49 private static final long serialVersionUID = -7307211992287876455L;
50
51
52 private Set<Group> groupSet = null;
53
54
55 private Set<User> delegators = null;
56
57
58 private Set<User> delegatees = null;
59
60
61
62
63
64
65
66
67
68
69
70
71
72 protected List<TorqueDynamicUserGroup> getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(Criteria criteria,
73 Connection con) throws TorqueException {
74 criteria.and(TorqueDynamicUserGroupPeer.USER_ID, getEntityId());
75 return TorqueDynamicUserGroupPeer.doSelectJoinTorqueDynamicGroup(criteria, con);
76 }
77
78
79
80
81
82
83
84
85
86
87
88
89
90 protected List<TorqueDynamicUserDelegates> getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
91 Criteria criteria, Connection con) throws TorqueException {
92 criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, getEntityId());
93 return TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegatorUserId(criteria, con);
94 }
95
96
97
98
99
100
101
102
103
104
105
106
107
108 protected List<TorqueDynamicUserDelegates> getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
109 Criteria criteria, Connection con) throws TorqueException {
110 criteria.and(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, getEntityId());
111 return TorqueDynamicUserDelegatesPeer.doSelectJoinTorqueDynamicUserRelatedByDelegateeUserId(criteria, con);
112 }
113
114
115
116
117
118
119
120
121 public void addGroup(Group group) {
122 getGroups().add(group);
123 }
124
125
126
127
128
129
130 public GroupSet getGroups() {
131 if (groupSet == null) {
132 groupSet = new GroupSet();
133 } else if (!(groupSet instanceof GroupSet)) {
134 groupSet = new GroupSet(groupSet);
135 }
136
137 return (GroupSet) groupSet;
138 }
139
140
141
142
143
144
145
146 @SuppressWarnings("unchecked")
147 public <T extends Group> Set<T> getGroupsAsSet() {
148 return (Set<T>) groupSet;
149 }
150
151
152
153
154
155
156
157
158 public void removeGroup(Group group) {
159 getGroups().remove(group);
160 }
161
162
163
164
165
166
167
168
169 public void setGroups(GroupSet groups) {
170 if (groups != null) {
171 this.groupSet = groups;
172 } else {
173 this.groupSet = new GroupSet();
174 }
175 }
176
177
178
179
180
181
182
183
184 public <T extends Group> void setGroupsAsSet(Set<T> groups) {
185 setGroups(new GroupSet(groups));
186 }
187
188
189
190
191
192
193
194 @SuppressWarnings("unchecked")
195 public <T extends User> Set<T> getDelegatees() {
196 if (delegatees == null) {
197 delegatees = new UserSet<T>();
198 }
199
200 return (Set<T>) delegatees;
201 }
202
203
204
205
206
207
208
209 @SuppressWarnings("unchecked")
210 public <T extends User> Set<T> getDelegators() {
211 if (delegators == null) {
212 delegators = new UserSet<T>();
213 }
214
215 return (Set<T>) delegators;
216 }
217
218
219
220
221
222
223
224
225 public <T extends User> void setDelegatees(Set<T> delegatees) {
226 if (delegatees != null) {
227 this.delegatees = new UserSet<T>(delegatees);
228 } else {
229 this.delegatees = new UserSet<T>();
230 }
231 }
232
233
234
235
236
237
238
239
240 public <T extends User> void setDelegators(Set<T> delegates) {
241 if (delegators != null) {
242 this.delegators = new UserSet<T>(delegates);
243 } else {
244 this.delegators = new UserSet<T>();
245 }
246 }
247
248
249
250
251 public String getDatabaseName() {
252 return TorqueDynamicUserPeer.DATABASE_NAME;
253 }
254
255
256
257
258
259
260
261
262 @Override
263 public void retrieveAttachedObjects(Connection con) throws DataBackendException {
264 retrieveAttachedObjects(con, false);
265 }
266
267
268
269
270
271 @Override
272 public void retrieveAttachedObjects(Connection con, Boolean lazy) throws DataBackendException {
273
274 this.groupSet = new GroupSet();
275
276 try {
277
278 List<TorqueDynamicUserGroup> usergroups = getTorqueDynamicUserGroupsJoinTorqueDynamicGroup(new Criteria(), con);
279
280 for (TorqueDynamicUserGroup tdug : usergroups) {
281 groupSet.add(tdug.getTorqueDynamicGroup());
282 }
283
284 this.delegators = new UserSet<User>();
285
286 List<TorqueDynamicUserDelegates> delegatorlist = getTorqueDynamicUserDelegatessRelatedByDelegateeUserIdJoinTorqueDynamicUserRelatedByDelegatorUserId(
287 new Criteria(), con);
288
289 for (TorqueDynamicUserDelegates tdud : delegatorlist) {
290 delegators.add(tdud.getTorqueDynamicUserRelatedByDelegatorUserId());
291 }
292
293 this.delegatees = new UserSet<User>();
294
295 List<TorqueDynamicUserDelegates> delegateelist = getTorqueDynamicUserDelegatessRelatedByDelegatorUserIdJoinTorqueDynamicUserRelatedByDelegateeUserId(
296 new Criteria(), con);
297
298 for (TorqueDynamicUserDelegates tdud : delegateelist) {
299 delegatees.add(tdud.getTorqueDynamicUserRelatedByDelegateeUserId());
300 }
301
302 } catch (TorqueException e ) {
303 throw new DataBackendException( e.getMessage(),e );
304 }
305 }
306
307
308
309
310 public void update(Connection con) throws TorqueException {
311 if (groupSet != null) {
312 Criteria criteria = new Criteria();
313
314
315 criteria.where(TorqueDynamicUserGroupPeer.USER_ID, getEntityId());
316 TorqueDynamicUserGroupPeer.doDelete(criteria, con);
317
318 for (Group g : groupSet) {
319 TorqueDynamicUserGroup/om/TorqueDynamicUserGroup.html#TorqueDynamicUserGroup">TorqueDynamicUserGroup ug = new TorqueDynamicUserGroup();
320 ug.setUserId(getEntityId());
321 ug.setGroupId((Integer) g.getId());
322 ug.save(con);
323 }
324 }
325
326 if (delegators != null) {
327 Criteria criteria = new Criteria();
328
329
330 criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATEE_USER_ID, getEntityId());
331 TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
332
333 for (User u : delegators) {
334 TorqueDynamicUserDelegatesTorqueDynamicUserDelegates.html#TorqueDynamicUserDelegates">TorqueDynamicUserDelegates ud = new TorqueDynamicUserDelegates();
335 ud.setDelegateeUserId(getEntityId());
336 ud.setDelegatorUserId((Integer) u.getId());
337 ud.save(con);
338 }
339 }
340
341 if (delegatees != null) {
342 Criteria criteria = new Criteria();
343
344
345 criteria.where(TorqueDynamicUserDelegatesPeer.DELEGATOR_USER_ID, getEntityId());
346 TorqueDynamicUserDelegatesPeer.doDelete(criteria, con);
347
348 for (User u : delegatees) {
349 TorqueDynamicUserDelegatesTorqueDynamicUserDelegates.html#TorqueDynamicUserDelegates">TorqueDynamicUserDelegates ud = new TorqueDynamicUserDelegates();
350 ud.setDelegatorUserId(getEntityId());
351 ud.setDelegateeUserId((Integer) u.getId());
352 ud.save(con);
353 }
354 }
355
356 try {
357 save(con);
358 } catch (Exception e) {
359 throw new TorqueException(e);
360 }
361 }
362
363
364
365
366 public void delete() throws TorqueException {
367 TorqueDynamicUserPeer.doDelete(SimpleKey.keyFor(getEntityId()));
368 }
369 }