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.HashSet;
22 import java.util.List;
23 import java.util.Set;
24
25 import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
26 import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
27 import org.apache.fulcrum.security.torque.om.TurbineGroupPeer;
28 import org.apache.fulcrum.security.torque.om.TurbineUserGroupRolePeer;
29 import org.apache.fulcrum.security.torque.peer.TurbineUserGroupRoleModelPeerMapper;
30 import org.apache.fulcrum.security.torque.security.turbine.TorqueAbstractTurbineTurbineSecurityEntity;
31 import org.apache.fulcrum.security.util.DataBackendException;
32 import org.apache.torque.TorqueException;
33 import org.apache.torque.criteria.Criteria;
34 import org.apache.torque.om.SimpleKey;
35 import org.apache.torque.util.Transaction;
36
37
38
39
40
41
42 public abstract class DefaultAbstractTurbineGroup extends TorqueAbstractTurbineTurbineSecurityEntity
43 implements TurbineGroup
44 {
45
46 private static final long serialVersionUID = -6230312046016785990L;
47
48
49
50
51
52
53
54
55
56
57
58
59
60 protected <T extends TurbineUserGroupRoleModelPeerMapper> List<T> getTurbineUserGroupRolesJoinTurbineRole(Criteria criteria, Connection con)
61 throws TorqueException, DataBackendException
62 {
63 criteria.and(TurbineUserGroupRolePeer.GROUP_ID, getEntityId() );
64 return (List<T>) TurbineUserGroupRolePeer.doSelectJoinTurbineRole(criteria, con);
65 }
66
67 @Override
68 public void retrieveAttachedObjects( Connection con )
69 throws DataBackendException
70 {
71 retrieveAttachedObjects( con, false );
72 }
73
74
75
76
77 @Override
78 public void retrieveAttachedObjects( Connection con, Boolean lazy ) throws DataBackendException
79 {
80 try {
81 if (!lazy) {
82 Set<TurbineUserGroupRole> userGroupRoleSet = new HashSet<TurbineUserGroupRole>();
83
84 List<TurbineUserGroupRoleModelPeerMapper> ugrs = getTurbineUserGroupRolesJoinTurbineRole(new Criteria(), con);
85
86 for (TurbineUserGroupRoleModelPeerMapper ttugr : ugrs)
87 {
88 TurbineUserGroupRolee/om/TurbineUserGroupRole.html#TurbineUserGroupRole">TurbineUserGroupRole ugr = new TurbineUserGroupRole();
89 ugr.setGroup(this);
90 ugr.setRole(ttugr.getTurbineRole());
91 ugr.setUser(ttugr.getTurbineUser(con));
92 userGroupRoleSet.add(ugr);
93 }
94 setUserGroupRoleSet(userGroupRoleSet);
95 }
96 } catch (TorqueException e ) {
97 throw new DataBackendException( e.getMessage(),e );
98 }
99 }
100
101
102
103
104
105 @Override
106 public <T extends TurbineUserGroupRole> Set<T> getUserGroupRoleSet() throws DataBackendException
107 {
108 if (super.getUserGroupRoleSet() == null || super.getUserGroupRoleSet().isEmpty()) {
109 Connection con = null;
110 try
111 {
112 con = Transaction.begin();
113
114 retrieveAttachedObjects( con, false );
115
116 Transaction.commit(con);
117 con = null;
118 }
119 catch (TorqueException e)
120 {
121 throw new DataBackendException("Error retrieving group information", e);
122 }
123 finally
124 {
125 if (con != null)
126 {
127 Transaction.safeRollback(con);
128 }
129 }
130 }
131
132 return super.getUserGroupRoleSet();
133
134 }
135
136
137
138
139 @Override
140 public void update(Connection con) throws TorqueException
141 {
142 try
143 {
144 Set<TurbineUserGroupRole> userGroupRoleSet = getUserGroupRoleSet();
145 if (userGroupRoleSet != null && !userGroupRoleSet.isEmpty())
146 {
147 Criteria criteria = new Criteria();
148
149
150 criteria.where(TurbineUserGroupRolePeer.GROUP_ID, getEntityId());
151 TurbineUserGroupRolePeer.doDelete(criteria, con);
152
153 for (TurbineUserGroupRole ugr : userGroupRoleSet)
154 {
155 org.apache.fulcrum.security.torque.om.TurbineUserGroupRole ttugr = new org.apache.fulcrum.security.torque.om.TurbineUserGroupRole();
156 ttugr.setGroupId((Integer)ugr.getGroup().getId());
157 ttugr.setUserId((Integer)ugr.getUser().getId());
158 ttugr.setRoleId((Integer)ugr.getRole().getId());
159 ttugr.save(con);
160 }
161 }
162 save(con);
163 }
164 catch (Exception e)
165 {
166 throw new TorqueException(e);
167 }
168 }
169
170
171
172
173 @Override
174 public void delete() throws TorqueException
175 {
176 TurbineGroupPeer.doDelete(SimpleKey.keyFor(getEntityId()));
177 }
178 }