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