1 package fr.ifremer.reefdb.service.referential;
2
3 /*
4 * #%L
5 * Reef DB :: Core
6 * $Id:$
7 * $HeadURL:$
8 * %%
9 * Copyright (C) 2014 - 2015 Ifremer
10 * %%
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Affero General Public License as published by
13 * the Free Software Foundation, either version 3 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Affero General Public License
22 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 * #L%
24 */
25
26 import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO;
27 import fr.ifremer.reefdb.dto.ParameterTypeDTO;
28 import fr.ifremer.reefdb.dto.configuration.filter.department.DepartmentCriteriaDTO;
29 import fr.ifremer.reefdb.dto.configuration.filter.location.LocationCriteriaDTO;
30 import fr.ifremer.reefdb.dto.configuration.filter.taxon.TaxonCriteriaDTO;
31 import fr.ifremer.reefdb.dto.configuration.filter.taxongroup.TaxonGroupCriteriaDTO;
32 import fr.ifremer.reefdb.dto.referential.*;
33 import fr.ifremer.reefdb.dto.referential.pmfm.*;
34 import fr.ifremer.reefdb.service.StatusFilter;
35 import org.springframework.security.access.prepost.PreAuthorize;
36 import org.springframework.transaction.annotation.Transactional;
37
38 import java.util.Collection;
39 import java.util.List;
40
41 /**
42 * Les sevices pour les donnees de reference.
43 */
44 @Transactional(readOnly = true)
45 public interface ReferentialService {
46
47 // ---------- SamplingEquipmentDTO ----------
48
49 /**
50 * La liste des engins du référentiel.
51 *
52 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
53 * @return La liste des engins
54 */
55 List<SamplingEquipmentDTO> getSamplingEquipments(StatusFilter statusFilter);
56
57 /**
58 * <p>saveSamplingEquipments.</p>
59 *
60 * @param samplingEquipments a {@link java.util.List} object.
61 */
62 @Transactional()
63 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
64 void saveSamplingEquipments(List<? extends SamplingEquipmentDTO> samplingEquipments);
65
66 /**
67 * <p>deleteSamplingEquipments.</p>
68 *
69 * @param samplingEquipmentIds a {@link java.util.List} object.
70 */
71 @Transactional()
72 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
73 void deleteSamplingEquipments(List<Integer> samplingEquipmentIds);
74
75 /**
76 * Check if this sampling equipment is used in data
77 * SAMPLING_OPERATION
78 *
79 * @param samplingEquipmentId a int.
80 * @return a boolean.
81 */
82 boolean isSamplingEquipmentUsedInData(int samplingEquipmentId);
83
84 /**
85 * <p>isSamplingEquipmentUsedInValidatedData.</p>
86 *
87 * @param samplingEquipmentId a int.
88 * @return a boolean.
89 */
90 boolean isSamplingEquipmentUsedInValidatedData(int samplingEquipmentId);
91
92 /**
93 * <p>replaceSamplingEquipment.</p>
94 *
95 * @param source a {@link fr.ifremer.reefdb.dto.referential.SamplingEquipmentDTO} object.
96 * @param target a {@link fr.ifremer.reefdb.dto.referential.SamplingEquipmentDTO} object.
97 * @param delete a boolean.
98 */
99 @Transactional()
100 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
101 void replaceSamplingEquipment(SamplingEquipmentDTO source, SamplingEquipmentDTO target, boolean delete);
102
103 /**
104 * The search service for sampling equipment
105 *
106 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
107 * @param samplingEquipmentId a {@link java.lang.Integer} object.
108 * @param statusCode a {@link java.lang.String} object.
109 * @param unitId a {@link java.lang.Integer} object.
110 * @return A list of sampling equipment
111 */
112 List<SamplingEquipmentDTO> searchSamplingEquipments(StatusFilter statusFilter, Integer samplingEquipmentId, String statusCode, Integer unitId);
113
114 /**
115 * <p>searchSamplingEquipments.</p>
116 *
117 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
118 * @param equipmentName a {@link java.lang.String} object.
119 * @param statusCode a {@link java.lang.String} object.
120 * @return a {@link java.util.List} object.
121 */
122 List<SamplingEquipmentDTO> searchSamplingEquipments(StatusFilter statusFilter, String equipmentName, String statusCode);
123
124 // ---------- UnitDTO ----------
125
126 /**
127 * La liste des unites du referential.
128 *
129 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
130 * @return La liste des unites du referential
131 */
132 List<UnitDTO> getUnits(StatusFilter statusFilter);
133
134 /**
135 * <p>saveUnits.</p>
136 *
137 * @param units a {@link java.util.List} object.
138 */
139 @Transactional()
140 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
141 void saveUnits(List<? extends UnitDTO> units);
142
143 /**
144 * <p>deleteUnits.</p>
145 *
146 * @param unitIds a {@link java.util.List} object.
147 */
148 @Transactional()
149 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
150 void deleteUnits(List<Integer> unitIds);
151
152 /**
153 * <p>isUnitUsedInReferential.</p>
154 *
155 * @param unitId a int.
156 * @return a boolean.
157 */
158 boolean isUnitUsedInReferential(int unitId);
159
160 /**
161 * <p>isUnitUsedInData.</p>
162 *
163 * @param unitId a int.
164 * @return a boolean.
165 */
166 boolean isUnitUsedInData(int unitId);
167
168 /**
169 * <p>isUnitUsedInValidatedData.</p>
170 *
171 * @param unitId a int.
172 * @return a boolean.
173 */
174 boolean isUnitUsedInValidatedData(int unitId);
175
176 /**
177 * <p>replaceUnit.</p>
178 *
179 * @param source a {@link fr.ifremer.reefdb.dto.referential.UnitDTO} object.
180 * @param target a {@link fr.ifremer.reefdb.dto.referential.UnitDTO} object.
181 * @param delete a boolean.
182 */
183 @Transactional()
184 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
185 void replaceUnit(UnitDTO source, UnitDTO target, boolean delete);
186
187 /**
188 * The search service for unit
189 *
190 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
191 * @param unitId a {@link java.lang.Integer} object.
192 * @param statusCode a {@link java.lang.String} object.
193 * @return A list of unit
194 */
195 List<UnitDTO> searchUnits(StatusFilter statusFilter, Integer unitId, String statusCode);
196
197 // ---------- PersonDTO ----------
198
199 /**
200 * wrapped method used in referential replacement
201 *
202 * @param person a {@link fr.ifremer.reefdb.dto.referential.PersonDTO} object.
203 * @return a {@link java.util.List} object.
204 */
205 List<PersonDTO> getUsersInSameDepartment(PersonDTO person);
206
207 /**
208 * <p>isUserUsedInProgram.</p>
209 *
210 * @param id a {@link java.lang.Integer} object.
211 * @return a boolean.
212 */
213 boolean isUserUsedInProgram(Integer id);
214
215 /**
216 * <p>isUserUsedInRules.</p>
217 *
218 * @param id a {@link java.lang.Integer} object.
219 * @return a boolean.
220 */
221 boolean isUserUsedInRules(Integer id);
222
223 /**
224 * <p>isUserUsedInValidatedData.</p>
225 *
226 * @param id a {@link java.lang.Integer} object.
227 * @return a boolean.
228 */
229 boolean isUserUsedInValidatedData(Integer id);
230
231 /**
232 * wrapped method used in referential replacement
233 *
234 * @param souce a {@link fr.ifremer.reefdb.dto.referential.PersonDTO} object.
235 * @param target a {@link fr.ifremer.reefdb.dto.referential.PersonDTO} object.
236 * @param delete a boolean.
237 */
238 @Transactional()
239 void replaceUser(PersonDTO souce, PersonDTO target, boolean delete);
240
241 // ---------- DepartmentDTO ----------
242
243 /**
244 * La liste des libelles pour la recherche d'une date (entre, avant, apres).
245 *
246 * @return La liste des valeurs
247 */
248 List<DepartmentDTO> getDepartments();
249
250 /**
251 * <p>getDepartments.</p>
252 *
253 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
254 * @return a {@link java.util.List} object.
255 */
256 List<DepartmentDTO> getDepartments(StatusFilter statusFilter);
257
258 /**
259 * <p>getDepartmentById.</p>
260 *
261 * @param departmentId a int.
262 * @return a {@link fr.ifremer.reefdb.dto.referential.DepartmentDTO} object.
263 */
264 DepartmentDTO getDepartmentById(int departmentId);
265
266 /**
267 * <p>saveDepartments.</p>
268 *
269 * @param departments a {@link List} object.
270 * @return a {@link java.util.List} object.
271 */
272 @Transactional()
273 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
274 void saveDepartments(List<DepartmentDTO> departments);
275
276 /**
277 * <p>deleteDepartments.</p>
278 *
279 * @param departmentIds a {@link java.util.List} object.
280 */
281 @Transactional()
282 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
283 void deleteDepartments(List<Integer> departmentIds);
284
285 /**
286 * <p>isDepartmentUsedInProgram.</p>
287 *
288 * @param departmentId a int.
289 * @return a boolean.
290 */
291 boolean isDepartmentUsedInProgram(int departmentId);
292
293 /**
294 * <p>isDepartmentUsedInRules.</p>
295 *
296 * @param departmentId a int.
297 * @return a boolean.
298 */
299 boolean isDepartmentUsedInRules(int departmentId);
300
301 /**
302 * <p>isDepartmentUsedInData.</p>
303 *
304 * @param departmentId a int.
305 * @return a boolean.
306 */
307 boolean isDepartmentUsedInData(int departmentId);
308
309 /**
310 * <p>isDepartmentUsedInValidatedData.</p>
311 *
312 * @param id a {@link java.lang.Integer} object.
313 * @return a boolean.
314 */
315 boolean isDepartmentUsedInValidatedData(Integer id);
316
317 /**
318 * <p>replaceDepartment.</p>
319 *
320 * @param source a {@link fr.ifremer.reefdb.dto.referential.DepartmentDTO} object.
321 * @param target a {@link fr.ifremer.reefdb.dto.referential.DepartmentDTO} object.
322 * @param delete a boolean.
323 */
324 @Transactional()
325 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
326 void replaceDepartment(DepartmentDTO source, DepartmentDTO target, boolean delete);
327
328 /**
329 * Search department.
330 *
331 * @param searchCriteria a {@link fr.ifremer.reefdb.dto.configuration.filter.department.DepartmentCriteriaDTO} object.
332 * @return Department list
333 */
334 List<DepartmentDTO> searchDepartments(DepartmentCriteriaDTO searchCriteria);
335
336 // ---------- LocationDTO ----------
337
338 /**
339 * La liste de tous les lieux.
340 *
341 * @return Les lieux
342 */
343 List<LocationDTO> getActiveLocations();
344
345 /**
346 * Recupere la liste des lieux du referential
347 *
348 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
349 * @return une liste de lieux du referential
350 */
351 List<LocationDTO> getLocations(StatusFilter statusFilter);
352
353 /**
354 * le lieu selon sont identifiant
355 *
356 * @param locationId a int.
357 * @return a {@link fr.ifremer.reefdb.dto.referential.LocationDTO} object.
358 */
359 LocationDTO getLocation(int locationId);
360
361 /**
362 * La liste des lieu selectionne suivant une campagne et un programme.
363 *
364 * @param campaignId identifiant de la camapgne
365 * @param programCode code du programme selectionne
366 * @return La liste des lieux selectionnes
367 */
368 List<LocationDTO> getLocations(Integer campaignId, String programCode);
369
370 /**
371 * <p>saveLocations.</p>
372 *
373 * @param locations a {@link java.util.List} object.
374 */
375 @Transactional()
376 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
377 void saveLocations(List<? extends LocationDTO> locations);
378
379 /**
380 * <p>deleteLocations.</p>
381 *
382 * @param locationIds a {@link java.util.List} object.
383 */
384 @Transactional()
385 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
386 void deleteLocations(List<Integer> locationIds);
387
388 /**
389 * <p>isLocationUsedInProgram.</p>
390 *
391 * @param locationId a int.
392 * @return a boolean.
393 */
394 boolean isLocationUsedInProgram(int locationId);
395
396 /**
397 * <p>isLocationUsedInData.</p>
398 *
399 * @param locationId a int.
400 * @return a boolean.
401 */
402 boolean isLocationUsedInData(int locationId);
403
404 /**
405 * <p>isLocationUsedInValidatedData.</p>
406 *
407 * @param locationId a int.
408 * @return a boolean.
409 */
410 boolean isLocationUsedInValidatedData(int locationId);
411
412 /**
413 * <p>replaceLocation.</p>
414 *
415 * @param source a {@link fr.ifremer.reefdb.dto.referential.LocationDTO} object.
416 * @param target a {@link fr.ifremer.reefdb.dto.referential.LocationDTO} object.
417 * @param delete a boolean.
418 */
419 @Transactional()
420 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
421 void replaceLocation(LocationDTO source, LocationDTO target, boolean delete);
422
423 /**
424 * <p>searchLocations.</p>
425 *
426 * @param searchCriteria a {@link fr.ifremer.reefdb.dto.configuration.filter.location.LocationCriteriaDTO} object.
427 * @return A list of Referential Location
428 */
429 List<LocationDTO> searchLocations(LocationCriteriaDTO searchCriteria);
430
431 /**
432 * <p>getHarbours.</p>
433 *
434 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
435 * @return a {@link java.util.List} object.
436 */
437 List<HarbourDTO> getHarbours(StatusFilter statusFilter);
438
439 // ---------- TaxonGroupDTO ----------
440
441 /**
442 * La liste des groupes de taxons.
443 *
444 * @return La liste des groupe de taxons
445 */
446 List<TaxonGroupDTO> getTaxonGroups();
447
448 /**
449 * Get taxon groups associated to the specified taxon at the specified date
450 *
451 * @param taxon the taxon
452 * @return the list of taxon groups
453 */
454 List<TaxonGroupDTO> getTaxonGroups(TaxonDTO taxon);
455
456 /**
457 * <p>getTaxonGroup.</p>
458 *
459 * @param taxonGroupId a int.
460 * @return a {@link fr.ifremer.reefdb.dto.referential.TaxonGroupDTO} object.
461 */
462 TaxonGroupDTO getTaxonGroup(int taxonGroupId);
463
464 /**
465 * Reload the initial taxon group list from cache (or db)
466 *
467 * @param taxonGroups a {@link java.util.List} object.
468 * @return a {@link java.util.List} object.
469 */
470 List<TaxonGroupDTO> getFullTaxonGroups(List<TaxonGroupDTO> taxonGroups);
471
472 /**
473 * <p>saveTaxonGroups.</p>
474 *
475 * @param taxonGroups a {@link java.util.List} object.
476 */
477 @Transactional()
478 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
479 void saveTaxonGroups(List<? extends TaxonGroupDTO> taxonGroups);
480
481 /**
482 * <p>deleteTaxonGroups.</p>
483 *
484 * @param taxonGroupIds a {@link java.util.List} object.
485 */
486 @Transactional()
487 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
488 void deleteTaxonGroups(List<Integer> taxonGroupIds);
489
490 /**
491 * <p>isTaxonGroupUsedInReferential.</p>
492 *
493 * @param taxonGroupId a int.
494 * @return a boolean.
495 */
496 boolean isTaxonGroupUsedInReferential(int taxonGroupId);
497
498 /**
499 * <p>isTaxonGroupUsedInData.</p>
500 *
501 * @param taxonGroupId a int.
502 * @return a boolean.
503 */
504 boolean isTaxonGroupUsedInData(int taxonGroupId);
505
506 /**
507 * <p>isTaxonGroupUsedInValidatedData.</p>
508 *
509 * @param taxonGroupId a int.
510 * @return a boolean.
511 */
512 boolean isTaxonGroupUsedInValidatedData(int taxonGroupId);
513
514 /**
515 * <p>replaceTaxonGroup.</p>
516 *
517 * @param source a {@link fr.ifremer.reefdb.dto.referential.TaxonGroupDTO} object.
518 * @param target a {@link fr.ifremer.reefdb.dto.referential.TaxonGroupDTO} object.
519 * @param delete a boolean.
520 */
521 @Transactional()
522 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
523 void replaceTaxonGroup(TaxonGroupDTO source, TaxonGroupDTO target, boolean delete);
524
525 /**
526 * <p>searchTaxonGroups.</p>
527 *
528 * @param searchCriteria a {@link fr.ifremer.reefdb.dto.configuration.filter.taxongroup.TaxonGroupCriteriaDTO} object.
529 * @return a {@link java.util.List} object.
530 */
531 List<TaxonGroupDTO> searchTaxonGroups(TaxonGroupCriteriaDTO searchCriteria);
532
533 // ---------- TaxonDTO ----------
534
535 /**
536 * List of taxon name. Could be filtered by parent taxon group
537 *
538 * @param taxonGroupId the parent taxon group, or null for all taxons
539 * @return list of taxon names
540 */
541 List<TaxonDTO> getTaxons(Integer taxonGroupId);
542
543 /**
544 * <p>getTaxon.</p>
545 *
546 * @param taxonId a int.
547 * @return a {@link fr.ifremer.reefdb.dto.referential.TaxonDTO} object.
548 */
549 TaxonDTO getTaxon(int taxonId);
550
551 /**
552 * <p>saveTaxons.</p>
553 *
554 * @param taxons a {@link java.util.List} object.
555 */
556 @Transactional()
557 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
558 void saveTaxons(List<? extends TaxonDTO> taxons);
559
560 /**
561 * <p>deleteTaxons.</p>
562 *
563 * @param taxonIds a {@link java.util.List} object.
564 */
565 @Transactional()
566 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
567 void deleteTaxons(List<Integer> taxonIds);
568
569 /**
570 * <p>isTaxonNameUsedInReferential.</p>
571 *
572 * @param taxonId a int.
573 * @return a boolean.
574 */
575 boolean isTaxonNameUsedInReferential(int taxonId);
576
577 /**
578 * <p>isTaxonNameUsedInData.</p>
579 *
580 * @param taxonId a int.
581 * @return a boolean.
582 */
583 boolean isTaxonNameUsedInData(int taxonId);
584
585 /**
586 * <p>isTaxonNameUsedInValidatedData.</p>
587 *
588 * @param taxonId a int.
589 * @return a boolean.
590 */
591 boolean isTaxonNameUsedInValidatedData(int taxonId);
592
593 /**
594 * <p>replaceTaxon.</p>
595 *
596 * @param source a {@link fr.ifremer.reefdb.dto.referential.TaxonDTO} object.
597 * @param target a {@link fr.ifremer.reefdb.dto.referential.TaxonDTO} object.
598 * @param delete a boolean.
599 */
600 @Transactional()
601 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
602 void replaceTaxon(TaxonDTO source, TaxonDTO target, boolean delete);
603
604 /**
605 * <p>searchTaxons.</p>
606 *
607 * @param taxonCriteria
608 * @return a {@link java.util.List} object.
609 */
610 List<TaxonDTO> searchTaxons(TaxonCriteriaDTO taxonCriteria);
611
612 /**
613 * Fill all properties of the taxon list
614 *
615 * @param taxons a {@link java.util.List} object.
616 */
617 void fillTaxonsProperties(List<TaxonDTO> taxons);
618
619 /**
620 * Fill referent taxon of the taxon list
621 *
622 * @param taxons a {@link java.util.List} object.
623 */
624 void fillReferentTaxons(List<TaxonDTO> taxons);
625
626 /**
627 * <p>getTaxonomicLevels.</p>
628 *
629 * @return a {@link java.util.List} object.
630 */
631 List<TaxonomicLevelDTO> getTaxonomicLevels();
632
633 /**
634 * <p>getCitations.</p>
635 *
636 * @return list of taxon citations
637 */
638 List<CitationDTO> getCitations();
639
640 // ---------- ParameterGroupDTO ----------
641
642 /**
643 * All Pmfm parameter group.
644 *
645 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
646 * @return Pmfm parameter group list
647 */
648 List<ParameterGroupDTO> getParameterGroup(StatusFilter statusFilter);
649
650 // ---------- ParameterDTO ----------
651
652 /**
653 * La liste des parametres.
654 *
655 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
656 * @return Les parametres
657 */
658 List<ParameterDTO> getParameters(StatusFilter statusFilter);
659
660 /**
661 * <p>saveParameters.</p>
662 *
663 * @param parameters a {@link java.util.List} object.
664 */
665 @Transactional()
666 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
667 void saveParameters(List<? extends ParameterDTO> parameters);
668
669 /**
670 * <p>deleteParameters.</p>
671 *
672 * @param parametersCodes a {@link java.util.List} object.
673 */
674 @Transactional()
675 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
676 void deleteParameters(List<String> parametersCodes);
677
678 /**
679 * <p>isParameterUsedInProgram.</p>
680 *
681 * @param parameterCode a {@link java.lang.String} object.
682 * @return a boolean.
683 */
684 boolean isParameterUsedInProgram(String parameterCode);
685
686 /**
687 * <p>isParameterUsedInRules.</p>
688 *
689 * @param parameterCode a {@link java.lang.String} object.
690 * @return a boolean.
691 */
692 boolean isParameterUsedInRules(String parameterCode);
693
694 /**
695 * <p>isParameterUsedInReferential.</p>
696 *
697 * @param parameterCode a {@link java.lang.String} object.
698 * @return a boolean.
699 */
700 boolean isParameterUsedInReferential(String parameterCode);
701
702 /**
703 * <p>replaceParameter.</p>
704 *
705 * @param source a {@link fr.ifremer.reefdb.dto.referential.pmfm.ParameterDTO} object.
706 * @param target a {@link fr.ifremer.reefdb.dto.referential.pmfm.ParameterDTO} object.
707 * @param delete a boolean.
708 */
709 @Transactional()
710 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
711 void replaceParameter(ParameterDTO source, ParameterDTO target, boolean delete);
712
713 /**
714 * All Pmfm parameter.
715 *
716 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
717 * @param parameterCode a {@link java.lang.String} object.
718 * @param statusCode a {@link java.lang.String} object.
719 * @param parameterGroup a {@link fr.ifremer.reefdb.dto.referential.pmfm.ParameterGroupDTO} object.
720 * @return Pmfm Parameter list
721 */
722 List<ParameterDTO> searchParameters(StatusFilter statusFilter, String parameterCode, String statusCode, ParameterGroupDTO parameterGroup);
723
724 /**
725 * The parameterType list
726 *
727 * @return the parameterTypes
728 */
729 List<ParameterTypeDTO> getParameterTypes();
730
731 // ---------- MatrixDTO ----------
732
733 /**
734 * La liste des supports.
735 *
736 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
737 * @return Les supports
738 */
739 List<MatrixDTO> getMatrices(StatusFilter statusFilter);
740
741 /**
742 * <p>saveMatrices.</p>
743 *
744 * @param matrices a {@link java.util.List} object.
745 */
746 @Transactional()
747 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
748 void saveMatrices(List<? extends MatrixDTO> matrices);
749
750 /**
751 * <p>deleteMatrices.</p>
752 *
753 * @param matrixIds a {@link java.util.List} object.
754 */
755 @Transactional()
756 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
757 void deleteMatrices(List<Integer> matrixIds);
758
759 /**
760 * <p>isMatrixUsedInProgram.</p>
761 *
762 * @param matrixId a int.
763 * @return a boolean.
764 */
765 boolean isMatrixUsedInProgram(int matrixId);
766
767 /**
768 * <p>isMatrixUsedInRules.</p>
769 *
770 * @param matrixId a int.
771 * @return a boolean.
772 */
773 boolean isMatrixUsedInRules(int matrixId);
774
775 /**
776 * <p>isMatrixUsedInReferential.</p>
777 *
778 * @param matrixId a int.
779 * @return a boolean.
780 */
781 boolean isMatrixUsedInReferential(int matrixId);
782
783 /**
784 * <p>replaceMatrix.</p>
785 *
786 * @param source a {@link fr.ifremer.reefdb.dto.referential.pmfm.MatrixDTO} object.
787 * @param target a {@link fr.ifremer.reefdb.dto.referential.pmfm.MatrixDTO} object.
788 * @param delete a boolean.
789 */
790 @Transactional()
791 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
792 void replaceMatrix(MatrixDTO source, MatrixDTO target, boolean delete);
793
794 /**
795 * All Pmfm matrice.
796 *
797 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
798 * @param matrixId a {@link java.lang.Integer} object.
799 * @param statusCode a {@link java.lang.String} object.
800 * @return Pmfm Matrice list
801 */
802 List<MatrixDTO> searchMatrices(StatusFilter statusFilter, Integer matrixId, String statusCode);
803
804 // ---------- FractionDTO ----------
805
806 /**
807 * La liste des fractions.
808 *
809 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
810 * @return Les fractions
811 */
812 List<FractionDTO> getFractions(StatusFilter statusFilter);
813
814 /**
815 * <p>saveFractions.</p>
816 *
817 * @param fractions a {@link java.util.List} object.
818 */
819 @Transactional()
820 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
821 void saveFractions(List<? extends FractionDTO> fractions);
822
823 /**
824 * <p>deleteFractions.</p>
825 *
826 * @param fractionIds a {@link java.util.List} object.
827 */
828 @Transactional()
829 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
830 void deleteFractions(List<Integer> fractionIds);
831
832 /**
833 * <p>isFractionUsedInProgram.</p>
834 *
835 * @param fractionId a int.
836 * @return a boolean.
837 */
838 boolean isFractionUsedInProgram(int fractionId);
839
840 /**
841 * <p>isFractionUsedInRules.</p>
842 *
843 * @param fractionId a int.
844 * @return a boolean.
845 */
846 boolean isFractionUsedInRules(int fractionId);
847
848 /**
849 * <p>isFractionUsedInReferential.</p>
850 *
851 * @param fractionId a int.
852 * @return a boolean.
853 */
854 boolean isFractionUsedInReferential(int fractionId);
855
856 /**
857 * <p>replaceFraction.</p>
858 *
859 * @param source a {@link fr.ifremer.reefdb.dto.referential.pmfm.FractionDTO} object.
860 * @param target a {@link fr.ifremer.reefdb.dto.referential.pmfm.FractionDTO} object.
861 * @param delete a boolean.
862 */
863 @Transactional()
864 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
865 void replaceFraction(FractionDTO source, FractionDTO target, boolean delete);
866
867 /**
868 * All Pmfm fraction.
869 *
870 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
871 * @param fractionId a {@link java.lang.Integer} object.
872 * @param statusCode a {@link java.lang.String} object.
873 * @return Pmfm Fraction list
874 */
875 List<FractionDTO> searchFractions(StatusFilter statusFilter, Integer fractionId, String statusCode);
876
877 // ---------- MethodDTO ----------
878
879 /**
880 * La liste des methodes.
881 *
882 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
883 * @return Les methodes
884 */
885 List<MethodDTO> getMethods(StatusFilter statusFilter);
886
887 /**
888 * <p>saveMethods.</p>
889 *
890 * @param methods a {@link java.util.List} object.
891 */
892 @Transactional()
893 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
894 void saveMethods(List<? extends MethodDTO> methods);
895
896 /**
897 * <p>deleteMethods.</p>
898 *
899 * @param methodIds a {@link java.util.List} object.
900 */
901 @Transactional()
902 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
903 void deleteMethods(List<Integer> methodIds);
904
905 /**
906 * <p>isMethodUsedInProgram.</p>
907 *
908 * @param methodId a int.
909 * @return a boolean.
910 */
911 boolean isMethodUsedInProgram(int methodId);
912
913 /**
914 * <p>isMethodUsedInRules.</p>
915 *
916 * @param methodId a int.
917 * @return a boolean.
918 */
919 boolean isMethodUsedInRules(int methodId);
920
921 /**
922 * <p>isMethodUsedInReferential.</p>
923 *
924 * @param methodId a int.
925 * @return a boolean.
926 */
927 boolean isMethodUsedInReferential(int methodId);
928
929 /**
930 * <p>replaceMethod.</p>
931 *
932 * @param source a {@link fr.ifremer.reefdb.dto.referential.pmfm.MethodDTO} object.
933 * @param target a {@link fr.ifremer.reefdb.dto.referential.pmfm.MethodDTO} object.
934 * @param delete a boolean.
935 */
936 @Transactional()
937 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
938 void replaceMethod(MethodDTO source, MethodDTO target, boolean delete);
939
940 /**
941 * All Pmfm method.
942 *
943 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
944 * @param methodId a {@link java.lang.Integer} object.
945 * @param statusCode a {@link java.lang.String} object.
946 * @return Pmfm Method list
947 */
948 List<MethodDTO> searchMethods(StatusFilter statusFilter, Integer methodId, String statusCode);
949
950 // ---------- PmfmDTO ----------
951
952 /**
953 * The quadruplet list
954 *
955 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
956 * @return the quadruplets
957 */
958 List<PmfmDTO> getPmfms(StatusFilter statusFilter);
959
960 /**
961 * <p>getPmfm.</p>
962 *
963 * @param pmfmId a int.
964 * @return a {@link fr.ifremer.reefdb.dto.referential.pmfm.PmfmDTO} object.
965 */
966 PmfmDTO getPmfm(int pmfmId);
967
968 /**
969 * <p>savePmfms.</p>
970 *
971 * @param pmfms a {@link java.util.List} object.
972 */
973 @Transactional()
974 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
975 void savePmfms(List<? extends PmfmDTO> pmfms);
976
977 /**
978 * <p>deletePmfms.</p>
979 *
980 * @param pmfmIds a {@link java.util.List} object.
981 */
982 @Transactional()
983 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
984 void deletePmfms(List<Integer> pmfmIds);
985
986 /**
987 * <p>isPmfmUsedInData.</p>
988 *
989 * @param pmfmId a int.
990 * @return a boolean.
991 */
992 boolean isPmfmUsedInData(int pmfmId);
993
994 /**
995 * <p>isPmfmUsedInValidatedData.</p>
996 *
997 * @param pmfmId a int.
998 * @return a boolean.
999 */
1000 boolean isPmfmUsedInValidatedData(int pmfmId);
1001
1002 /**
1003 * <p>isPmfmUsedInProgram.</p>
1004 *
1005 * @param pmfmId a int.
1006 * @return a boolean.
1007 */
1008 boolean isPmfmUsedInProgram(int pmfmId);
1009
1010 /**
1011 * <p>isPmfmUsedInRules.</p>
1012 *
1013 * @param pmfmId a int.
1014 * @return a boolean.
1015 */
1016 boolean isPmfmUsedInRules(int pmfmId);
1017
1018 /**
1019 * <p>replacePmfm.</p>
1020 *
1021 * @param source a {@link fr.ifremer.reefdb.dto.referential.pmfm.PmfmDTO} object.
1022 * @param target a {@link fr.ifremer.reefdb.dto.referential.pmfm.PmfmDTO} object.
1023 * @param delete a boolean.
1024 */
1025 @Transactional()
1026 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
1027 void replacePmfm(PmfmDTO source, PmfmDTO target, boolean delete);
1028
1029 /**
1030 * <p>searchPmfms.</p>
1031 *
1032 * @param statusFilter a {@link StatusFilter} object.
1033 * @param parameterCode a {@link String} object.
1034 * @param matrixId a {@link Integer} object.
1035 * @param fractionId a {@link Integer} object.
1036 * @param methodId a {@link Integer} object.
1037 * @param unitId
1038 * @param pmfmName a {@link String} object.
1039 * @param statusCode a {@link String} object.
1040 * @return a {@link java.util.List} object.
1041 */
1042 List<PmfmDTO> searchPmfms(StatusFilter statusFilter, String parameterCode, Integer matrixId, Integer fractionId, Integer methodId, Integer unitId, String pmfmName, String statusCode);
1043
1044 // ---------- AnalysisInstrumentDTO ----------
1045
1046 /**
1047 * The list of Analysis Instruments
1048 *
1049 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1050 * @return The list of Analysis Instruments
1051 */
1052 List<AnalysisInstrumentDTO> getAnalysisInstruments(StatusFilter statusFilter);
1053
1054 /**
1055 * <p>saveAnalysisInstruments.</p>
1056 *
1057 * @param analysisInstruments a {@link java.util.List} object.
1058 */
1059 @Transactional()
1060 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
1061 void saveAnalysisInstruments(List<? extends AnalysisInstrumentDTO> analysisInstruments);
1062
1063 /**
1064 * <p>deleteAnalysisInstruments.</p>
1065 *
1066 * @param analysisInstrumentIds a {@link java.util.List} object.
1067 */
1068 @Transactional()
1069 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
1070 void deleteAnalysisInstruments(List<Integer> analysisInstrumentIds);
1071
1072 /**
1073 * Check if this analysis instrument is used in data
1074 * MEASUREMENT, TAXON_MEASUREMENT, TODO MEASUREMENT_FILE
1075 *
1076 * @param analysisInstrumentId a int.
1077 * @return a boolean.
1078 */
1079 boolean isAnalysisInstrumentUsedInData(int analysisInstrumentId);
1080
1081 /**
1082 * Check if this analysis instrument is used in validated data
1083 * MEASUREMENT, TAXON_MEASUREMENT, TODO MEASUREMENT_FILE
1084 *
1085 * @param analysisInstrumentId a int.
1086 * @return a boolean.
1087 */
1088 boolean isAnalysisInstrumentUsedInValidatedData(int analysisInstrumentId);
1089
1090 /**
1091 * Check if this analysis instrument is used in strategy
1092 * PMFM_APPLIED_STRATEGY
1093 *
1094 * @param analysisInstrumentId a int.
1095 * @return a boolean.
1096 */
1097 boolean isAnalysisInstrumentUsedInProgram(int analysisInstrumentId);
1098
1099 /**
1100 * <p>replaceAnalysisInstrument.</p>
1101 *
1102 * @param source a {@link fr.ifremer.reefdb.dto.referential.AnalysisInstrumentDTO} object.
1103 * @param target a {@link fr.ifremer.reefdb.dto.referential.AnalysisInstrumentDTO} object.
1104 * @param delete a boolean.
1105 */
1106 @Transactional()
1107 @PreAuthorize("hasPermission(null, T(fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority).USER)")
1108 void replaceAnalysisInstrument(AnalysisInstrumentDTO source, AnalysisInstrumentDTO target, boolean delete);
1109
1110 /**
1111 * The search service for analysis instrument
1112 *
1113 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1114 * @param analysisInstrumentId a {@link java.lang.Integer} object.
1115 * @param statusCode a {@link java.lang.String} object.
1116 * @return A list of analysis instruments
1117 */
1118 List<AnalysisInstrumentDTO> searchAnalysisInstruments(StatusFilter statusFilter, Integer analysisInstrumentId, String statusCode);
1119
1120 /**
1121 * <p>searchAnalysisInstruments.</p>
1122 *
1123 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1124 * @param instrumentName a {@link java.lang.String} object.
1125 * @return a {@link java.util.List} object.
1126 */
1127 List<AnalysisInstrumentDTO> searchAnalysisInstruments(StatusFilter statusFilter, String instrumentName);
1128
1129 // ---------- MISC. ----------
1130
1131 /**
1132 * La liste des systemes de positionnement
1133 *
1134 * @return La liste des systemes de positionnement
1135 */
1136 List<PositioningSystemDTO> getPositioningSystems();
1137
1138 /**
1139 * La liste des niveaux.
1140 *
1141 * @return La liste des niveaux
1142 */
1143 List<LevelDTO> getLevels();
1144
1145 /**
1146 * La liste des profondeurs.
1147 *
1148 * @return Les profondeurs
1149 */
1150 List<DepthDTO> getDepths();
1151
1152 /**
1153 * The list of referential status
1154 *
1155 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1156 * @return the list of referential status
1157 */
1158 List<StatusDTO> getStatus(StatusFilter statusFilter);
1159
1160 /**
1161 * The list of Quality Levels
1162 *
1163 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1164 * @return The list of Quality Levels
1165 */
1166 List<QualityLevelDTO> getQualityLevels(StatusFilter statusFilter);
1167
1168 /**
1169 * The search service for quality level
1170 *
1171 * @param statusFilter a {@link fr.ifremer.reefdb.service.StatusFilter} object.
1172 * @param qualityLevelCode a {@link java.lang.String} object.
1173 * @param statusCode a {@link java.lang.String} object.
1174 * @return A list of quality level
1175 */
1176 List<QualityLevelDTO> searchQualityLevels(StatusFilter statusFilter, String qualityLevelCode, String statusCode);
1177
1178 /**
1179 * The service for grouping type
1180 *
1181 * @return A list of grouping type
1182 */
1183 List<GroupingTypeDTO> getGroupingTypes();
1184
1185 /**
1186 * <p>getPhotoTypes.</p>
1187 *
1188 * @return a {@link java.util.List} object.
1189 */
1190 List<PhotoTypeDTO> getPhotoTypes();
1191
1192 /**
1193 * Return the unique pmfm id from the quadruplet in the parameter pmfm
1194 *
1195 * @param pmfm the pmfm filter
1196 * @return the pmfm id
1197 */
1198 Integer getUniquePmfmIdFromPmfm(PmfmDTO pmfm);
1199
1200 /**
1201 * Return the unique pmfm from the quadruplet in the parameter pmfm
1202 *
1203 * @param pmfm the pmfm filter
1204 * @return the pmfm
1205 */
1206 PmfmDTO getUniquePmfmFromPmfm(PmfmDTO pmfm);
1207
1208 // ---------- QualitativeValueDTO ----------
1209
1210 /**
1211 * Get the qualitative value by its Id
1212 *
1213 * @param qualitativeValueId the qualitative value id
1214 * @return Qualitative Value
1215 */
1216 QualitativeValueDTO getQualitativeValue(int qualitativeValueId);
1217
1218 List<QualitativeValueDTO> getQualitativeValues(Collection<Integer> qualitativeValueIds);
1219
1220 List<QualitativeValueDTO> getQualitativeValues(String parameterCode);
1221 }
1222
1223