use of org.onebusaway.gtfs.model.calendar.ServiceDate in project OpenTripPlanner by opentripplanner.
the class CalendarServiceDataFactoryImpl method createData.
@Override
public CalendarServiceData createData() {
CalendarServiceData data = new CalendarServiceData();
setTimeZonesForAgencies(data);
List<AgencyAndId> serviceIds = _dao.getAllServiceIds();
int index = 0;
for (AgencyAndId serviceId : serviceIds) {
index++;
_log.debug("serviceId=" + serviceId + " (" + index + "/" + serviceIds.size() + ")");
TimeZone serviceIdTimeZone = data.getTimeZoneForAgencyId(serviceId.getAgencyId());
if (serviceIdTimeZone == null) {
serviceIdTimeZone = TimeZone.getDefault();
}
Set<ServiceDate> activeDates = getServiceDatesForServiceId(serviceId, serviceIdTimeZone);
List<ServiceDate> serviceDates = new ArrayList<ServiceDate>(activeDates);
Collections.sort(serviceDates);
data.putServiceDatesForServiceId(serviceId, serviceDates);
// List<String> tripAgencyIds = _dao.getTripAgencyIdsReferencingServiceId(serviceId);
// Set<TimeZone> timeZones = new HashSet<TimeZone>();
// for (String tripAgencyId : tripAgencyIds) {
// TimeZone timeZone = data.getTimeZoneForAgencyId(tripAgencyId);
// timeZones.add(timeZone);
// }
// for (TimeZone timeZone : timeZones) {
//
// List<Date> dates = new ArrayList<Date>(serviceDates.size());
// for (ServiceDate serviceDate : serviceDates)
// dates.add(serviceDate.getAsDate(timeZone));
//
// LocalizedServiceId id = new LocalizedServiceId(serviceId, timeZone);
// data.putDatesForLocalizedServiceId(id, dates);
// }
}
return data;
}
use of org.onebusaway.gtfs.model.calendar.ServiceDate in project OpenTripPlanner by opentripplanner.
the class TimetableSnapshotTest method testResolve.
@Test
public void testResolve() {
ServiceDate today = new ServiceDate();
ServiceDate yesterday = today.previous();
ServiceDate tomorrow = today.next();
TripPattern pattern = patternIndex.get(new AgencyAndId("agency", "1.1"));
TimetableSnapshot resolver = new TimetableSnapshot();
Timetable scheduled = resolver.resolve(pattern, today);
assertEquals(scheduled, resolver.resolve(pattern, null));
TripDescriptor.Builder tripDescriptorBuilder = TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1.1");
tripDescriptorBuilder.setScheduleRelationship(ScheduleRelationship.CANCELED);
TripUpdate.Builder tripUpdateBuilder = TripUpdate.newBuilder();
tripUpdateBuilder.setTrip(tripDescriptorBuilder);
TripUpdate tripUpdate = tripUpdateBuilder.build();
// add a new timetable for today
updateResolver(resolver, pattern, tripUpdate, "agency", today);
Timetable forNow = resolver.resolve(pattern, today);
assertEquals(scheduled, resolver.resolve(pattern, yesterday));
assertNotSame(scheduled, forNow);
assertEquals(scheduled, resolver.resolve(pattern, tomorrow));
assertEquals(scheduled, resolver.resolve(pattern, null));
// add a new timetable for yesterday
updateResolver(resolver, pattern, tripUpdate, "agency", yesterday);
Timetable forYesterday = resolver.resolve(pattern, yesterday);
assertNotSame(scheduled, forYesterday);
assertNotSame(scheduled, forNow);
assertEquals(scheduled, resolver.resolve(pattern, tomorrow));
assertEquals(scheduled, resolver.resolve(pattern, null));
}
use of org.onebusaway.gtfs.model.calendar.ServiceDate in project OpenTripPlanner by opentripplanner.
the class TimetableSnapshotTest method testCommit.
@Test(expected = ConcurrentModificationException.class)
public void testCommit() {
ServiceDate today = new ServiceDate();
ServiceDate yesterday = today.previous();
TripPattern pattern = patternIndex.get(new AgencyAndId("agency", "1.1"));
TimetableSnapshot resolver = new TimetableSnapshot();
// only return a new snapshot if there are changes
TimetableSnapshot snapshot = resolver.commit();
assertNull(snapshot);
TripDescriptor.Builder tripDescriptorBuilder = TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1.1");
tripDescriptorBuilder.setScheduleRelationship(ScheduleRelationship.CANCELED);
TripUpdate.Builder tripUpdateBuilder = TripUpdate.newBuilder();
tripUpdateBuilder.setTrip(tripDescriptorBuilder);
TripUpdate tripUpdate = tripUpdateBuilder.build();
// add a new timetable for today, commit, and everything should match
assertTrue(updateResolver(resolver, pattern, tripUpdate, "agency", today));
snapshot = resolver.commit();
assertEquals(snapshot.resolve(pattern, today), resolver.resolve(pattern, today));
assertEquals(snapshot.resolve(pattern, yesterday), resolver.resolve(pattern, yesterday));
// add a new timetable for today, don't commit, and everything should not match
assertTrue(updateResolver(resolver, pattern, tripUpdate, "agency", today));
assertNotSame(snapshot.resolve(pattern, today), resolver.resolve(pattern, today));
assertEquals(snapshot.resolve(pattern, yesterday), resolver.resolve(pattern, yesterday));
// add a new timetable for today, on another day, and things should still not match
assertTrue(updateResolver(resolver, pattern, tripUpdate, "agency", yesterday));
assertNotSame(snapshot.resolve(pattern, yesterday), resolver.resolve(pattern, yesterday));
// commit, and things should match
snapshot = resolver.commit();
assertEquals(snapshot.resolve(pattern, today), resolver.resolve(pattern, today));
assertEquals(snapshot.resolve(pattern, yesterday), resolver.resolve(pattern, yesterday));
// exception if we try to commit to a snapshot
snapshot.commit();
}
use of org.onebusaway.gtfs.model.calendar.ServiceDate in project OpenTripPlanner by opentripplanner.
the class TimetableSnapshotTest method testPurge.
@Test
public void testPurge() {
ServiceDate today = new ServiceDate();
ServiceDate yesterday = today.previous();
TripPattern pattern = patternIndex.get(new AgencyAndId("agency", "1.1"));
TripDescriptor.Builder tripDescriptorBuilder = TripDescriptor.newBuilder();
tripDescriptorBuilder.setTripId("1.1");
tripDescriptorBuilder.setScheduleRelationship(ScheduleRelationship.CANCELED);
TripUpdate.Builder tripUpdateBuilder = TripUpdate.newBuilder();
tripUpdateBuilder.setTrip(tripDescriptorBuilder);
TripUpdate tripUpdate = tripUpdateBuilder.build();
TimetableSnapshot resolver = new TimetableSnapshot();
updateResolver(resolver, pattern, tripUpdate, "agency", today);
updateResolver(resolver, pattern, tripUpdate, "agency", yesterday);
assertNotSame(resolver.resolve(pattern, yesterday), resolver.resolve(pattern, null));
assertNotSame(resolver.resolve(pattern, today), resolver.resolve(pattern, null));
assertNotNull(resolver.commit());
assertFalse(resolver.isDirty());
assertTrue(resolver.purgeExpiredData(yesterday));
assertFalse(resolver.purgeExpiredData(yesterday));
assertEquals(resolver.resolve(pattern, yesterday), resolver.resolve(pattern, null));
assertNotSame(resolver.resolve(pattern, today), resolver.resolve(pattern, null));
assertNull(resolver.commit());
assertFalse(resolver.isDirty());
}
use of org.onebusaway.gtfs.model.calendar.ServiceDate in project OpenTripPlanner by opentripplanner.
the class TimetableSnapshotTest method testCompare.
@Test
public void testCompare() {
Timetable orig = new Timetable(null);
Timetable a = new Timetable(orig, new ServiceDate().previous());
Timetable b = new Timetable(orig, new ServiceDate());
assertEquals(-1, (new TimetableSnapshot.SortedTimetableComparator()).compare(a, b));
}
Aggregations