Author: tchemit Date: 2012-08-10 12:07:50 +0200 (Fri, 10 Aug 2012) New Revision: 386 Url: http://forge.codelutin.com/repositories/revision/sammoa/386 Log: refs #1203: Export SHP (retains observations and add more logs) Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-10 10:07:01 UTC (rev 385) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/map/ExportMapService.java 2012-08-10 10:07:50 UTC (rev 386) @@ -52,6 +52,7 @@ import fr.ulr.sammoa.persistence.Transect; import fr.ulr.sammoa.persistence.TransectFlight; import org.nuiton.topia.TopiaContext; +import org.nuiton.util.PeriodDates; import org.nuiton.util.TimeLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -413,6 +414,13 @@ for (Route route : routes) { + if (logger.isDebugEnabled()) { + logger.debug("Export Observations from route {} - {} (flight end time {})", + new Object[]{route.getBeginTime(), + route.getRouteType(), + flight.getEndDate()} + ); + } nextRouteIndex++; boolean routeIsLeg = Routes.isRouteLeg(route); @@ -423,6 +431,38 @@ effortGroup = null; } + // compute route period + Date beginTime = route.getBeginTime(); + Date routeEndTime; + + if (nextRouteIndex < nbRoutes) { + + // use next route begin time + Route nextRoute = routes.get(nextRouteIndex); + routeEndTime = nextRoute.getBeginTime(); + } else { + + // use flight end date + routeEndTime = flight.getEndDate(); + } + Preconditions.checkState(routeEndTime.after(beginTime), + String.format("Route debut de route %s - fin de route %s", beginTime, routeEndTime)); + + PeriodDates routePeriod = + new PeriodDates(beginTime, routeEndTime); + + // Get observations for this route + List<Observation> routeObservations = + Observations.retainsObservations(observations, + routePeriod); + + if (logger.isDebugEnabled()) { + logger.debug("Export Observations from route {} [{}-{}] nb observations {}", + new Object[]{beginTime, + routeEndTime, + routeObservations.size()} + ); + } if (!Routes.isRouteAccepted(route, routeTypes, strates)) { // not selected route @@ -440,26 +480,6 @@ fillRouteTypeRecord(flight, route, effortGroup, routeRecord); - // get routeEndTime - Date routeEndTime; - - if (nextRouteIndex < nbRoutes) { - - // use next route begin time - Route nextRoute = routes.get(nextRouteIndex); - routeEndTime = nextRoute.getBeginTime(); - } else { - - // use flight end date - routeEndTime = flight.getEndDate(); - } - - // Get observations for this route - List<Observation> routeObservations = - Observations.getObservations(observations, - route.getBeginTime(), - routeEndTime); - // get best geo points for each observation Iterable<GeoPoint> observationGeoPoints = GeoPoints.getClosestPoints( Modified: trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java =================================================================== --- trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java 2012-08-10 10:07:01 UTC (rev 385) +++ trunk/sammoa-persistence/src/main/java/fr/ulr/sammoa/persistence/Observations.java 2012-08-10 10:07:50 UTC (rev 386) @@ -92,16 +92,16 @@ } }; - public static List<Observation> getObservations(List<Observation> observations, - Date beginTime, - Date endTime) { + public static List<Observation> retainsObservations(List<Observation> observations, + PeriodDates periodDate) { - PeriodDates periodDate = new PeriodDates(beginTime, endTime); - List<Observation> result = Lists.newArrayList(); - for (Observation observation : observations) { + Iterator<Observation> itr = observations.iterator(); + while (itr.hasNext()) { + Observation observation = itr.next(); Date observationTime = observation.getObservationTime(); if (periodDate.between(observationTime)) { + itr.remove(); result.add(observation); } }
participants (1)
-
tchemit@users.forge.codelutin.com