Search in sources :

Example 16 with ServiceCalendar

use of org.onebusaway.gtfs.model.ServiceCalendar in project onebusaway-gtfs-modules by OneBusAway.

the class GtfsMergerTest method testRenameStrategy.

@Test
public void testRenameStrategy() throws IOException {
    // lowest priority feed (first) to highest priority feed (last)
    _oldGtfs.putLines("agency.txt", "agency_id,agency_name,agency_url,agency_timezone", "3,Pierce,http://p.us/,America/Los_Angeles");
    _oldGtfs.putLines("routes.txt", "route_id,route_short_name,route_long_name,route_type", "R10,10,The Pierce Ten,3");
    _oldGtfs.putLines("stops.txt", "stop_id,stop_name,stop_lat,stop_lon", "100,The Stop,47.654403,-122.305211", "200,Pierce Other Stop,47.668594,-122.298859", "400,Pierce Only Stop,47.669563,-122.305420");
    _oldGtfs.putLines("calendars.txt", "service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date", "sid0,1,1,1,1,1,0,0,20110101,20111231");
    _oldGtfs.putLines("trips.txt", "route_id,service_id,trip_id", "R10,sid0,T10-0", "R10,sid0,T10-1");
    // stop conflict only
    _oldGtfs.putStopTimes("T10-0", "100,200");
    _oldGtfs.putStopTimes("T10-1", "100,400");
    _oldGtfs.putLines("stop_times.txt", "trip_id,stop_id,stop_sequence,arrival_time,departure_time", "T10-0,100,0,08:00:00,08:00:00", "T10-0,200,1,09:00:00,09:00:00", "T10-1,100,1,08:00:00,08:00:00", "T10-1,400,1,09:00:00,09:00:00");
    _newGtfs.putLines("agency.txt", "agency_id,agency_name,agency_url,agency_timezone", "1,Metro,http://metro.gov/,America/Los_Angeles", "3,Pierce,http://p.us/,America/Los_Angeles");
    _newGtfs.putLines("routes.txt", "agency_id,route_id,route_short_name,route_long_name,route_type", "1,R10,10,The KCM Ten,3");
    _newGtfs.putLines("stops.txt", "stop_id,stop_name,stop_lat,stop_lon", "100,The Stop,47.654403,-122.305211", "200,The Other Stop,47.656303,-122.315436", "300,The Third Stop,47.668575,-122.283653");
    _newGtfs.putCalendars(1, "mask=1111100", "start_date=20120504", "end_date=20120608");
    _newGtfs.putLines("trips.txt", "route_id,service_id,trip_id", "R10,sid0,T10-0");
    _newGtfs.putLines("stop_times.txt", "trip_id,stop_id,stop_sequence,arrival_time,departure_time", "T10-0,100,0,08:00:00,08:00:00", "T10-0,200,1,09:00:00,09:00:00", "T10-0,300,1,10:00:00,10:00:00");
    _pugetGtfs = MockGtfs.create();
    _pugetGtfs.putLines("agency.txt", "agency_id,agency_name,agency_url,agency_timezone", "0,Puget Sound Region,http://puget-sound.gov/,America/Los_Angeles");
    _pugetGtfs.putLines("routes.txt", "route_id,route_short_name,route_long_name,route_type", "");
    _pugetGtfs.putLines("stops.txt", "stop_id,stop_name,stop_lat,stop_lon", "");
    _pugetGtfs.putLines("calendars.txt", "service_id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,start_date,end_date", "");
    _pugetGtfs.putCalendars(1, "mask=1111100", "start_date=20120504", "end_date=20120608");
    _pugetGtfs.putLines("trips.txt", "route_id,service_id,trip_id", "");
    _pugetGtfs.putLines("stop_times.txt", "trip_id,stop_id,stop_sequence,arrival_time,departure_time", "");
    AgencyMergeStrategy agencyStrategy = new AgencyMergeStrategy();
    agencyStrategy.setDuplicateDetectionStrategy(EDuplicateDetectionStrategy.FUZZY);
    _merger.setAgencyStrategy(agencyStrategy);
    TripMergeStrategy tripStrategy = new TripMergeStrategy();
    tripStrategy.setDuplicateDetectionStrategy(EDuplicateDetectionStrategy.FUZZY);
    tripStrategy.setDuplicateRenamingStrategy(EDuplicateRenamingStrategy.AGENCY);
    _merger.setTripStrategy(tripStrategy);
    StopMergeStrategy stopStrategy = new StopMergeStrategy();
    stopStrategy.setDuplicateDetectionStrategy(EDuplicateDetectionStrategy.FUZZY);
    stopStrategy.setDuplicateRenamingStrategy(EDuplicateRenamingStrategy.AGENCY);
    stopStrategy.setLogDuplicatesStrategy(ELogDuplicatesStrategy.WARNING);
    _merger.setStopStrategy(stopStrategy);
    RouteMergeStrategy routeStrategy = new RouteMergeStrategy();
    routeStrategy.setDuplicateDetectionStrategy(EDuplicateDetectionStrategy.FUZZY);
    routeStrategy.setDuplicateRenamingStrategy(EDuplicateRenamingStrategy.AGENCY);
    _merger.setRouteStrategy(routeStrategy);
    ServiceCalendarMergeStrategy serviceStrategy = new ServiceCalendarMergeStrategy();
    serviceStrategy.setDuplicateDetectionStrategy(EDuplicateDetectionStrategy.FUZZY);
    serviceStrategy.setDuplicateRenamingStrategy(EDuplicateRenamingStrategy.AGENCY);
    _merger.setServiceCalendarStrategy(serviceStrategy);
    GtfsRelationalDao dao = merge();
    // pierce is included twice, it should not show up as a duplicate
    assertTrue(dao.getAllAgencies().size() == 3);
    for (Trip trip : dao.getAllTrips()) {
        String tripId = trip.getId().getId();
        // AGENCY renaming strategy
        assertTrue(!tripId.matches("^[a-j]-.*"));
        assertTrue(dao.getStopTimesForTrip(trip).size() > 0);
    }
    boolean pugetStopFound = false;
    for (Stop stop : dao.getAllStops()) {
        if ("0".equals(stop.getId().getAgencyId())) {
            pugetStopFound = true;
        }
        String stopId = stop.getId().getId();
        // AGENCY renaming strategy
        assertTrue(!stopId.matches("^[a-j]-.*"));
    }
    for (Route route : dao.getAllRoutes()) {
        String routeId = route.getId().getId();
        // AGENCY renaming strategy
        assertTrue(!routeId.matches("^[a-j]-.*"));
    }
    for (ServiceCalendar service : dao.getAllCalendars()) {
        String serviceId = service.getServiceId().getId();
        assertTrue(!serviceId.matches("^[a-j]-.*"));
    }
    assertTrue("b-sid0".matches("[a-j]-.*"));
    assertTrue("expect a puget stop", pugetStopFound);
}
Also used : GtfsRelationalDao(org.onebusaway.gtfs.services.GtfsRelationalDao) Trip(org.onebusaway.gtfs.model.Trip) TripMergeStrategy(org.onebusaway.gtfs_merge.strategies.TripMergeStrategy) AgencyMergeStrategy(org.onebusaway.gtfs_merge.strategies.AgencyMergeStrategy) Stop(org.onebusaway.gtfs.model.Stop) RouteMergeStrategy(org.onebusaway.gtfs_merge.strategies.RouteMergeStrategy) StopMergeStrategy(org.onebusaway.gtfs_merge.strategies.StopMergeStrategy) ServiceCalendarMergeStrategy(org.onebusaway.gtfs_merge.strategies.ServiceCalendarMergeStrategy) Route(org.onebusaway.gtfs.model.Route) ServiceCalendar(org.onebusaway.gtfs.model.ServiceCalendar) Test(org.junit.Test)

Example 17 with ServiceCalendar

use of org.onebusaway.gtfs.model.ServiceCalendar in project onebusaway-gtfs-modules by OneBusAway.

the class AgencyMergeStrategyTest method testRenameAllAgencyIdReferences.

@Test
public void testRenameAllAgencyIdReferences() {
    GtfsRelationalDaoImpl sourceA = new GtfsRelationalDaoImpl();
    Agency agencyA = new Agency();
    agencyA.setId("1");
    agencyA.setName("Metro");
    agencyA.setUrl("http://metro.gov/");
    sourceA.saveEntity(agencyA);
    GtfsRelationalDaoImpl sourceB = new GtfsRelationalDaoImpl();
    Agency agencyB = new Agency();
    agencyB.setId("1");
    agencyA.setName("Metra");
    agencyA.setUrl("http://metra.gov/");
    sourceB.saveEntity(agencyB);
    Route route = new Route();
    route.setAgency(agencyB);
    route.setId(new AgencyAndId("1", "routeId"));
    sourceB.saveEntity(route);
    Trip trip = new Trip();
    trip.setRoute(route);
    trip.setId(new AgencyAndId("1", "tripId"));
    trip.setServiceId(new AgencyAndId("1", "serviceId"));
    trip.setShapeId(new AgencyAndId("1", "shapeId"));
    sourceB.saveEntity(trip);
    FareAttribute fare = new FareAttribute();
    fare.setId(new AgencyAndId("1", "fareId"));
    sourceB.saveEntity(fare);
    Stop stop = new Stop();
    stop.setId(new AgencyAndId("1", "stopId"));
    sourceB.saveEntity(stop);
    ServiceCalendar calendar = new ServiceCalendar();
    calendar.setServiceId(new AgencyAndId("1", "serviceId"));
    sourceB.saveEntity(calendar);
    ServiceCalendarDate calendarDate = new ServiceCalendarDate();
    calendarDate.setServiceId(new AgencyAndId("1", "serviceId"));
    sourceB.saveEntity(calendarDate);
    ShapePoint point = new ShapePoint();
    point.setShapeId(new AgencyAndId("1", "shapeId"));
    sourceB.saveEntity(point);
    _strategy.merge(context(sourceA, _target, "a-"));
    _strategy.merge(context(sourceB, _target, "b-"));
    Collection<Agency> agencies = _target.getAllAgencies();
    assertEquals(2, agencies.size());
    assertSame(agencyA, _target.getAgencyForId("1"));
    assertSame(agencyB, _target.getAgencyForId("b-1"));
    assertEquals("b-1", route.getId().getAgencyId());
    assertEquals("b-1", trip.getId().getAgencyId());
    assertEquals("b-1", trip.getServiceId().getAgencyId());
    assertEquals("b-1", trip.getShapeId().getAgencyId());
    assertEquals("b-1", fare.getId().getAgencyId());
    assertEquals("b-1", stop.getId().getAgencyId());
    assertEquals("b-1", calendar.getServiceId().getAgencyId());
    assertEquals("b-1", calendarDate.getServiceId().getAgencyId());
    assertEquals("b-1", point.getShapeId().getAgencyId());
}
Also used : FareAttribute(org.onebusaway.gtfs.model.FareAttribute) ServiceCalendarDate(org.onebusaway.gtfs.model.ServiceCalendarDate) Trip(org.onebusaway.gtfs.model.Trip) ShapePoint(org.onebusaway.gtfs.model.ShapePoint) Agency(org.onebusaway.gtfs.model.Agency) AgencyAndId(org.onebusaway.gtfs.model.AgencyAndId) Stop(org.onebusaway.gtfs.model.Stop) GtfsRelationalDaoImpl(org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl) Route(org.onebusaway.gtfs.model.Route) ServiceCalendar(org.onebusaway.gtfs.model.ServiceCalendar) Test(org.junit.Test)

Example 18 with ServiceCalendar

use of org.onebusaway.gtfs.model.ServiceCalendar in project onebusaway-gtfs-modules by OneBusAway.

the class ServiceCalendarMergeStrategy method renameKey.

/**
   * Replaces all references to the specified old service_id with the new
   * service_id for all {@link ServiceCalendar}, {@link ServiceCalendarDate},
   * and {@link Trip} entities in the source feed.
   */
@Override
protected void renameKey(GtfsMergeContext context, AgencyAndId oldId, AgencyAndId newId) {
    GtfsRelationalDao source = context.getSource();
    ServiceCalendar calendar = source.getCalendarForServiceId(oldId);
    if (calendar != null) {
        calendar.setServiceId(newId);
    }
    for (ServiceCalendarDate calendarDate : source.getCalendarDatesForServiceId(oldId)) {
        calendarDate.setServiceId(newId);
    }
    for (Trip trip : source.getTripsForServiceId(oldId)) {
        trip.setServiceId(newId);
    }
}
Also used : ServiceCalendarDate(org.onebusaway.gtfs.model.ServiceCalendarDate) GtfsRelationalDao(org.onebusaway.gtfs.services.GtfsRelationalDao) Trip(org.onebusaway.gtfs.model.Trip) ServiceCalendar(org.onebusaway.gtfs.model.ServiceCalendar)

Example 19 with ServiceCalendar

use of org.onebusaway.gtfs.model.ServiceCalendar in project onebusaway-gtfs-modules by OneBusAway.

the class ServiceCalendarMergeStrategy method saveElementsForKey.

/**
   * Writes all {@link ServiceCalendar} and {@link ServiceCalendarDate} entities
   * with the specified {@code service_id} to the merged output feed.
   */
@Override
protected void saveElementsForKey(GtfsMergeContext context, AgencyAndId serviceId) {
    GtfsRelationalDao source = context.getSource();
    GtfsMutableRelationalDao target = context.getTarget();
    ServiceCalendar calendar = source.getCalendarForServiceId(serviceId);
    if (calendar != null) {
        calendar.setId(0);
        target.saveEntity(calendar);
    }
    for (ServiceCalendarDate calendarDate : source.getCalendarDatesForServiceId(serviceId)) {
        calendarDate.setId(0);
        target.saveEntity(calendarDate);
    }
}
Also used : GtfsMutableRelationalDao(org.onebusaway.gtfs.services.GtfsMutableRelationalDao) ServiceCalendarDate(org.onebusaway.gtfs.model.ServiceCalendarDate) GtfsRelationalDao(org.onebusaway.gtfs.services.GtfsRelationalDao) ServiceCalendar(org.onebusaway.gtfs.model.ServiceCalendar)

Example 20 with ServiceCalendar

use of org.onebusaway.gtfs.model.ServiceCalendar in project onebusaway-gtfs-modules by OneBusAway.

the class EntityRetentionGraph method retainServiceId.

private void retainServiceId(AgencyAndId serviceId, boolean retainUp) {
    if (retainUp) {
        // Retain up: retain things that depend on the target object
        for (Trip trip : _dao.getTripsForServiceId(serviceId)) {
            retainUp(trip);
        }
    } else {
        // Retain down: retain things that the target object depends on
        ServiceCalendar calendar = _dao.getCalendarForServiceId(serviceId);
        if (calendar != null)
            retainDown(calendar);
        for (ServiceCalendarDate calendarDate : _dao.getCalendarDatesForServiceId(serviceId)) retainDown(calendarDate);
        /**
       * Need to make sure a service id's agency is included as well, since the
       * agency might not be included by any trips serving that service id
       */
        String agencyId = serviceId.getAgencyId();
        Agency agency = _dao.getAgencyForId(agencyId);
        if (agency != null) {
            retainDown(agency);
        }
    }
}
Also used : ServiceCalendarDate(org.onebusaway.gtfs.model.ServiceCalendarDate) Trip(org.onebusaway.gtfs.model.Trip) Agency(org.onebusaway.gtfs.model.Agency) ServiceCalendar(org.onebusaway.gtfs.model.ServiceCalendar)

Aggregations

ServiceCalendar (org.onebusaway.gtfs.model.ServiceCalendar)28 Test (org.junit.Test)18 ServiceDate (org.onebusaway.gtfs.model.calendar.ServiceDate)18 AgencyAndId (org.onebusaway.gtfs.model.AgencyAndId)17 ServiceCalendarDate (org.onebusaway.gtfs.model.ServiceCalendarDate)17 Trip (org.onebusaway.gtfs.model.Trip)13 Agency (org.onebusaway.gtfs.model.Agency)8 Route (org.onebusaway.gtfs.model.Route)6 Stop (org.onebusaway.gtfs.model.Stop)6 GtfsRelationalDao (org.onebusaway.gtfs.services.GtfsRelationalDao)6 ShapePoint (org.onebusaway.gtfs.model.ShapePoint)5 StopTime (org.onebusaway.gtfs.model.StopTime)5 GtfsMutableRelationalDao (org.onebusaway.gtfs.services.GtfsMutableRelationalDao)5 FareAttribute (org.onebusaway.gtfs.model.FareAttribute)4 GtfsRelationalDaoImpl (org.onebusaway.gtfs.impl.GtfsRelationalDaoImpl)3 FareRule (org.onebusaway.gtfs.model.FareRule)3 Frequency (org.onebusaway.gtfs.model.Frequency)3 CalendarService (org.onebusaway.gtfs.services.calendar.CalendarService)3 ArrayList (java.util.ArrayList)2 Calendar (java.util.Calendar)2