1 package fr.ifremer.dali.service;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import fr.ifremer.dali.decorator.DecoratorService;
27 import fr.ifremer.dali.dto.configuration.context.ContextDTO;
28 import fr.ifremer.dali.dto.configuration.filter.FilterDTO;
29 import fr.ifremer.dali.dto.enums.FilterTypeValues;
30 import fr.ifremer.dali.service.administration.campaign.CampaignService;
31 import fr.ifremer.dali.service.administration.context.ContextService;
32 import fr.ifremer.dali.service.administration.program.ProgramStrategyService;
33 import fr.ifremer.dali.service.administration.user.UserService;
34 import fr.ifremer.dali.service.control.ControlRuleService;
35 import fr.ifremer.dali.service.control.RuleListService;
36 import fr.ifremer.dali.service.extraction.ExtractionPerformService;
37 import fr.ifremer.dali.service.extraction.ExtractionService;
38 import fr.ifremer.dali.service.observation.ObservationService;
39 import fr.ifremer.dali.service.persistence.PersistenceService;
40 import fr.ifremer.dali.service.referential.ReferentialService;
41 import fr.ifremer.dali.service.system.SystemService;
42 import fr.ifremer.quadrige3.core.dao.technical.Assert;
43 import fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority;
44 import fr.ifremer.quadrige3.core.security.SecurityContext;
45 import fr.ifremer.quadrige3.core.security.SecurityContextHelper;
46 import fr.ifremer.quadrige3.synchro.service.client.SynchroHistoryService;
47 import org.apache.commons.collections4.CollectionUtils;
48 import org.jdesktop.beans.AbstractBean;
49
50 import java.io.Closeable;
51 import java.util.Objects;
52
53
54
55
56
57
58
59
60 public class DaliDataContext extends AbstractBean implements Closeable, SecurityContext {
61
62
63 public static final String PROPERTY_CONTEXT = "context";
64
65
66 private static final DaliDataContext INSTANCE = new DaliDataContext();
67
68
69
70 private Integer recorderPersonId;
71
72
73
74 private Integer recorderDepartmentId;
75
76
77
78 private ContextDTO context;
79
80
81
82
83 private DaliDataContext() {
84
85 }
86
87
88
89
90
91
92 public static DaliDataContext instance() {
93 return INSTANCE;
94 }
95
96
97 @Override
98 public void close() {
99 clearContext();
100 }
101
102
103
104
105 public void clearContext() {
106 clearContext(false);
107 }
108
109
110
111
112 public void clearContextKeepRecorderPerson() {
113 clearContext(true);
114 }
115
116 private void clearContext(boolean keepRecorderPerson) {
117 if (!keepRecorderPerson) {
118 setRecorderPersonId(null);
119 }
120
121
122 resetLocalCache();
123 }
124
125
126
127
128 public void resetLocalCache() {
129
130 }
131
132
133
134
135
136
137
138
139
140 public boolean isRecorderPersonFilled() {
141 return recorderPersonId != null;
142 }
143
144
145
146
147
148
149 public Integer getRecorderPersonId() {
150 return recorderPersonId;
151 }
152
153
154
155
156
157
158 public void setRecorderPersonId(Integer recorderPersonId) {
159 this.recorderPersonId = recorderPersonId;
160 this.recorderDepartmentId = null;
161 }
162
163
164 @Override
165 public int getPrincipalUserId() {
166 return getRecorderPersonId();
167 }
168
169
170
171
172
173
174
175
176
177 public boolean isRecorderDepartmentFilled() {
178 return recorderDepartmentId != null;
179 }
180
181
182
183
184
185
186 public Integer getRecorderDepartmentId() {
187 if (recorderDepartmentId == null && recorderPersonId != null) {
188 recorderDepartmentId = getUserService().getDepartmentIdByUserId(recorderPersonId);
189 }
190 return recorderDepartmentId;
191 }
192
193
194
195
196
197
198 public void setRecorderDepartmentId(Integer recorderDepartmentId) {
199
200 this.recorderDepartmentId = recorderDepartmentId;
201
202 }
203
204
205
206
207
208
209 public boolean isRecorderValidator() {
210 return SecurityContextHelper.hasAuthority(QuadrigeUserAuthority.VALIDATOR);
211 }
212
213
214
215
216
217
218 public boolean isRecorderQualifier() {
219 return SecurityContextHelper.hasAuthority(QuadrigeUserAuthority.QUALIFIER);
220 }
221
222
223
224
225
226
227 public ContextDTO getContext() {
228 return context;
229 }
230
231
232
233
234
235
236 public void setContext(ContextDTO context) {
237 ContextDTO oldContext = getContext();
238 this.context = context;
239 firePropertyChange(PROPERTY_CONTEXT, oldContext, context);
240 }
241
242
243
244
245
246
247 public int getContextId() {
248 Assert.notNull(getContext());
249 return getContext().getId();
250 }
251
252
253
254
255
256
257
258 public boolean isContextFiltered(FilterTypeValues contextFilter) {
259 Assert.notNull(contextFilter);
260 if (getContext() == null || CollectionUtils.isEmpty(getContext().getFilters())) {
261 return false;
262 }
263 for (FilterDTO filter : getContext().getFilters()) {
264 if (Objects.equals(filter.getFilterTypeId(), contextFilter.getFilterTypeId())) {
265 return true;
266 }
267 }
268 return false;
269 }
270
271
272
273
274
275
276
277
278
279
280
281 public DecoratorService getDecoratorService() {
282 return DaliServiceLocator.instance().getDecoratorService();
283 }
284
285
286
287
288
289
290 public SystemService getSystemService() {
291 return DaliServiceLocator.instance().getSystemService();
292 }
293
294
295
296
297
298
299 public ReferentialService getReferentialService() {
300 return DaliServiceLocator.instance().getReferentialService();
301 }
302
303
304
305
306
307
308 public ObservationService getObservationService() {
309 return DaliServiceLocator.instance().getObservationService();
310 }
311
312
313
314
315
316
317 public ExtractionService getExtractionService() {
318 return DaliServiceLocator.instance().getExtractionService();
319 }
320
321
322
323
324
325
326 public ExtractionPerformService getExtractionPerformService() {
327 return DaliServiceLocator.instance().getExtractionPerformService();
328 }
329
330
331
332
333
334
335 public PersistenceService getPersistenceService() {
336 return DaliServiceLocator.instance().getPersistenceService();
337 }
338
339
340
341
342
343
344 public UserService getUserService() {
345 return DaliServiceLocator.instance().getUserService();
346 }
347
348
349
350
351
352
353 public SynchroHistoryService getSynchroHistoryService() {
354 return DaliServiceLocator.instance().getSynchroHistoryService();
355 }
356
357
358
359
360
361
362 public ProgramStrategyService getProgramStrategyService() {
363 return DaliServiceLocator.instance().getProgramStrategyService();
364 }
365
366
367
368
369
370
371 public ContextService getContextService() {
372 return DaliServiceLocator.instance().getContextService();
373 }
374
375
376
377
378
379
380 public ControlRuleService getRulesControlService() {
381 return DaliServiceLocator.instance().getRulesControlService();
382 }
383
384 public RuleListService getRuleListService() {
385 return DaliServiceLocator.instance().getRuleListService();
386 }
387
388 public CampaignService getCampaignService() {
389 return DaliServiceLocator.instance().getCampaignService();
390 }
391 }