r191 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence main/java/fr/ifremer/tutti/persistence/service test/java/fr/ifremer/tutti/persistence/service
Author: blavenier Date: 2013-01-14 16:35:44 +0100 (Mon, 14 Jan 2013) New Revision: 191 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/191 Log: fix vessel loading (and query param statusValid, statusTemporary) fix cruise loading to pass Unit test change enumeration on Status into String (= code but not an id) Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-14 13:55:40 UTC (rev 190) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-14 15:35:44 UTC (rev 191) @@ -117,10 +117,10 @@ public final Integer RECTANGLE_STATISTIQUE_MED = null; @Value("${StatusCode.ENABLE}") - public final Integer STATUS_VALID_CODE = null; + public final String STATUS_VALID_CODE = null; @Value("${StatusCode.TEMPORARY}") - public final Integer STATUS_TEMPORARY_CODE = null; + public final String STATUS_TEMPORARY_CODE = null; @Value("${PersonId.UNKNOWN_RECORDER_PERSON}") public final Integer PERSON_ID_UNKNOWN_RECORDER_PERSON = null; Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-14 13:55:40 UTC (rev 190) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-14 15:35:44 UTC (rev 191) @@ -45,10 +45,13 @@ import org.hibernate.type.IntegerType; import org.hibernate.type.StringType; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataRetrievalFailureException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; + +import java.sql.Timestamp; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -119,6 +122,9 @@ "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id), "countryLocationLevelId", IntegerType.INSTANCE, enumeration.LOCATION_LEVEL_ID_COUNTRY); + if (source == null) { + throw new DataRetrievalFailureException("Could not retrieve cruise with id=" + id); + } Cruise result = new Cruise(); result.setId(id); @@ -138,45 +144,95 @@ c.setLabel(countryLabel); result.setCountry(c); - result.setBeginDate((Date) source[6]); + Timestamp beginDate = (Timestamp) source[6]; + if (beginDate != null && result.getYear() != null) { + calendar.setTimeInMillis(0); + calendar.set(Calendar.YEAR, result.getYear()); + calendar.add(Calendar.MILLISECOND, 1); + // Comparison with getTime() is need, to keep millisecond precision + if (beginDate.getTime() == calendar.getTimeInMillis()) { + // if BeginDate is fake : set to null (see createCruise for details) + result.setBeginDate(null); + } + else { + result.setBeginDate(new Date(beginDate.getTime())); + } + } + result.setEndDate((Date) source[7]); - - List<Vessel> vessels = Lists.newArrayList(); - + String vesselCode = (String) source[8]; Vessel vessel = referentielService.getVessel(vesselCode); - vessels.add(vessel); + result.setVessel(Lists.newArrayList(vessel)); Integer managerId = (Integer) source[9]; - Person manager = referentielService.getPerson(managerId); - result.setHeadOfMission(Lists.newArrayList(manager)); + if (managerId != null && managerId.equals(enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON)) { + result.setHeadOfMission(null); + } + else { + Person manager = referentielService.getPerson(managerId); + result.setHeadOfMission(Lists.newArrayList(manager)); + } + result.setComment((String) source[10]); - - // get gears - Iterator<Integer> gearIds = queryListTyped( - "allCruiseGears", - "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id)); - - List<Gear> gears = Lists.newArrayList(); - while (gearIds.hasNext()) { - Integer gearCode = gearIds.next(); - Gear target = referentielService.getGear(gearCode); - gears.add(target); + + String miscData = (String) source[11]; + if (miscData != null && miscData.length() > 0) { + + // Retrieve gears : + int gearTagIndex = miscData.indexOf(CRUISE_MISC_DATA_GEARS_TAG); + if (gearTagIndex == -1) { + result.setGear(null); + } + else { + String gearIdsStr = miscData.substring(gearTagIndex + CRUISE_MISC_DATA_GEARS_TAG.length()).trim(); + miscData = miscData.substring(0, gearTagIndex); + if (gearIdsStr.isEmpty()) { + result.setGear(null); + } + else { + List<Gear> gears = Lists.newArrayList(); + String[] gearIds = gearIdsStr.split(","); + for (int i = 0; i < gearIds.length; i++) { + Integer gearId = Integer.valueOf(gearIds[i]); + gears.add(referentielService.getGear(gearId)); + } + result.setGear(gears); + } + } + + // Retrieve secondary vessels : + int vesselTagIndex = miscData.indexOf(CRUISE_MISC_DATA_VESSELS_TAG); + if (vesselTagIndex != -1) { + String vesselCodesStr = miscData.substring(vesselTagIndex + CRUISE_MISC_DATA_VESSELS_TAG.length()).trim(); + if (!vesselCodesStr.isEmpty()) { + String[] vesselCodes = vesselCodesStr.split(","); + for (int i = 0; i < vesselCodes.length; i++) { + vesselCode = vesselCodes[i]; + result.addVessel(referentielService.getVessel(vesselCode)); + } + } + } } - - // get secondary vessels - Iterator<String> vesselIds = queryListTyped( - "allCruiseSecondaryVessels", - "cruiseId", IntegerType.INSTANCE, Integer.valueOf(id)); - - while (vesselIds.hasNext()) { - String vesselId = vesselIds.next(); - vessel = referentielService.getVessel(vesselId); - vessels.add(vessel); + + // get secondary gears from fishingOperation (first load from Allegro DB only) + if (result.getGear() == null) { + Iterator<Object[]> list = queryList( + "cruiseGears", + "cruiseId", StringType.INSTANCE, id); + + List<Gear> gears = Lists.newArrayList(); + while (list.hasNext()) { + Object[] zoneSource = list.next(); + Gear target = new Gear(); + target.setId(String.valueOf(zoneSource[0])); + target.setLabel((String) zoneSource[1]); + target.setName((String) zoneSource[2]); + gears.add(target); + } + result.setGear(gears); } - - result.setVessel(vessels); return result; } Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java =================================================================== --- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 13:55:40 UTC (rev 190) +++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-14 15:35:44 UTC (rev 191) @@ -155,7 +155,10 @@ Object[] source = queryUniqueWithStatus( "vessel", "vesselCode", StringType.INSTANCE, vesselCode, - "refDate", DateType.INSTANCE, new Date()); + "refDate", DateType.INSTANCE, new Date(), + "statusValidCode", StringType.INSTANCE, enumeration.STATUS_VALID_CODE, + "statusTemporaryCode", StringType.INSTANCE, enumeration.STATUS_TEMPORARY_CODE + ); Vessel result = loadVessel(source); return result; } Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java =================================================================== --- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-14 13:55:40 UTC (rev 190) +++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-14 15:35:44 UTC (rev 191) @@ -89,7 +89,6 @@ Assert.assertNotNull(result); } - @Ignore @Test public void createCruise(/*Cruise bean*/) { String programCode = dbResource.getFixtures().programCode();
participants (1)
-
blavenier@users.forge.codelutin.com