View Javadoc
1   package fr.ifremer.reefdb.dao.referential.pmfm;
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  
27  import fr.ifremer.reefdb.dto.referential.pmfm.MethodDTO;
28  import org.springframework.cache.annotation.CacheEvict;
29  import org.springframework.cache.annotation.Cacheable;
30  
31  import java.util.List;
32  
33  /**
34   * Created by Ludovic on 29/07/2015.
35   */
36  public interface ReefDbMethodDao {
37  
38      String ALL_METHODS_CACHE = "all_methods";
39      String METHOD_BY_ID_CACHE = "method_by_id";
40  
41      /**
42       * <p>getAllMethods.</p>
43       *
44       * @param statusCodes a {@link java.util.List} object.
45       * @return a {@link java.util.List} object.
46       */
47      @Cacheable(value = ALL_METHODS_CACHE)
48      List<MethodDTO> getAllMethods(List<String> statusCodes);
49  
50      /**
51       * <p>getMethodById.</p>
52       *
53       * @param methodId a int.
54       * @return a {@link fr.ifremer.reefdb.dto.referential.pmfm.MethodDTO} object.
55       */
56      @Cacheable(value = METHOD_BY_ID_CACHE)
57      MethodDTO getMethodById(int methodId);
58  
59      /**
60       * <p>findMethods.</p>
61       *
62       * @param methodId a {@link java.lang.Integer} object.
63       * @param statusCodes a {@link java.util.List} object.
64       * @return a {@link java.util.List} object.
65       */
66      List<MethodDTO> findMethods(Integer methodId, List<String> statusCodes);
67  
68      /**
69       * <p>saveMethods.</p>
70       *
71       * @param methods a {@link java.util.List} object.
72       */
73      @CacheEvict(value = {
74              ALL_METHODS_CACHE,
75              METHOD_BY_ID_CACHE
76      }, allEntries = true)
77      void saveMethods(List<? extends MethodDTO> methods);
78  
79      /**
80       * <p>deleteMethods.</p>
81       *
82       * @param methodIds a {@link java.util.List} object.
83       */
84      @CacheEvict(value = {
85              ALL_METHODS_CACHE,
86              METHOD_BY_ID_CACHE
87      }, allEntries = true)
88      void deleteMethods(List<Integer> methodIds);
89  
90      /**
91       * <p>replaceTemporaryMethod.</p>
92       *
93       * @param sourceId a {@link java.lang.Integer} object.
94       * @param targetId a {@link java.lang.Integer} object.
95       * @param delete a boolean.
96       */
97      @CacheEvict(value = {
98              ALL_METHODS_CACHE,
99              METHOD_BY_ID_CACHE
100     }, allEntries = true)
101     void replaceTemporaryMethod(Integer sourceId, Integer targetId, boolean delete);
102 
103     /**
104      * <p>isMethodUsedInProgram.</p>
105      *
106      * @param methodId a int.
107      * @return a boolean.
108      */
109     boolean isMethodUsedInProgram(int methodId);
110 
111     /**
112      * <p>isMethodUsedInRules.</p>
113      *
114      * @param methodId a int.
115      * @return a boolean.
116      */
117     boolean isMethodUsedInRules(int methodId);
118 
119     /**
120      * <p>isMethodUsedInReferential.</p>
121      *
122      * @param methodId a int.
123      * @return a boolean.
124      */
125     boolean isMethodUsedInReferential(int methodId);
126 
127 }