diff --git a/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/exporter/GtfsDataProducer.java b/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/exporter/GtfsDataProducer.java index a4e181c6e..8fc0d8f9d 100644 --- a/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/exporter/GtfsDataProducer.java +++ b/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/exporter/GtfsDataProducer.java @@ -8,13 +8,14 @@ package fr.certu.chouette.exchange.gtfs.exporter; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import java.util.TimeZone; -import org.apache.log4j.Logger; - import lombok.Setter; +import org.apache.log4j.Logger; import fr.certu.chouette.exchange.gtfs.exporter.producer.IGtfsProducer; import fr.certu.chouette.exchange.gtfs.exporter.report.GtfsReport; @@ -98,6 +99,29 @@ public GtfsData produce(NeptuneData neptuneData,TimeZone timeZone, GtfsReport re throw new GtfsExportException(GtfsExportExceptionCode.ERROR, "missing data"); // check if no data for one or more types boolean error = false; + + // Trim references to non-existing or non-exported parent stations + Set stationIds = new HashSet(); + for (GtfsStop station : gtfsData.getStops()) + { + if (station.getLocationType() == GtfsStop.STATION) + { + stationIds.add(station.getStopId()); + } + } + for (GtfsStop stop : gtfsData.getStops()) + { + if (stop.getLocationType() == GtfsStop.STOP) + { + if (!stationIds.contains(stop.getParentStation())) + { + stop.setParentStation(null); + GtfsReportItem item = new GtfsReportItem(GtfsReportItem.KEY.MISSING_DATA, STATE.WARNING, "Stop", stop.getStopId(), "parentStation"); + report.addItem(item); + } + } + } + if (gtfsData.getAgencies().isEmpty()) { logger.error("no company for agencies.txt"); diff --git a/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/model/GtfsTime.java b/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/model/GtfsTime.java index e82275ad6..ee22f4c7c 100644 --- a/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/model/GtfsTime.java +++ b/chouette-exchange-gtfs/src/main/java/fr/certu/chouette/exchange/gtfs/model/GtfsTime.java @@ -10,6 +10,7 @@ import java.sql.Time; import java.text.MessageFormat; +import java.util.Calendar; import lombok.Getter; import lombok.Setter; @@ -59,15 +60,15 @@ public GtfsTime(Time time,boolean tomorrow) public String toString() { - - long h = time.getTime()/1000; - long s = h%60; - h=h/60; - long m = h % 60; - h=h/60; - if (tomorrow) h+= 24; + // This will use default JVM timezone + Calendar cal = Calendar.getInstance(); + cal.setTime(time); + long h = cal.get(Calendar.HOUR_OF_DAY); + long m = cal.get(Calendar.MINUTE); + long s = cal.get(Calendar.SECOND); + if (tomorrow) + h+=24; return MessageFormat.format(mfHoraireHMS,h,m,s); - } public String toSeconds()