1 package fr.ifremer.dali.dao.administration.program;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import fr.ifremer.dali.dao.referential.monitoringLocation.DaliMonitoringLocationDao;
27 import fr.ifremer.quadrige3.core.dao.administration.program.ProgramDao;
28 import fr.ifremer.dali.dao.administration.strategy.DaliStrategyDao;
29 import fr.ifremer.dali.dto.configuration.programStrategy.ProgramDTO;
30 import org.springframework.cache.annotation.CacheEvict;
31 import org.springframework.cache.annotation.Cacheable;
32 import org.springframework.cache.annotation.Caching;
33
34 import java.util.Collection;
35 import java.util.Date;
36 import java.util.List;
37
38
39
40
41
42
43 public interface DaliProgramDao extends ProgramDao {
44
45
46 String PROGRAM_BY_CODE_CACHE = "program_by_code";
47
48 String ALL_PROGRAMS_CACHE = "all_programs";
49
50 String PROGRAMS_BY_CAMPAIGN_ID_CACHE = "programs_by_campaign_id";
51
52 String PROGRAMS_BY_CODES_CACHE = "programs_by_codes";
53
54
55
56
57
58
59 @Cacheable(value = ALL_PROGRAMS_CACHE)
60 List<ProgramDTO> getAllPrograms();
61
62
63
64
65
66
67
68 @Cacheable(value = PROGRAM_BY_CODE_CACHE)
69 ProgramDTO getProgramByCode(String programCode);
70
71
72
73
74
75
76
77
78
79 @Cacheable(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE)
80 @Deprecated
81 List<ProgramDTO> getProgramsByCampaignId(Integer campaignId);
82
83
84
85
86
87
88
89 @Cacheable(value = PROGRAMS_BY_CODES_CACHE)
90 List<ProgramDTO> getProgramsByCodes(List<String> programCodes);
91
92
93
94
95
96
97 @Caching(evict = {
98 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
99 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
100 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
101 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#program.code"),
102 @CacheEvict(value = DaliStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
103 @CacheEvict(value = DaliMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
104 })
105 void saveProgram(ProgramDTO program);
106
107
108
109
110
111
112 @Caching(evict = {
113 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
114 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
115 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
116 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#programCode"),
117 @CacheEvict(value = DaliStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
118 @CacheEvict(value = DaliMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
119 })
120 void remove(String programCode);
121
122
123
124
125
126
127
128 @Caching(evict = {
129 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
130 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
131 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
132 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#programCode"),
133 @CacheEvict(value = DaliStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
134 @CacheEvict(value = DaliMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
135 })
136 void deleteProgramLocations(String programCode, Collection<Integer> monitoringLocationIds);
137
138
139
140
141
142
143
144
145
146
147 List<ProgramDTO> findProgramsByCodeAndName(List<String> statusCodes, String code, String name);
148
149
150
151
152
153
154
155
156
157 List<ProgramDTO> findProgramsByLocationAndDate(List<String> statusCodes, int locationId, Date date);
158
159
160
161
162
163
164
165 boolean isProgramUsedByRuleList(String programCode);
166
167 }