1 package fr.ifremer.dali.service.referential; 2 3 /* 4 * #%L 5 * Dali :: 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.dali.dto.ParameterTypeDTO; 27 import fr.ifremer.dali.dto.configuration.filter.department.DepartmentCriteriaDTO; 28 import fr.ifremer.dali.dto.configuration.filter.location.LocationCriteriaDTO; 29 import fr.ifremer.dali.dto.configuration.filter.taxon.TaxonCriteriaDTO; 30 import fr.ifremer.dali.dto.configuration.filter.taxongroup.TaxonGroupCriteriaDTO; 31 import fr.ifremer.dali.dto.referential.*; 32 import fr.ifremer.dali.dto.referential.pmfm.*; 33 import fr.ifremer.dali.service.StatusFilter; 34 import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO; 35 import org.springframework.transaction.annotation.Transactional; 36 37 import java.util.Collection; 38 import java.util.List; 39 40 /** 41 * Les sevices pour les donnees de reference. 42 */ 43 @Transactional(readOnly = true) 44 public interface ReferentialService { 45 46 // ---------- SamplingEquipmentDTO ---------- 47 48 /** 49 * La liste des engins du référentiel. 50 * 51 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 52 * @return La liste des engins 53 */ 54 List<SamplingEquipmentDTO> getSamplingEquipments(StatusFilter statusFilter); 55 56 /** 57 * The search service for sampling equipment 58 * 59 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 60 * @param samplingEquipmentId a {@link java.lang.Integer} object. 61 * @param statusCode a {@link java.lang.String} object. 62 * @param unitId a {@link java.lang.Integer} object. 63 * @return A list of sampling equipment 64 */ 65 List<SamplingEquipmentDTO> searchSamplingEquipments(StatusFilter statusFilter, Integer samplingEquipmentId, String statusCode, Integer unitId); 66 67 /** 68 * <p>searchSamplingEquipments.</p> 69 * 70 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 71 * @param equipmentName a {@link java.lang.String} object. 72 * @param statusCode a {@link java.lang.String} object. 73 * @return a {@link java.util.List} object. 74 */ 75 List<SamplingEquipmentDTO> searchSamplingEquipments(StatusFilter statusFilter, String equipmentName, String statusCode); 76 77 // ---------- UnitDTO ---------- 78 79 /** 80 * La liste des unites du referential. 81 * 82 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 83 * @return La liste des unites du referential 84 */ 85 List<UnitDTO> getUnits(StatusFilter statusFilter); 86 87 /** 88 * The search service for unit 89 * 90 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 91 * @param unitId a {@link java.lang.Integer} object. 92 * @param statusCode a {@link java.lang.String} object. 93 * @return A list of unit 94 */ 95 List<UnitDTO> searchUnits(StatusFilter statusFilter, Integer unitId, String statusCode); 96 97 // ---------- PersonDTO ---------- 98 99 /** 100 * wrapped method used in referential replacement 101 * 102 * @param person a {@link fr.ifremer.dali.dto.referential.PersonDTO} object. 103 * @return a {@link java.util.List} object. 104 */ 105 List<PersonDTO> getUsersInSameDepartment(PersonDTO person); 106 107 // ---------- DepartmentDTO ---------- 108 109 /** 110 * <p>getDepartments.</p> 111 * 112 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 113 * @return a {@link java.util.List} object. 114 */ 115 List<DepartmentDTO> getDepartments(StatusFilter statusFilter); 116 117 /** 118 * <p>getDepartmentById.</p> 119 * 120 * @param departmentId a int. 121 * @return a {@link fr.ifremer.dali.dto.referential.DepartmentDTO} object. 122 */ 123 DepartmentDTO getDepartmentById(int departmentId); 124 125 /** 126 * Search department. 127 * 128 * @param searchCriteria a {@link fr.ifremer.dali.dto.configuration.filter.department.DepartmentCriteriaDTO} object. 129 * @return Department list 130 */ 131 List<DepartmentDTO> searchDepartments(DepartmentCriteriaDTO searchCriteria); 132 133 // ---------- LocationDTO ---------- 134 135 /** 136 * Recupere la liste des lieux du referential 137 * 138 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 139 * @return une liste de lieux du referential 140 */ 141 List<LocationDTO> getLocations(StatusFilter statusFilter); 142 143 /** 144 * le lieu selon sont identifiant 145 * 146 * @param locationId a int. 147 * @return a {@link fr.ifremer.dali.dto.referential.LocationDTO} object. 148 */ 149 LocationDTO getLocation(int locationId); 150 151 /** 152 * La liste des lieu selectionne suivant une campagne et un programme. 153 * 154 * @param campaignId identifiant de la camapgne 155 * @param programCode code du programme selectionne 156 * @return La liste des lieux selectionnes 157 */ 158 List<LocationDTO> getLocations(Integer campaignId, String programCode); 159 160 /** 161 * <p>searchLocations.</p> 162 * 163 * @param searchCriteria a {@link fr.ifremer.dali.dto.configuration.filter.location.LocationCriteriaDTO} object. 164 * @return A list of Referential Location 165 */ 166 List<LocationDTO> searchLocations(LocationCriteriaDTO searchCriteria); 167 168 /** 169 * <p>getHarbours.</p> 170 * 171 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 172 * @return a {@link java.util.List} object. 173 */ 174 List<HarbourDTO> getHarbours(StatusFilter statusFilter); 175 176 // ---------- TaxonGroupDTO ---------- 177 178 /** 179 * La liste des groupes de taxons. 180 * 181 * @return La liste des groupe de taxons 182 */ 183 List<TaxonGroupDTO> getTaxonGroups(); 184 185 /** 186 * <p>getTaxonGroup.</p> 187 * 188 * @param taxonGroupId a int. 189 * @return a {@link fr.ifremer.dali.dto.referential.TaxonGroupDTO} object. 190 */ 191 TaxonGroupDTO getTaxonGroup(int taxonGroupId); 192 193 /** 194 * Reload the initial taxon group list from cache (or db) 195 * 196 * @param taxonGroups a {@link java.util.List} object. 197 * @return a {@link java.util.List} object. 198 */ 199 List<TaxonGroupDTO> getFullTaxonGroups(List<TaxonGroupDTO> taxonGroups); 200 201 /** 202 * <p>searchTaxonGroups.</p> 203 * 204 * @param searchCriteria a {@link fr.ifremer.dali.dto.configuration.filter.taxongroup.TaxonGroupCriteriaDTO} object. 205 * @return a {@link java.util.List} object. 206 */ 207 List<TaxonGroupDTO> searchTaxonGroups(TaxonGroupCriteriaDTO searchCriteria); 208 209 // ---------- TaxonDTO ---------- 210 211 /** 212 * List of taxon name. Could be filtered by parent taxon group 213 * 214 * @param taxonGroupId the parent taxon group, or null for all taxons 215 * @return list of taxon names 216 */ 217 List<TaxonDTO> getTaxons(Integer taxonGroupId); 218 219 /** 220 * <p>getTaxon.</p> 221 * 222 * @param taxonId a int. 223 * @return a {@link fr.ifremer.dali.dto.referential.TaxonDTO} object. 224 */ 225 TaxonDTO getTaxon(int taxonId); 226 227 /** 228 * <p>searchTaxons.</p> 229 * 230 * @param taxonCriteria search criteria 231 * @return a {@link java.util.List} object. 232 */ 233 List<TaxonDTO> searchTaxons(TaxonCriteriaDTO taxonCriteria); 234 235 /** 236 * Fill all properties of the taxon list 237 * 238 * @param taxons a {@link java.util.List} object. 239 */ 240 void fillTaxonsProperties(List<TaxonDTO> taxons); 241 242 /** 243 * Fill referent taxon of the taxon list 244 * 245 * @param taxons a {@link java.util.List} object. 246 */ 247 void fillReferentTaxons(List<TaxonDTO> taxons); 248 249 /** 250 * <p>getTaxonomicLevels.</p> 251 * 252 * @return a {@link java.util.List} object. 253 */ 254 List<TaxonomicLevelDTO> getTaxonomicLevels(); 255 256 /** 257 * <p>getCitations.</p> 258 * 259 * @return list of taxon citations 260 */ 261 List<CitationDTO> getCitations(); 262 263 // ---------- ParameterGroupDTO ---------- 264 265 /** 266 * All Pmfm parameter group. 267 * 268 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 269 * @return Pmfm parameter group list 270 */ 271 List<ParameterGroupDTO> getParameterGroup(StatusFilter statusFilter); 272 273 // ---------- ParameterDTO ---------- 274 275 /** 276 * La liste des parametres. 277 * 278 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 279 * @return Les parametres 280 */ 281 List<ParameterDTO> getParameters(StatusFilter statusFilter); 282 283 /** 284 * All Pmfm parameter. 285 * 286 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 287 * @param parameterCode a {@link java.lang.String} object. 288 * @param statusCode a {@link java.lang.String} object. 289 * @param parameterGroup a {@link fr.ifremer.dali.dto.referential.pmfm.ParameterGroupDTO} object. 290 * @return Pmfm Parameter list 291 */ 292 List<ParameterDTO> searchParameters(StatusFilter statusFilter, String parameterCode, String statusCode, ParameterGroupDTO parameterGroup); 293 294 /** 295 * The parameterType list 296 * 297 * @return the parameterTypes 298 */ 299 List<ParameterTypeDTO> getParameterTypes(); 300 301 // ---------- MatrixDTO ---------- 302 303 /** 304 * La liste des supports. 305 * 306 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 307 * @return Les supports 308 */ 309 List<MatrixDTO> getMatrices(StatusFilter statusFilter); 310 311 /** 312 * All Pmfm matrice. 313 * 314 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 315 * @param matrixId a {@link java.lang.Integer} object. 316 * @param statusCode a {@link java.lang.String} object. 317 * @return Pmfm Matrice list 318 */ 319 List<MatrixDTO> searchMatrices(StatusFilter statusFilter, Integer matrixId, String statusCode); 320 321 // ---------- FractionDTO ---------- 322 323 /** 324 * La liste des fractions. 325 * 326 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 327 * @return Les fractions 328 */ 329 List<FractionDTO> getFractions(StatusFilter statusFilter); 330 331 /** 332 * All Pmfm fraction. 333 * 334 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 335 * @param fractionId a {@link java.lang.Integer} object. 336 * @param statusCode a {@link java.lang.String} object. 337 * @return Pmfm Fraction list 338 */ 339 List<FractionDTO> searchFractions(StatusFilter statusFilter, Integer fractionId, String statusCode); 340 341 // ---------- MethodDTO ---------- 342 343 /** 344 * La liste des methodes. 345 * 346 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 347 * @return Les methodes 348 */ 349 List<MethodDTO> getMethods(StatusFilter statusFilter); 350 351 /** 352 * All Pmfm method. 353 * 354 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 355 * @param methodId a {@link java.lang.Integer} object. 356 * @param statusCode a {@link java.lang.String} object. 357 * @return Pmfm Method list 358 */ 359 List<MethodDTO> searchMethods(StatusFilter statusFilter, Integer methodId, String statusCode); 360 361 // ---------- PmfmDTO ---------- 362 363 /** 364 * The quadruplet list 365 * 366 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 367 * @return the quadruplets 368 */ 369 List<PmfmDTO> getPmfms(StatusFilter statusFilter); 370 371 /** 372 * <p>getPmfm.</p> 373 * 374 * @param pmfmId a int. 375 * @return a {@link fr.ifremer.dali.dto.referential.pmfm.PmfmDTO} object. 376 */ 377 PmfmDTO getPmfm(int pmfmId); 378 379 /** 380 * <p>searchPmfms.</p> 381 * 382 * @param statusFilter a {@link StatusFilter} object. 383 * @param parameterCode a {@link String} object. 384 * @param matrixId a {@link Integer} object. 385 * @param fractionId a {@link Integer} object. 386 * @param methodId a {@link Integer} object. 387 * @param unitId 388 * @param pmfmName a {@link String} object. 389 * @param statusCode a {@link String} object. 390 * @return a {@link java.util.List} object. 391 */ 392 List<PmfmDTO> searchPmfms(StatusFilter statusFilter, String parameterCode, Integer matrixId, Integer fractionId, Integer methodId, Integer unitId, String pmfmName, String statusCode); 393 394 /** 395 * Return the unique pmfm id from the quadruplet in the parameter pmfm 396 * 397 * @param pmfm the pmfm filter 398 * @return the pmfm id 399 */ 400 Integer getUniquePmfmIdFromPmfm(PmfmDTO pmfm); 401 402 /** 403 * Return the unique pmfm from the quadruplet in the parameter pmfm 404 * 405 * @param pmfm the pmfm filter 406 * @return the pmfm 407 */ 408 PmfmDTO getUniquePmfmFromPmfm(PmfmDTO pmfm); 409 410 // ---------- QualitativeValueDTO ---------- 411 412 /** 413 * Get the qualitative value by its Id 414 * 415 * @param qualitativeValueId the qualitative value id 416 * @return Qualitative Value 417 */ 418 QualitativeValueDTO getQualitativeValue(int qualitativeValueId); 419 420 List<QualitativeValueDTO> getQualitativeValues(Collection<Integer> qualitativeValueIds); 421 422 // ---------- AnalysisInstrumentDTO ---------- 423 424 /** 425 * The list of Analysis Instruments 426 * 427 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 428 * @return The list of Analysis Instruments 429 */ 430 List<AnalysisInstrumentDTO> getAnalysisInstruments(StatusFilter statusFilter); 431 432 /** 433 * The search service for analysis instrument 434 * 435 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 436 * @param analysisInstrumentId a {@link java.lang.Integer} object. 437 * @param statusCode a {@link java.lang.String} object. 438 * @return A list of analysis instruments 439 */ 440 List<AnalysisInstrumentDTO> searchAnalysisInstruments(StatusFilter statusFilter, Integer analysisInstrumentId, String statusCode); 441 442 /** 443 * <p>searchAnalysisInstruments.</p> 444 * 445 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 446 * @param instrumentName a {@link java.lang.String} object. 447 * @return a {@link java.util.List} object. 448 */ 449 List<AnalysisInstrumentDTO> searchAnalysisInstruments(StatusFilter statusFilter, String instrumentName); 450 451 // ---------- MISC. ---------- 452 453 /** 454 * La liste des systemes de positionnement 455 * 456 * @return La liste des systemes de positionnement 457 */ 458 List<PositioningSystemDTO> getPositioningSystems(); 459 460 /** 461 * La liste des niveaux. 462 * 463 * @return La liste des niveaux 464 */ 465 List<LevelDTO> getLevels(); 466 467 /** 468 * The list of referential status 469 * 470 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 471 * @return the list of referential status 472 */ 473 List<StatusDTO> getStatus(StatusFilter statusFilter); 474 475 QualityLevelDTO getNotQualityLevel(); 476 477 /** 478 * The list of Quality Levels 479 * 480 * @param statusFilter a {@link fr.ifremer.dali.service.StatusFilter} object. 481 * @return The list of Quality Levels 482 */ 483 List<QualityLevelDTO> getQualityLevels(StatusFilter statusFilter); 484 485 /** 486 * The service for grouping type 487 * 488 * @return A list of grouping type 489 */ 490 List<GroupingTypeDTO> getGroupingTypes(); 491 492 /** 493 * <p>getPhotoTypes.</p> 494 * 495 * @return a {@link java.util.List} object. 496 */ 497 List<PhotoTypeDTO> getPhotoTypes(); 498 499 }