1 package net.sumaris.core.dao.administration.programStrategy;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import net.sumaris.core.dao.cache.CacheNames;
26 import net.sumaris.core.dao.technical.SortDirection;
27 import net.sumaris.core.model.administration.programStrategy.Program;
28 import net.sumaris.core.vo.administration.programStrategy.ProgramFetchOptions;
29 import net.sumaris.core.vo.administration.programStrategy.ProgramVO;
30 import net.sumaris.core.vo.administration.user.PersonVO;
31 import net.sumaris.core.vo.filter.ProgramFilterVO;
32 import net.sumaris.core.vo.referential.ReferentialVO;
33 import net.sumaris.core.vo.referential.TaxonGroupVO;
34 import org.springframework.cache.annotation.CacheEvict;
35 import org.springframework.cache.annotation.CachePut;
36 import org.springframework.cache.annotation.Cacheable;
37 import org.springframework.cache.annotation.Caching;
38 import org.springframework.transaction.annotation.Transactional;
39
40 import java.util.List;
41
42 public interface ProgramDao {
43
44 List<ProgramVO> getAll();
45
46 List<ProgramVO> findByFilter(ProgramFilterVO filter, int offset, int size, String sortAttribute, SortDirection sortDirection);
47
48 @Cacheable(cacheNames = CacheNames.PROGRAM_BY_ID)
49 ProgramVO get(int id);
50
51 @Cacheable(cacheNames = CacheNames.PROGRAM_BY_LABEL)
52 ProgramVO getByLabel(String label);
53
54 ProgramVO toProgramVO(Program source);
55
56 ProgramVO toProgramVO(Program source, ProgramFetchOptions fetchOptions);
57
58 @Caching(
59 evict = {
60 @CacheEvict(cacheNames = CacheNames.PROGRAM_BY_ID, key = "#source.id", condition = "#source.id != null"),
61 @CacheEvict(cacheNames = CacheNames.PROGRAM_BY_LABEL, key = "#source.label", condition = "#source.id != null"),
62 },
63 put = {
64 @CachePut(cacheNames= CacheNames.PROGRAM_BY_ID, key="#source.id", condition = " #source.id != null"),
65 @CachePut(cacheNames= CacheNames.PROGRAM_BY_LABEL, key="#source.label", condition = "#source.id != null")
66 }
67 )
68 ProgramVO="../../../../../../net/sumaris/core/vo/administration/programStrategy/ProgramVO.html#ProgramVO">ProgramVO save(ProgramVO source);
69
70 @Caching(
71 evict = {
72 @CacheEvict(cacheNames = CacheNames.PROGRAM_BY_LABEL, key = "#id", condition = "#source.id != null"),
73 @CacheEvict(cacheNames = CacheNames.PROGRAM_BY_ID, allEntries = true)
74 }
75 )
76 void delete(int id);
77
78 List<TaxonGroupVO> getTaxonGroups(int programId);
79
80 List<ReferentialVO> getGears(int programId);
81 }