1 package fr.ifremer.dali.dao.system.extraction;
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.config.DaliConfiguration;
27 import fr.ifremer.dali.dto.referential.pmfm.PmfmDTO;
28 import fr.ifremer.dali.dto.referential.pmfm.QualitativeValueDTO;
29 import fr.ifremer.quadrige3.core.dao.referential.transcribing.TranscribingItemExtendDao;
30 import fr.ifremer.quadrige3.core.dao.technical.Assert;
31 import fr.ifremer.quadrige3.core.dao.technical.csv.CSVDaoImpl;
32 import org.springframework.beans.factory.annotation.Autowired;
33 import org.springframework.context.annotation.Lazy;
34 import org.springframework.dao.DataRetrievalFailureException;
35 import org.springframework.jdbc.core.RowMapper;
36 import org.springframework.stereotype.Repository;
37
38 import javax.annotation.Resource;
39 import javax.sql.DataSource;
40 import java.util.List;
41 import java.util.Map;
42 import java.util.Optional;
43 import java.util.Properties;
44
45
46
47
48
49
50 @Repository("daliExtractionResultDao")
51 @Lazy
52 public class DaliExtractionResultDaoImpl extends CSVDaoImpl implements DaliExtractionResultDao {
53
54 private final Properties connectionProperties;
55
56 @Resource(name = "transcribingItemDao")
57 private TranscribingItemExtendDao transcribingItemDao;
58
59 @Resource
60 protected DaliConfiguration config;
61
62
63
64
65
66
67 @Autowired
68 public DaliExtractionResultDaoImpl(DataSource dataSource) {
69 super(dataSource);
70 this.connectionProperties = null;
71 }
72
73
74
75
76 public DaliExtractionResultDaoImpl() {
77 this((Properties) null);
78 }
79
80
81
82
83
84
85 public DaliExtractionResultDaoImpl(Properties connectionProperties) {
86 super();
87 this.connectionProperties = connectionProperties;
88 }
89
90 @Override
91 public long queryCount(String query) {
92 return queryCount(query, null);
93 }
94
95
96
97
98 @Override
99 public long queryCount(String query, Map<String, Object> queryBindings) {
100 Long count = queryCount(connectionProperties, query, queryBindings);
101 if (count == null) throw new DataRetrievalFailureException(String.format("query count result is null: %s ; bindings=%s", query, queryBindings));
102 return count;
103 }
104
105
106
107
108 @Override
109 public <T> List<T> query(String sql, Map<String, Object> queryBindings, RowMapper<T> rowMapper) {
110 return query(connectionProperties, sql, queryBindings, rowMapper);
111 }
112
113 @Override
114 public int queryUpdate(String query) {
115 return queryUpdate(query, null);
116 }
117
118
119
120
121 @Override
122 public int queryUpdate(String query, Map<String, Object> paramMap) {
123 return queryUpdate(connectionProperties, query, paramMap);
124 }
125
126 @Override
127 public String getPmfmNameForExtraction(PmfmDTO pmfm) {
128 Assert.notNull(pmfm);
129 return Optional
130 .ofNullable(transcribingItemDao.getTranscribingItemById(config.getTranscribingItemTypeLbForPmfmExtraction(), pmfm.getId()))
131 .orElse(
132 Optional.ofNullable(transcribingItemDao.getTranscribingItemById(config.getTranscribingItemTypeLbForPmfmNm(), pmfm.getId()))
133 .orElse(
134 Optional.ofNullable(pmfm.getName())
135 .orElse(pmfm.getParameter().getName())
136 )
137 );
138 }
139
140 @Override
141 public String getPmfmUnitNameForExtraction(PmfmDTO pmfm) {
142 Assert.notNull(pmfm);
143 return pmfm.getUnit() == null || config.getExtractionUnitIdsToIgnore().contains(pmfm.getUnit().getId()) ? "" : pmfm.getUnit().getName();
144 }
145
146 @Override
147 public String getQualitativeValueNameForExtraction(QualitativeValueDTO qualitativeValue) {
148 Assert.notNull(qualitativeValue);
149 return Optional
150 .ofNullable(transcribingItemDao.getTranscribingItemById(config.getTranscribingItemTypeLbForQualitativeValueExtraction(), qualitativeValue.getId()))
151 .orElse(
152 Optional.ofNullable(transcribingItemDao.getTranscribingItemById(config.getTranscribingItemTypeLbForQualitativeValueNm(), qualitativeValue.getId()))
153 .orElse(qualitativeValue.getName())
154 );
155 }
156
157 }