1 package fr.ifremer.reefdb.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.quadrige3.core.dao.administration.program.ProgramDao;
27 import fr.ifremer.reefdb.dao.administration.strategy.ReefDbStrategyDao;
28 import fr.ifremer.reefdb.dao.referential.monitoringLocation.ReefDbMonitoringLocationDao;
29 import fr.ifremer.reefdb.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 ReefDbProgramDao extends ProgramDao {
44
45 String PROGRAM_BY_CODE_CACHE = "program_by_code";
46 String ALL_PROGRAMS_CACHE = "all_programs";
47 String PROGRAMS_BY_CAMPAIGN_ID_CACHE = "programs_by_campaign_id";
48 String PROGRAMS_BY_CODES_CACHE = "programs_by_codes";
49
50
51
52
53
54
55 @Cacheable(value = ALL_PROGRAMS_CACHE)
56 List<ProgramDTO> getAllPrograms();
57
58
59
60
61
62
63
64 @Cacheable(value = PROGRAM_BY_CODE_CACHE)
65 ProgramDTO getProgramByCode(String programCode);
66
67
68
69
70
71
72
73 @Cacheable(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE)
74 List<ProgramDTO> getProgramsByCampaignId(Integer campaignId);
75
76
77
78
79
80
81
82 @Cacheable(value = PROGRAMS_BY_CODES_CACHE)
83 List<ProgramDTO> getProgramsByCodes(List<String> programCodes);
84
85
86
87
88
89
90 @Caching(evict = {
91 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
92 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
93 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
94 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#program.code"),
95 @CacheEvict(value = ReefDbStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
96 @CacheEvict(value = ReefDbMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
97 })
98 void saveProgram(ProgramDTO program);
99
100
101
102
103
104
105 @Caching(evict = {
106 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
107 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
108 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
109 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#programCode"),
110 @CacheEvict(value = ReefDbStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
111 @CacheEvict(value = ReefDbMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
112 })
113 void remove(String programCode);
114
115
116
117
118
119
120
121 @Caching(evict = {
122 @CacheEvict(value = ALL_PROGRAMS_CACHE, allEntries = true),
123 @CacheEvict(value = PROGRAMS_BY_CAMPAIGN_ID_CACHE, allEntries = true),
124 @CacheEvict(value = PROGRAMS_BY_CODES_CACHE, allEntries = true),
125 @CacheEvict(value = PROGRAM_BY_CODE_CACHE, key = "#programCode"),
126 @CacheEvict(value = ReefDbStrategyDao.PMFM_STRATEGIES_BY_PROG_LOC_DATE_CACHE, allEntries = true),
127 @CacheEvict(value = ReefDbMonitoringLocationDao.LOCATIONS_BY_CAMPAIGN_AND_PROGRAM_CACHE, allEntries = true)
128 })
129 void deleteProgramLocations(String programCode, Collection<Integer> monitoringLocationIds);
130
131
132
133
134
135
136
137
138
139
140 List<ProgramDTO> findProgramsByCodeAndName(List<String> statusCodes, String code, String name);
141
142
143
144
145
146
147
148
149
150 List<ProgramDTO> findProgramsByLocationAndDate(List<String> statusCodes, int locationId, Date date);
151
152
153
154
155
156
157
158 boolean isProgramUsedByRuleList(String programCode);
159
160 }