View Javadoc
1   package fr.ifremer.reefdb.dao.referential.taxon;
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.reefdb.dto.referential.TaxonGroupDTO;
27  import org.springframework.cache.annotation.CacheEvict;
28  import org.springframework.cache.annotation.Cacheable;
29  
30  import java.util.Collection;
31  import java.util.List;
32  
33  /**
34   * <p>ReefDbTaxonGroupDao interface.</p>
35   *
36   */
37  public interface ReefDbTaxonGroupDao {
38  
39      String ALL_TAXON_GROUPS_CACHE = "all_taxon_groups";
40      String TAXON_GROUP_BY_ID_CACHE = "taxon_group_by_id";
41      String TAXON_GROUPS_BY_IDS_CACHE = "taxon_groups_by_ids";
42  
43      /**
44       * <p>getAllTaxonGroups.</p>
45       *
46       * @return a {@link java.util.List} object.
47       */
48      @Cacheable(value = ALL_TAXON_GROUPS_CACHE)
49      List<TaxonGroupDTO> getAllTaxonGroups();
50  
51      /**
52       * <p>getTaxonGroupById.</p>
53       *
54       * @param taxonGroupId a int.
55       * @return a {@link fr.ifremer.reefdb.dto.referential.TaxonGroupDTO} object.
56       */
57      @Cacheable(value = TAXON_GROUP_BY_ID_CACHE)
58      TaxonGroupDTO getTaxonGroupById(int taxonGroupId);
59  
60      /**
61       * <p>getTaxonGroupsByIds.</p>
62       *
63       * @param taxonGroupIds a {@link List} object.
64       * @return a {@link java.util.List} object.
65       */
66      @Cacheable(value = TAXON_GROUPS_BY_IDS_CACHE)
67      List<TaxonGroupDTO> getTaxonGroupsByIds(Collection<Integer> taxonGroupIds);
68  
69      /**
70       * <p>findTaxonGroups.</p>
71       *
72       * @param parentTaxonGroupId a {@link java.lang.Integer} object.
73       * @param label a {@link java.lang.String} object.
74       * @param name a {@link java.lang.String} object.
75       * @param isStrictName a boolean.
76       * @param statusCodes a {@link java.util.List} object.
77       * @return a {@link java.util.List} object.
78       */
79      List<TaxonGroupDTO> findTaxonGroups(Integer parentTaxonGroupId, String label, String name, boolean isStrictName, List<String> statusCodes);
80  
81      /**
82       * <p>saveTaxonGroups.</p>
83       *
84       * @param taxonGroups a {@link java.util.List} object.
85       */
86      @CacheEvict(value = {
87              ALL_TAXON_GROUPS_CACHE,
88              TAXON_GROUP_BY_ID_CACHE,
89              TAXON_GROUPS_BY_IDS_CACHE
90      }, allEntries = true)
91      void saveTaxonGroups(List<? extends TaxonGroupDTO> taxonGroups);
92  
93      /**
94       * <p>deleteTaxonGroups.</p>
95       *
96       * @param taxonGroupIds a {@link java.util.List} object.
97       */
98      @CacheEvict(value = {
99              ALL_TAXON_GROUPS_CACHE,
100             TAXON_GROUP_BY_ID_CACHE,
101             TAXON_GROUPS_BY_IDS_CACHE
102     }, allEntries = true)
103     void deleteTaxonGroups(List<Integer> taxonGroupIds);
104 
105     /**
106      * <p>replaceTemporaryTaxonGroup.</p>
107      *
108      * @param sourceId a {@link java.lang.Integer} object.
109      * @param targetId a {@link java.lang.Integer} object.
110      * @param delete a boolean.
111      */
112     @CacheEvict(value = {
113             ALL_TAXON_GROUPS_CACHE,
114             TAXON_GROUP_BY_ID_CACHE,
115             TAXON_GROUPS_BY_IDS_CACHE
116     }, allEntries = true)
117     void replaceTemporaryTaxonGroup(Integer sourceId, Integer targetId, boolean delete);
118 
119     /**
120      * <p>isTaxonGroupUsedInReferential.</p>
121      *
122      * @param taxonGroupId a int.
123      * @return a boolean.
124      */
125     boolean isTaxonGroupUsedInReferential(int taxonGroupId);
126 
127     /**
128      * <p>isTaxonGroupUsedInData.</p>
129      *
130      * @param taxonGroupId a int.
131      * @return a boolean.
132      */
133     boolean isTaxonGroupUsedInData(int taxonGroupId);
134 
135     /**
136      * <p>isTaxonGroupUsedInValidatedData.</p>
137      *
138      * @param taxonGroupId a int.
139      * @return a boolean.
140      */
141     boolean isTaxonGroupUsedInValidatedData(int taxonGroupId);
142 }