1
2
3
4
5
6 package fr.ifremer.quadrige2.core.dao.administration.user;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import com.google.common.base.Preconditions;
32 import com.google.common.collect.Lists;
33 import fr.ifremer.quadrige2.core.dao.referential.Privilege;
34 import fr.ifremer.quadrige2.core.dao.referential.PrivilegeImpl;
35 import fr.ifremer.quadrige2.core.dao.referential.StatusImpl;
36 import fr.ifremer.quadrige2.core.vo.administration.user.*;
37 import org.apache.commons.collections.CollectionUtils;
38 import org.apache.commons.lang3.ArrayUtils;
39 import org.hibernate.SessionFactory;
40 import org.hibernate.type.IntegerType;
41 import org.springframework.beans.factory.annotation.Autowired;
42 import org.springframework.context.annotation.Lazy;
43 import org.springframework.dao.DataRetrievalFailureException;
44 import org.springframework.stereotype.Repository;
45
46 import java.util.Collection;
47 import java.util.HashSet;
48 import java.util.List;
49 import java.util.Objects;
50
51
52
53
54
55
56
57
58 @Repository("quserDao")
59 @Lazy
60 public class QuserDaoImpl
61 extends QuserDaoBase
62 implements QuserExtendDao {
63
64
65
66
67
68
69
70 @Autowired
71 public QuserDaoImpl(SessionFactory sessionFactory) {
72 super();
73 setSessionFactory(sessionFactory);
74 }
75
76
77 @Override
78 public QuserVO save(QuserVO bean) {
79 Preconditions.checkNotNull(bean);
80
81 Quser entity = null;
82 if (bean.getQuserId() != null) {
83 entity = load(bean.getQuserId());
84 }
85
86
87 if (entity == null) {
88 entity = Quser.Factory.newInstance();
89
90
91 toEntity(bean, entity);
92
93
94 entity = create(entity);
95
96
97 bean.setQuserId(entity.getQuserId());
98 }
99
100
101 else {
102
103
104 toEntity(bean, entity);
105
106
107 update(entity);
108 }
109
110 return bean;
111 }
112
113
114 @Override
115 public Integer getDepartmentIdByUserId(int userId) {
116 Integer recorderDepartmentId = queryUniqueTyped("departmentIdByQuserId",
117 "quserId", IntegerType.INSTANCE, userId);
118 if (recorderDepartmentId == null) {
119 throw new DataRetrievalFailureException(String.format("Could not load departmentId from quser [quserId=%s]", userId));
120 }
121 return recorderDepartmentId;
122 }
123
124
125 @Override
126 public List<String> getPrivilegeCodesByUserId(int quserId) {
127 return queryListTyped("privilegeCodesByQuserId", "quserId", IntegerType.INSTANCE, quserId);
128 }
129
130
131 @Override
132 public void remove(Collection<Quser> entities) {
133 if (entities == null)
134 {
135 throw new IllegalArgumentException(
136 "Quser.remove - 'entities' can not be null");
137 }
138 for (Quser entity : entities) {
139 remove(entity);
140 }
141 }
142
143
144 @Override
145 public void remove(Quser entity) {
146 if (entity == null)
147 {
148 throw new IllegalArgumentException(
149 "Quser.remove - 'entity' can not be null");
150 }
151
152
153 if (CollectionUtils.isNotEmpty(entity.getPrivileges())) {
154 entity.getPrivileges().clear();
155 }
156
157 getSession().delete(entity);
158 }
159
160
161 @Override
162 public Quser lightQuserVOToEntity(LightQuserVO source) {
163 Quser target;
164 if (source.getId() > 0) {
165 target = load(source.getId());
166 }
167 else {
168 target = Quser.Factory.newInstance();
169 }
170 toEntity(source, target);
171
172 return target;
173 }
174
175
176 @Override
177 public Quser quserVOToEntity(QuserVO source) {
178 Quser target;
179 if (source.getQuserId() != null) {
180 target = load(source.getQuserId());
181 }
182 else {
183 target = Quser.Factory.newInstance();
184 }
185
186 toEntity(source, target);
187
188 return target;
189 }
190
191
192
193
194
195
196
197
198
199
200
201
202
203 protected void toEntity(QuserVO source, Quser target) {
204
205 target.setQuserId(source.getQuserId());
206 target.setQuserLastNm(source.getQuserLastNm());
207 target.setQuserFirstNm(source.getQuserFirstNm());
208 target.setQuserIntranetLg(source.getQuserIntranetLg());
209 target.setQuserExtranetLg(source.getQuserExtranetLg());
210 target.setQuserCreationDt(source.getQuserCreationDt());
211 target.setUpdateDt(source.getUpdateDt());
212 target.setQuserEMail(source.getQuserEMail());
213 target.setQuserAddress(source.getQuserAddress());
214 target.setQuserPhone(source.getQuserPhone());
215 target.setQuserOrgan(source.getQuserOrgan());
216 target.setQuserAdminCenter(source.getQuserAdminCenter());
217 target.setQuserSite(source.getQuserSite());
218 target.setQuserLdapPresent(source.getQuserLdapPresent());
219
220
221 Integer sourceDepartmentId = source.getDepId();
222 DepartmentVO sourceDepartment = source.getDepartment();
223 if (sourceDepartmentId == null && sourceDepartment != null) {
224 sourceDepartmentId = sourceDepartment.getDepId();
225 }
226
227
228 if (sourceDepartmentId == null) {
229 target.setDepartment(null);
230 }
231 else {
232 target.setDepartment(load(DepartmentImpl.class, sourceDepartmentId));
233 }
234
235
236 if (source.getStatusCd() == null) {
237 target.setStatus(null);
238 }
239 else {
240 target.setStatus(load(StatusImpl.class, source.getStatusCd()));
241 }
242
243
244 PrivilegeVO[] sourcePrivileges = source.getPrivileges();
245 if (ArrayUtils.isEmpty(sourcePrivileges)) {
246 if (target.getPrivileges() != null) {
247 target.getPrivileges().clear();
248 }
249 }
250 else {
251
252 if (CollectionUtils.isEmpty(target.getPrivileges())) {
253 if (target.getPrivileges() == null) {
254 target.setPrivileges(new HashSet<Privilege>());
255 }
256 for (PrivilegeVO sourcePrivilege : sourcePrivileges) {
257 Privilege privilege = load(PrivilegeImpl.class, sourcePrivilege.getPrivilegeCd());
258 target.getPrivileges().add(privilege);
259 }
260 }
261
262
263 else {
264 List<Privilege> privilegesToRemove = Lists.newArrayList(target.getPrivileges());
265
266 for (PrivilegeVO sourcePrivilege : sourcePrivileges) {
267 boolean alreadyExist = false;
268 for (Privilege existingPrivilege : target.getPrivileges()) {
269
270
271 if (Objects.equals(existingPrivilege.getPrivilegeCd(), sourcePrivilege.getPrivilegeCd())) {
272 privilegesToRemove.remove(existingPrivilege);
273 alreadyExist = true;
274 }
275 }
276
277
278 if (!alreadyExist) {
279 Privilege privilege = load(PrivilegeImpl.class, sourcePrivilege.getPrivilegeCd());
280 target.getPrivileges().add(privilege);
281 }
282 }
283
284
285 if (CollectionUtils.isNotEmpty(privilegesToRemove)) {
286 target.getPrivileges().removeAll(privilegesToRemove);
287 }
288 }
289 }
290 }
291
292
293
294
295
296
297
298
299
300
301
302 protected void toEntity(LightQuserVO source, Quser target) {
303
304 target.setQuserId(source.getId());
305 target.setQuserLastNm(source.getLastname());
306 target.setQuserFirstNm(source.getFirstname());
307
308 }
309 }