View Javadoc
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 }