View Javadoc
1   package fr.ifremer.dali.dao.referential;
2   
3   /*
4    * #%L
5    * Dali :: Core
6    * $Id:$
7    * $HeadURL:$
8    * %%
9    * Copyright (C) 2014 - 2015 Ifremer
10   * %%
11   * This program is free software: you can redistribute it and/or modify
12   * it under the terms of the GNU Affero General Public License as published by
13   * the Free Software Foundation, either version 3 of the License, or
14   * (at your option) any later version.
15   * 
16   * This program is distributed in the hope that it will be useful,
17   * but WITHOUT ANY WARRANTY; without even the implied warranty of
18   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19   * GNU General Public License for more details.
20   * 
21   * You should have received a copy of the GNU Affero General Public License
22   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23   * #L%
24   */
25  
26  import fr.ifremer.dali.dao.DaliDatabaseResource;
27  import fr.ifremer.dali.dto.referential.*;
28  import fr.ifremer.dali.service.DaliServiceLocator;
29  import fr.ifremer.dali.service.StatusFilter;
30  import fr.ifremer.quadrige3.core.dao.referential.StatusCode;
31  import fr.ifremer.quadrige3.core.test.AbstractDaoTest;
32  import fr.ifremer.quadrige3.ui.core.dto.referential.StatusDTO;
33  import org.apache.commons.lang3.builder.ToStringBuilder;
34  import org.apache.commons.lang3.builder.ToStringStyle;
35  import org.apache.commons.logging.Log;
36  import org.apache.commons.logging.LogFactory;
37  import org.junit.Before;
38  import org.junit.ClassRule;
39  import org.junit.Test;
40  import org.springframework.dao.DataRetrievalFailureException;
41  
42  import java.util.List;
43  
44  import static org.junit.Assert.*;
45  
46  public class ReferentialDaoReadTest extends AbstractDaoTest {
47  
48      private static final Log log = LogFactory.getLog(ReferentialDaoReadTest.class);
49  
50      @ClassRule
51      public static final DaliDatabaseResource dbResource = DaliDatabaseResource.readDb();
52  
53      private DaliReferentialDao dao;
54      private DaliAnalysisInstrumentDao analysisInstrumentDao;
55      private DaliSamplingEquipmentDao samplingEquipmentDao;
56      private DaliUnitDao unitDao;
57  
58  
59      @Before
60      @Override
61      public void setUp() throws Exception {
62          super.setUp();
63          dao = DaliServiceLocator.instance().getService("daliReferentialDao", DaliReferentialDao.class);
64          analysisInstrumentDao = DaliServiceLocator.instance().getService("daliAnalysisInstrumentDao", DaliAnalysisInstrumentDao.class);
65          samplingEquipmentDao = DaliServiceLocator.instance().getService("daliSamplingEquipmentDao", DaliSamplingEquipmentDao.class);
66          unitDao = DaliServiceLocator.instance().getService("daliUnitDao", DaliUnitDao.class);
67      }
68  
69      @Test
70      public void getAllDepthLevel() {
71          List<LevelDTO> depthLevels = dao.getAllDepthLevels();
72          assertNotNull(depthLevels);
73          assertEquals(3, depthLevels.size());
74  
75          if (log.isDebugEnabled()) {
76              for (LevelDTO dto : depthLevels) {
77                  log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
78              }
79          }
80  
81          LevelDTO depthLevel = dao.getDepthLevelById(1);
82          assertNotNull(depthLevel);
83          assertEquals("Immergé", depthLevel.getName());
84  
85          try {
86              dao.getDepthLevelById(10);
87              fail("should throw DataRetrievalFailureException");
88          } catch (DataRetrievalFailureException ex) {
89              assertNotNull(ex);
90          }
91      }
92      
93  //    @Test
94  //    public void getAllDepthValues() {
95  //        List<DepthDTO> depthValues = dao.getAllDepthValues();
96  //        assertNotNull(depthValues);
97  //        assertTrue(depthValues.size() > 0); // 6 in dataset
98  //
99  //        DepthDTO depthValue = dao.getDepthValueById(101);
100 //        assertNotNull(depthValue);
101 //
102 //        depthValue = dao.getDepthValueById(200);
103 //        assertNull(depthValue);
104 //    }
105     
106     @Test
107     public void getAllUnit() {
108         List<UnitDTO> units = unitDao.getAllUnits(StatusFilter.ACTIVE.toStatusCodes());
109         assertNotNull(units);
110         assertEquals(15, units.size());
111 
112         if (log.isDebugEnabled()) {
113             for (UnitDTO dto : units) {
114                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
115             }
116         }
117 
118         units = unitDao.findUnits(null, StatusFilter.ALL.intersect(StatusCode.DISABLE.getValue()));
119         assertNotNull(units);
120         assertEquals(0, units.size());
121 
122         units = unitDao.findUnits(2, StatusFilter.ACTIVE.toStatusCodes());
123         assertNotNull(units);
124         assertEquals(1, units.size());
125         assertEquals((Integer) 2, units.get(0).getId());
126 
127         UnitDTO unit = unitDao.getUnitById(1);
128         assertNotNull(unit);
129         assertEquals("%", unit.getSymbol());
130 
131         try {
132             unitDao.getUnitById(20);
133             fail("should throw DataRetrievalFailureException");
134         } catch (DataRetrievalFailureException ex) {
135             assertNotNull(ex);
136         }
137     }
138 
139     @Test
140     public void getAllSamplingEquipment() {
141         List<SamplingEquipmentDTO> samplingEquipments = samplingEquipmentDao.getAllSamplingEquipments(StatusFilter.ACTIVE.toStatusCodes());
142         assertNotNull(samplingEquipments);
143         assertEquals(4, samplingEquipments.size());
144 
145         if (log.isDebugEnabled()) {
146             for (SamplingEquipmentDTO dto : samplingEquipments) {
147                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
148             }
149         }
150 
151         samplingEquipments = samplingEquipmentDao.findSamplingEquipments(StatusFilter.ACTIVE.toStatusCodes(), null, 1);
152         assertNotNull(samplingEquipments);
153         assertEquals(0, samplingEquipments.size());
154 
155         samplingEquipments = samplingEquipmentDao.findSamplingEquipments(StatusFilter.ACTIVE.toStatusCodes(), 2, null);
156         assertNotNull(samplingEquipments);
157         assertEquals(1, samplingEquipments.size());
158         
159         SamplingEquipmentDTO samplingEquipment = samplingEquipmentDao.getSamplingEquipmentById(3);
160         assertNotNull(samplingEquipment);
161         assertEquals("Benne", samplingEquipment.getName());
162 
163         // transcribed sampling equipment
164         samplingEquipment = samplingEquipmentDao.getSamplingEquipmentById(1);
165         assertNotNull(samplingEquipment);
166         assertEquals("Bécher (DALI)", samplingEquipment.getName());
167 
168         try {
169             samplingEquipmentDao.getSamplingEquipmentById(7);
170             fail("should throw DataRetrievalFailureException");
171         } catch (DataRetrievalFailureException ex) {
172             assertNotNull(ex);
173         }
174     }
175 
176     @Test
177     public void getAllAnalysisInstrument() {
178         List<AnalysisInstrumentDTO> analysisInstruments = analysisInstrumentDao.getAllAnalysisInstruments(StatusFilter.ACTIVE.toStatusCodes());
179         assertNotNull(analysisInstruments);
180         assertEquals(3, analysisInstruments.size());
181 
182         if (log.isDebugEnabled()) {
183             for (AnalysisInstrumentDTO dto : analysisInstruments) {
184                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
185             }
186         }
187 
188         analysisInstruments = analysisInstrumentDao.findAnalysisInstruments(StatusFilter.ALL.intersect(StatusCode.DISABLE.getValue()), null);
189         assertNotNull(analysisInstruments);
190         assertEquals(1, analysisInstruments.size());
191         assertEquals((Integer) 4, analysisInstruments.get(0).getId());
192         
193         analysisInstruments = analysisInstrumentDao.findAnalysisInstruments(StatusFilter.ACTIVE.toStatusCodes(), 3);
194         assertNotNull(analysisInstruments);
195         assertEquals(1, analysisInstruments.size());
196         assertEquals((Integer) 3, analysisInstruments.get(0).getId());
197         
198 
199         AnalysisInstrumentDTO dto = analysisInstrumentDao.getAnalysisInstrumentById(2);
200         assertNotNull(dto);
201         assertEquals("Microscope optique", dto.getName());
202         assertEquals("1", dto.getStatus().getCode());
203 
204         dto = analysisInstrumentDao.getAnalysisInstrumentById(4);
205         assertNotNull(dto);
206         assertEquals("0", dto.getStatus().getCode());
207 
208         try {
209             analysisInstrumentDao.getAnalysisInstrumentById(5);
210             fail("should throw DataRetrievalFailureException");
211         } catch (DataRetrievalFailureException ex) {
212             assertNotNull(ex);
213         }
214     }
215 
216     @Test
217     public void getAllStatus() {
218         List<StatusDTO> status = dao.getStatusByCodes(StatusFilter.ACTIVE.toStatusCodes());
219         assertNotNull(status);
220         assertEquals(1, status.size());
221 
222         if (log.isDebugEnabled()) {
223             for (StatusDTO dto : status) {
224                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
225             }
226         }
227 
228     }
229 
230     @Test
231     public void getAllQualityLevel() {
232         List<QualityLevelDTO> qualityLevels = dao.getAllQualityFlags(StatusFilter.ACTIVE.toStatusCodes());
233         assertNotNull(qualityLevels);
234         assertEquals(4, qualityLevels.size());
235 
236         QualityLevelDTO qualityLevel = dao.getQualityFlagByCode("0");
237         assertNotNull(qualityLevel);
238         assertEquals("non qualifié", qualityLevel.getName());
239         
240         if (log.isDebugEnabled()) {
241             for (QualityLevelDTO dto : qualityLevels) {
242                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
243             }
244         }
245 
246     }
247 
248     @Test
249     public void getAllPositioningSystem() {
250         List<PositioningSystemDTO> positioningSystems = dao.getAllPositioningSystems();
251         assertNotNull(positioningSystems);
252         assertEquals(12, positioningSystems.size());
253 
254         if (log.isDebugEnabled()) {
255             for (PositioningSystemDTO dto : positioningSystems) {
256                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
257             }
258         }
259 
260     }
261 
262     @Test
263     public void getAllGroupingType() {
264         List<GroupingTypeDTO> groupingTypes = dao.getAllGroupingTypes();
265         assertNotNull(groupingTypes);
266         assertEquals(3, groupingTypes.size());
267         if (log.isDebugEnabled()) {
268             for (GroupingTypeDTO dto : groupingTypes) {
269                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
270             }
271         }
272 
273         final String groupingTypeCode = "ZONESMARINES";
274         boolean found = false;
275         for (GroupingTypeDTO groupingType : groupingTypes) {
276             if (groupingTypeCode.equals(groupingType.getCode())) {
277                 found = true;
278                 break;
279             }
280         }
281         assertTrue(found);
282 
283         List<GroupingDTO> groupings = dao.getGroupingsByType(groupingTypeCode);
284         assertNotNull(groupings);
285         assertEquals(2, groupings.size());
286         if (log.isDebugEnabled()) {
287             for (GroupingDTO dto : groupings) {
288                 log.debug(ToStringBuilder.reflectionToString(dto, ToStringStyle.SHORT_PREFIX_STYLE));
289             }
290         }
291 
292     }
293 }