diff --git a/src/main/java/com/conveyal/gtfs/loader/JdbcGtfsExporter.java b/src/main/java/com/conveyal/gtfs/loader/JdbcGtfsExporter.java index 8e1b08878..64292716a 100644 --- a/src/main/java/com/conveyal/gtfs/loader/JdbcGtfsExporter.java +++ b/src/main/java/com/conveyal/gtfs/loader/JdbcGtfsExporter.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -163,7 +164,12 @@ public FeedLoadResult exportTables() { for (Calendar cal : calendars) { Service service = new Service(cal.service_id); service.calendar = cal; - for (ScheduleException ex : calendarExceptions) { + List exceptionsForCalendar = calendarExceptions.stream().filter(ex -> + ex.addedService.contains(cal.service_id) || + ex.removedService.contains(cal.service_id) || + ex.customSchedule.contains(cal.service_id) + ).collect(Collectors.toList()); + for (ScheduleException ex : exceptionsForCalendar) { for (LocalDate date : ex.dates) { if (date.isBefore(cal.start_date) || date.isAfter(cal.end_date)) { @@ -175,7 +181,7 @@ public FeedLoadResult exportTables() { calendarDate.date = date; calendarDate.service_id = cal.service_id; calendarDate.exception_type = ex.serviceRunsOn(cal) ? 1 : 2; - LOG.info("Adding exception {} (type={}) for calendar {} on date {}", ex.name, calendarDate.exception_type, cal.service_id, date.toString()); + LOG.info("Adding exception {} (type={}) for calendar {} on date {}", ex.name, calendarDate.exception_type, cal.service_id, date); if (service.calendar_dates.containsKey(date)) throw new IllegalArgumentException("Duplicate schedule exceptions on " + date);