1 package net.sumaris.core.extraction.dao.trip;
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 com.google.common.collect.Lists;
26 import net.sumaris.core.extraction.dao.ExtractionDao;
27 import net.sumaris.core.extraction.vo.ExtractionFilterCriterionVO;
28 import net.sumaris.core.extraction.vo.ExtractionFilterOperatorEnum;
29 import net.sumaris.core.extraction.vo.ExtractionFilterVO;
30 import net.sumaris.core.extraction.vo.trip.ExtractionTripFilterVO;
31 import net.sumaris.core.util.Beans;
32 import net.sumaris.core.util.Dates;
33 import net.sumaris.core.util.StringUtils;
34 import org.apache.commons.collections4.CollectionUtils;
35
36 import java.util.List;
37
38
39
40
41 public interface ExtractionTripDao extends ExtractionDao {
42
43 String TR_SHEET_NAME = "TR";
44
45 default ExtractionTripFilterVO toTripFilterVO(ExtractionFilterVO source){
46 ExtractionTripFilterVOtractionTripFilterVO.html#ExtractionTripFilterVO">ExtractionTripFilterVO target = new ExtractionTripFilterVO();
47 if (source == null) return target;
48
49 Beans.copyProperties(source, target);
50 target.setPreview(source.isPreview());
51
52 if (CollectionUtils.isNotEmpty(source.getCriteria())) {
53
54 source.getCriteria().stream()
55 .filter(criterion ->
56 org.apache.commons.lang3.StringUtils.isNotBlank(criterion.getValue())
57 && "=".equals(criterion.getOperator()))
58 .forEach(criterion -> {
59 switch (criterion.getName().toLowerCase()) {
60 case "project":
61 target.setProgramLabel(criterion.getValue());
62 break;
63 case "year":
64 int year = Integer.parseInt(criterion.getValue());
65 target.setStartDate(Dates.getFirstDayOfYear(year));
66 target.setEndDate(Dates.getLastSecondOfYear(year));
67 break;
68 }
69 });
70 }
71 return target;
72 }
73
74 default ExtractionFilterVO toExtractionFilterVO(ExtractionTripFilterVO source){
75 ExtractionFilterVOractionFilterVO.html#ExtractionFilterVO">ExtractionFilterVO target = new ExtractionFilterVO();
76 if (source == null) return target;
77
78 Beans.copyProperties(source, target);
79
80 List<ExtractionFilterCriterionVO> criteria = Lists.newArrayList();
81 target.setCriteria(criteria);
82
83 if (StringUtils.isNotBlank(source.getProgramLabel())) {
84 ExtractionFilterCriterionVOrCriterionVO.html#ExtractionFilterCriterionVO">ExtractionFilterCriterionVO criterion = new ExtractionFilterCriterionVO();
85 criterion.setName("project");
86 criterion.setOperator(ExtractionFilterOperatorEnum.EQUALS.getSymbol());
87 criterion.setValue(source.getProgramLabel());
88
89 criterion.setSheetName(TR_SHEET_NAME);
90
91 criteria.add(criterion);
92 }
93
94 if (source.getStartDate() != null && source.getEndDate() != null) {
95
96 }
97
98 return target;
99 }
100 }