View Javadoc
1   package fr.ifremer.dali.dao.referential.taxon;
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 com.google.common.collect.Multimap;
27  import fr.ifremer.dali.dto.referential.TaxonDTO;
28  import org.springframework.cache.annotation.Cacheable;
29  
30  import javax.annotation.Nonnull;
31  import java.time.LocalDate;
32  import java.util.List;
33  import java.util.Map;
34  
35  /**
36   * <p>DaliTaxonNameDao interface.</p>
37   *
38   */
39  public interface DaliTaxonNameDao {
40  
41      String TAXON_NAME_BY_ID_CACHE = "taxon_name_by_id";
42      String TAXON_NAMES_BY_IDS_CACHE = "taxon_names_by_ids";
43      String TAXON_NAME_BY_REFERENCE_ID_CACHE = "taxon_name_by_reference_id";
44      String ALL_TAXON_NAMES_CACHE = "all_taxon_names";
45      String TAXON_NAME_BY_TAXON_GROUP_ID_CACHE = "taxon_name_by_taxon_group_id";
46      String COMPOSITE_TAXON_NAMES_BY_TAXON_NAME_ID_CACHE = "composite_taxon_names_by_taxon_name_id";
47      String TAX_REF_BY_TAXON_NAME_ID_CACHE = "tax_ref_by_taxon_name_id";
48      String WORMS_BY_TAXON_NAME_ID_CACHE = "worms_by_taxon_name_id";
49  
50      /**
51       * All taxon names.
52       *
53       * @return a {@link java.util.List} object.
54       */
55      @Cacheable(value = ALL_TAXON_NAMES_CACHE)
56      List<TaxonDTO> getAllTaxonNames();
57  
58      /**
59       * <p>getTaxonNameById.</p>
60       *
61       * @param taxonId a int.
62       * @return a {@link fr.ifremer.dali.dto.referential.TaxonDTO} object.
63       */
64      @Cacheable(value = TAXON_NAME_BY_ID_CACHE)
65      TaxonDTO getTaxonNameById(int taxonId);
66  
67      /**
68       * <p>getTaxonNamesByIds.</p>
69       *
70       * @param taxonIds a {@link java.util.List} object.
71       * @return a {@link java.util.List} object.
72       */
73      @Cacheable(value = TAXON_NAMES_BY_IDS_CACHE)
74      List<TaxonDTO> getTaxonNamesByIds(List<Integer> taxonIds);
75  
76      /**
77       * <p>getTaxonNameByReferenceId.</p>
78       *
79       * @param referenceTaxonId a int.
80       * @return a {@link fr.ifremer.dali.dto.referential.TaxonDTO} object.
81       */
82      @Cacheable(value = TAXON_NAME_BY_REFERENCE_ID_CACHE)
83      TaxonDTO getTaxonNameByReferenceId(int referenceTaxonId);
84  
85      /**
86       * Get All Taxon Names of the Taxon Group
87       *
88       * @return a {@link com.google.common.collect.Multimap} object.
89       */
90      @Cacheable(value = TAXON_NAME_BY_TAXON_GROUP_ID_CACHE)
91      Multimap<Integer, TaxonDTO> getAllTaxonNamesMapByTaxonGroupId(@Nonnull LocalDate date);
92  
93      /**
94       * <p>findTaxonNamesByCriteria.</p>
95       *
96       * @param levelCode a {@link String} object.
97       * @param name a {@link String} object.
98       * @param isStrictName a boolean.
99       * @return a {@link java.util.List} object.
100      */
101     List<TaxonDTO> findTaxonNamesByCriteria(String levelCode, String name, boolean isStrictName);
102 
103     /**
104      * <p>findFullTaxonNamesByCriteria.</p>
105      *
106      * @param levelCode a {@link String} object.
107      * @param name a {@link String} object.
108      * @param isStrictName a boolean.
109      * @return a {@link java.util.List} object.
110      */
111     List<TaxonDTO> findFullTaxonNamesByCriteria(String levelCode, String name, boolean isStrictName);
112 
113     /**
114      * Fill all properties of the taxon list
115      *
116      * @param taxons a {@link java.util.List} object.
117      */
118     void fillTaxonsProperties(List<TaxonDTO> taxons);
119 
120     /**
121      * <p>fillParentAndReferent.</p>
122      *
123      * @param taxon a {@link fr.ifremer.dali.dto.referential.TaxonDTO} object.
124      */
125     void fillParentAndReferent(TaxonDTO taxon);
126 
127     /**
128      * <p>fillReferent.</p>
129      *
130      * @param taxons a {@link TaxonDTO} object.
131      */
132     void fillReferents(List<TaxonDTO> taxons);
133 
134     /**
135      * <p>getCompositeTaxonNames.</p>
136      *
137      * @param taxonNameId a {@link java.lang.Integer} object.
138      * @return a {@link java.util.List} object.
139      */
140     @Cacheable(value = COMPOSITE_TAXON_NAMES_BY_TAXON_NAME_ID_CACHE)
141     List<TaxonDTO> getCompositeTaxonNames(Integer taxonNameId);
142 
143     /**
144      * <p>getTaxRefByTaxonNameId.</p>
145      *
146      * @return a {@link java.util.Map} object.
147      */
148     @Cacheable(value = TAX_REF_BY_TAXON_NAME_ID_CACHE)
149     Map<Integer, String> getTaxRefByTaxonNameId();
150 
151     /**
152      * <p>getWormsByTaxonNameId.</p>
153      *
154      * @return a {@link java.util.Map} object.
155      */
156     @Cacheable(value = WORMS_BY_TAXON_NAME_ID_CACHE)
157     Map<Integer, String> getWormsByTaxonNameId();
158 }