1 package net.sumaris.core.dao.data;
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.technical.SortDirection;
26 import net.sumaris.core.model.data.IRootDataEntity;
27 import net.sumaris.core.vo.data.DataFetchOptions;
28 import net.sumaris.core.vo.data.IRootDataVO;
29 import net.sumaris.core.vo.filter.IRootDataFilter;
30 import org.apache.commons.lang3.NotImplementedException;
31
32 import java.util.Date;
33 import java.util.List;
34
35 public interface IRootDataDao<
36 E extends IRootDataEntity<ID>,
37 ID extends Integer,
38 V extends IRootDataVO<Integer>,
39 F extends IRootDataFilter>
40 {
41
42
43
44 List<V> findByFilter(F filter, int offset, int size, String sortAttribute,
45 SortDirection sortDirection, DataFetchOptions fetchOptions);
46
47 Long countByFilter(F filter);
48
49 V get(int id);
50
51 <C> C get(int id, Class<C> targetClass);
52
53 void delete(int id);
54
55 V save(V vo);
56
57 V toVO(E entity);
58
59 default V control(V vo) {
60 throw new NotImplementedException("Not implemented yet");
61 }
62
63 default V validate(V vo) {
64 throw new NotImplementedException("Not implemented yet");
65 }
66
67 default V unvalidate(V vo) {
68 throw new NotImplementedException("Not implemented yet");
69 }
70 }