1 package fr.ifremer.dali.dao.referential.pmfm;
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.service.DaliServiceLocator;
27 import fr.ifremer.quadrige3.core.service.technical.CacheService;
28 import fr.ifremer.quadrige3.core.test.AbstractDaoTest;
29 import fr.ifremer.dali.dao.DaliDatabaseResource;
30 import fr.ifremer.dali.dao.referential.DaliUnitDao;
31 import fr.ifremer.dali.dto.DaliBeans;
32 import fr.ifremer.dali.dto.referential.pmfm.*;
33 import fr.ifremer.dali.service.StatusFilter;
34 import org.apache.commons.lang3.builder.ToStringBuilder;
35 import org.apache.commons.lang3.builder.ToStringStyle;
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38 import org.junit.Before;
39 import org.junit.ClassRule;
40 import org.junit.Test;
41 import org.nuiton.util.TimeLog;
42 import org.springframework.dao.DataRetrievalFailureException;
43
44 import java.util.List;
45 import java.util.Map;
46
47 import static org.junit.Assert.*;
48
49 public class PmfmDaoReadTest extends AbstractDaoTest {
50
51 private static final Log log = LogFactory.getLog(PmfmDaoReadTest.class);
52 private static final TimeLog timeLog = new TimeLog(PmfmDaoReadTest.class, 5000, 1000);
53
54 @ClassRule
55 public static final DaliDatabaseResource dbResource = DaliDatabaseResource.readDb();
56
57 private DaliPmfmDao pmfmDao;
58 private DaliParameterDao parameterDao;
59 private DaliMatrixDao matrixDao;
60 private DaliFractionDao fractionDao;
61 private DaliMethodDao methodDao;
62 private DaliUnitDao unitDao;
63 private DaliQualitativeValueDao qualitativeValueDao;
64 private CacheService cacheService;
65
66 @Before
67 @Override
68 public void setUp() throws Exception {
69 super.setUp();
70 pmfmDao = DaliServiceLocator.instance().getService("daliPmfmDao", DaliPmfmDao.class);
71 parameterDao = DaliServiceLocator.instance().getService("daliParameterDao", DaliParameterDao.class);
72 matrixDao = DaliServiceLocator.instance().getService("daliMatrixDao", DaliMatrixDao.class);
73 fractionDao = DaliServiceLocator.instance().getService("daliFractionDao", DaliFractionDao.class);
74 methodDao = DaliServiceLocator.instance().getService("daliMethodDao", DaliMethodDao.class);
75 unitDao = DaliServiceLocator.instance().getService("daliUnitDao", DaliUnitDao.class);
76 cacheService = DaliServiceLocator.instance().getCacheService();
77 qualitativeValueDao = DaliServiceLocator.instance().getService("daliQualitativeValueDao", DaliQualitativeValueDao.class);
78 }
79
80 @Test
81 public void getParameterGroup() {
82 List<ParameterGroupDTO> parameterGroups = parameterDao.getAllParameterGroups(StatusFilter.ACTIVE.toStatusCodes());
83 assertNotNull(parameterGroups);
84 assertEquals(8, parameterGroups.size());
85 if (log.isDebugEnabled()) {
86 for (ParameterGroupDTO dto : parameterGroups) {
87 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
88 }
89 }
90
91 ParameterGroupDTO parameterGroup = parameterDao.getParameterGroupById(3);
92 assertNotNull(parameterGroup);
93 assertEquals("Biologie", parameterGroup.getName());
94
95 parameterGroup = parameterDao.getParameterGroupById(5);
96 assertNotNull(parameterGroup);
97 assertEquals("Métaux", parameterGroup.getName());
98 assertNotNull(parameterGroup.getParentParameterGroup());
99 assertEquals((Integer) 2, parameterGroup.getParentParameterGroup().getId());
100 }
101
102 @Test
103 public void getMethod() {
104 List<MethodDTO> methods = methodDao.getAllMethods(StatusFilter.ACTIVE.toStatusCodes());
105 assertNotNull(methods);
106 assertEquals(9, methods.size());
107 if (log.isDebugEnabled()) {
108 for (MethodDTO dto : methods) {
109 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
110 }
111 }
112
113 MethodDTO method = methodDao.getMethodById(6);
114 assertNotNull(method);
115 assertEquals("Gravimétie 500°C", method.getName());
116
117 try {
118 methodDao.getMethodById(10);
119 fail("should throw DataRetrievalFailureException");
120 } catch (DataRetrievalFailureException ex) {
121 assertNotNull(ex);
122 }
123
124 }
125
126 @Test
127 public void getFraction() {
128 List<FractionDTO> fractions = fractionDao.getAllFractions(StatusFilter.ACTIVE.toStatusCodes());
129 assertNotNull(fractions);
130 assertEquals(5, fractions.size());
131 if (log.isDebugEnabled()) {
132 for (FractionDTO dto : fractions) {
133 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
134 }
135 }
136
137 FractionDTO fraction = fractionDao.getFractionById(1);
138 assertNotNull(fraction);
139 assertEquals("Aucune", fraction.getName());
140 assertEquals(4, fraction.sizeMatrixes());
141
142 try {
143 fractionDao.getFractionById(10);
144 fail("should throw DataRetrievalFailureException");
145 } catch (DataRetrievalFailureException ex) {
146 assertNotNull(ex);
147 }
148 }
149
150 @Test
151 public void testFractionCache() {
152
153 long startTime = TimeLog.getTime();
154
155 List<FractionDTO> fractions = fractionDao.getAllFractions(StatusFilter.ACTIVE.toStatusCodes());
156 assertNotNull(fractions);
157 assertEquals(5, fractions.size());
158 startTime = timeLog.log(startTime, "fractions loaded");
159
160 cacheService.clearAllCaches();
161 startTime = timeLog.log(startTime, "cache cleared");
162 matrixDao.getAllMatrices(StatusFilter.ACTIVE.toStatusCodes());
163 startTime = timeLog.log(startTime, "caches loaded");
164
165 fractions = fractionDao.getAllFractions(StatusFilter.ACTIVE.toStatusCodes());
166 assertNotNull(fractions);
167 assertEquals(5, fractions.size());
168 startTime = timeLog.log(startTime, "fractions loaded");
169
170 }
171
172 @Test
173 public void getMatrix() {
174 List<MatrixDTO> matrices = matrixDao.getAllMatrices(StatusFilter.ACTIVE.toStatusCodes());
175 assertNotNull(matrices);
176 assertEquals(5, matrices.size());
177 if (log.isDebugEnabled()) {
178 for (MatrixDTO dto : matrices) {
179 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
180 }
181 }
182
183 MatrixDTO matrix = matrixDao.getMatrixById(2);
184 assertNotNull(matrix);
185 assertEquals("Bivalve", matrix.getName());
186
187 try {
188 matrixDao.getMatrixById(10);
189 fail("should throw DataRetrievalFailureException");
190 } catch (DataRetrievalFailureException ex) {
191 assertNotNull(ex);
192 }
193 }
194
195 @Test
196 public void getQualitativeValue() {
197 List<QualitativeValueDTO> qualValues = qualitativeValueDao.getQualitativeValuesByParameterCode("SALMOI");
198 assertNotNull(qualValues);
199 assertEquals(3, qualValues.size());
200 if (log.isDebugEnabled()) {
201 for (QualitativeValueDTO dto : qualValues) {
202 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
203 }
204 }
205 qualValues = qualitativeValueDao.getQualitativeValuesByParameterCode("BAD");
206 assertNotNull(qualValues);
207 assertEquals(0, qualValues.size());
208
209 QualitativeValueDTO qualValue = qualitativeValueDao.getQualitativeValueById(1);
210 assertNotNull(qualValue);
211 assertEquals("Présentes", qualValue.getName());
212 }
213
214 @Test
215 public void getParameter() {
216 List<ParameterDTO> parameters = parameterDao.getAllParameters(StatusFilter.ACTIVE.toStatusCodes());
217 assertNotNull(parameters);
218 assertTrue(parameters.size() >= 10);
219 if (log.isDebugEnabled()) {
220 for (ParameterDTO dto : parameters) {
221 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
222 }
223 }
224
225 try {
226 parameterDao.getParameterGroupById(10);
227 fail("should throw DataRetrievalFailureException");
228 } catch (DataRetrievalFailureException ex) {
229 assertNotNull(ex);
230 }
231
232 ParameterDTO parameter = parameterDao.getParameterByCode("AL");
233 assertNotNull(parameter);
234 assertEquals("Aluminium total", parameter.getName());
235 assertNotNull(parameter.getParameterGroup());
236 assertEquals((Integer) 5, parameter.getParameterGroup().getId());
237
238 try {
239 parameterDao.getParameterByCode("BAD");
240 fail("should throw DataRetrievalFailureException");
241 } catch (DataRetrievalFailureException ex) {
242 assertNotNull(ex);
243 }
244 }
245
246 @Test
247 public void getPmfm() {
248
249 List<PmfmDTO> allPmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
250 assertNotNull(allPmfms);
251 assertTrue(allPmfms.size() >= 25);
252 if (log.isDebugEnabled()) {
253 for (PmfmDTO dto : allPmfms) {
254 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
255 }
256 }
257
258 try {
259 pmfmDao.getPmfmById(1000);
260 fail("should throw a DataRetrievalFailureException");
261 } catch (DataRetrievalFailureException ex) {
262 assertNotNull(ex);
263 }
264
265 PmfmDTO pmfm = pmfmDao.getPmfmById(13);
266 assertNotNull(pmfm);
267 assertEquals("BIOMZOO", pmfm.getParameter().getCode());
268 assertNotNull(pmfm.getParameter().getParameterGroup());
269 assertEquals((Integer) 6, pmfm.getParameter().getParameterGroup().getId());
270 assertNotNull(pmfm.getParameter().getParameterGroup().getParentParameterGroup());
271 assertEquals((Integer) 3, pmfm.getParameter().getParameterGroup().getParentParameterGroup().getId());
272 assertEquals((Integer) 3, pmfm.getMatrix().getId());
273 assertEquals((Integer) 2, pmfm.getFraction().getId());
274 assertEquals((Integer) 6, pmfm.getMethod().getId());
275 if (log.isDebugEnabled()) {
276 log.debug(ToStringBuilder.reflectionToString(pmfm, ToStringStyle.SHORT_PREFIX_STYLE));
277 }
278
279 pmfm = pmfmDao.getPmfmById(29);
280 assertNotNull(pmfm);
281 assertEquals("ASTAXO", pmfm.getParameter().getCode());
282 assertEquals((Integer) 1, pmfm.getMatrix().getId());
283 assertEquals((Integer) 1, pmfm.getFraction().getId());
284 assertEquals((Integer) 3, pmfm.getMethod().getId());
285 if (log.isDebugEnabled()) {
286 log.debug(ToStringBuilder.reflectionToString(pmfm, ToStringStyle.SHORT_PREFIX_STYLE));
287 }
288
289
290 List<PmfmDTO> pmfms = pmfmDao.findPmfms(null, null, null, null, null, null, StatusFilter.ACTIVE.toStatusCodes());
291 assertNotNull(pmfms);
292 assertEquals(allPmfms.size(), pmfms.size());
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326 }
327
328 @Test
329 public void getPmfmWithTranscribing() {
330
331 List<PmfmDTO> allPmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
332 assertNotNull(allPmfms);
333
334 Map<Integer, PmfmDTO> pmfmByIds = DaliBeans.mapById(allPmfms);
335 PmfmDTO pmfmWithTranscribing = pmfmByIds.get(dbResource.getFixtures().getPmfmIdWithTranscribing());
336 assertNotNull(pmfmWithTranscribing);
337 assertNotNull(pmfmWithTranscribing.getName());
338 assertNotNull(pmfmWithTranscribing.getParameter());
339 assertNotNull(pmfmWithTranscribing.getParameter().getName());
340
341 boolean nameStartWithParameterName = pmfmWithTranscribing.getName().startsWith(pmfmWithTranscribing.getParameter().getName());
342 boolean isTranscribing = !nameStartWithParameterName;
343 assertTrue(isTranscribing);
344 }
345
346 @Test
347 public void testPmfmCache() {
348
349 long startTime = TimeLog.getTime();
350
351
352 cacheService.clearAllCaches();
353 startTime = timeLog.log(startTime, "cache cleared");
354
355
356 List<PmfmDTO> pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
357 startTime = timeLog.log(startTime, "pmfms loaded");
358 pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
359 startTime = timeLog.log(startTime, "pmfms loaded");
360 pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
361 startTime = timeLog.log(startTime, "pmfms loaded");
362
363
364 cacheService.clearAllCaches();
365 startTime = timeLog.log(startTime, "cache cleared");
366
367
368 parameterDao.getAllParameterGroups(StatusFilter.ACTIVE.toStatusCodes());
369 parameterDao.getAllParameters(StatusFilter.ACTIVE.toStatusCodes());
370 matrixDao.getAllMatrices(StatusFilter.ACTIVE.toStatusCodes());
371 fractionDao.getAllFractions(StatusFilter.ACTIVE.toStatusCodes());
372 methodDao.getAllMethods(StatusFilter.ACTIVE.toStatusCodes());
373 unitDao.getAllUnits(StatusFilter.ACTIVE.toStatusCodes());
374 startTime = timeLog.log(startTime, "caches loaded");
375
376
377 pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
378 startTime = timeLog.log(startTime, "pmfms loaded");
379 pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
380 startTime = timeLog.log(startTime, "pmfms loaded");
381 pmfms = pmfmDao.getAllPmfms(StatusFilter.ACTIVE.toStatusCodes());
382 startTime = timeLog.log(startTime, "pmfms loaded");
383
384 }
385
386 }