use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class SiriService method getBlockForMonitoredVehicleJourney.
private BlockEntry getBlockForMonitoredVehicleJourney(MonitoredVehicleJourney mvj, SiriEndpointDetails endpointDetails) {
BlockRefStructure blockRef = mvj.getBlockRef();
if (blockRef == null || blockRef.getValue() == null)
return null;
for (String agencyId : endpointDetails.getDefaultAgencyIds()) {
AgencyAndId blockId = new AgencyAndId(agencyId, blockRef.getValue());
BlockEntry blockEntry = _transitGraphDao.getBlockEntryForId(blockId);
if (blockEntry != null)
return blockEntry;
}
/**
* Try parsing the id itself
*/
try {
AgencyAndId blockId = AgencyAndId.convertFromString(blockRef.getValue());
return _transitGraphDao.getBlockEntryForId(blockId);
} catch (IllegalArgumentException ex) {
return null;
}
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockLocationHistoryServiceImpl method getHistoryForTripId.
@Override
public Map<AgencyAndIdInstance, List<BlockLocationArchiveRecord>> getHistoryForTripId(AgencyAndId tripId) {
TripEntry trip = _transitGraphDao.getTripEntryForId(tripId);
if (trip == null)
return null;
BlockEntry block = trip.getBlock();
List<File> files = getFilesForBlockId(block.getId());
CsvEntityReader reader = new CsvEntityReader();
reader.setTokenizerStrategy(new DelimiterTokenizerStrategy("\t"));
EntityHandlerImpl handler = new EntityHandlerImpl(tripId);
reader.addEntityHandler(handler);
try {
for (File file : files) {
InputStream in = openFileForInput(file);
reader.readEntities(BlockLocationArchiveRecord.class, in);
in.close();
}
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
Map<AgencyAndIdInstance, List<BlockLocationArchiveRecord>> recordsByInstance = handler.getRecordsByInstance();
for (List<BlockLocationArchiveRecord> records : recordsByInstance.values()) Collections.sort(records, new DistanceAlongBlockComparator());
return recordsByInstance;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class ExtendedCalendarServiceImplTest method testGetPreviousServiceDatesForArrivalInterval.
@Test
public void testGetPreviousServiceDatesForArrivalInterval() {
BlockEntry blockA = block("blockA");
blockConfiguration(blockA, serviceIds(lsids("sA"), lsids()));
List<BlockEntry> blocks = Arrays.asList(blockA);
Mockito.when(_transitGraphDao.getAllBlocks()).thenReturn(blocks);
_service.start();
ServiceIdActivation serviceIds = serviceIds(lsids("sA"), lsids());
int inFrom = time(8, 00);
int inTo = time(20, 00);
ServiceInterval interval = new ServiceInterval(inFrom, inFrom, inTo, inTo);
long time = dateAsLong("2010-09-11 21:30");
List<Date> dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(1, dates.size());
assertEquals(date("2010-09-11 00:00"), dates.get(0));
time = dateAsLong("2010-09-11 18:00");
dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(1, dates.size());
assertEquals(date("2010-09-11 00:00"), dates.get(0));
time = dateAsLong("2010-09-11 07:00");
dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(1, dates.size());
assertEquals(date("2010-09-10 00:00"), dates.get(0));
time = dateAsLong("2010-09-10 21:30");
dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(1, dates.size());
assertEquals(date("2010-09-10 00:00"), dates.get(0));
time = dateAsLong("2010-09-10 18:00");
dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(1, dates.size());
assertEquals(date("2010-09-10 00:00"), dates.get(0));
time = dateAsLong("2010-09-10 07:00");
dates = _service.getPreviousServiceDatesForArrivalInterval(serviceIds, interval, time);
assertEquals(0, dates.size());
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockInstanceComparator method compare.
@Override
public int compare(BlockInstance o1, BlockInstance o2) {
BlockConfigurationEntry bc1 = o1.getBlock();
BlockConfigurationEntry bc2 = o2.getBlock();
BlockEntry b1 = bc1.getBlock();
BlockEntry b2 = bc2.getBlock();
AgencyAndId bId1 = b1.getId();
AgencyAndId bId2 = b2.getId();
int rc = bId1.compareTo(bId2);
if (rc != 0)
return rc;
rc = bc1.getServiceIds().compareTo(bc2.getServiceIds());
if (rc != 0)
return rc;
return Double.compare(o1.getServiceDate(), o2.getServiceDate());
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockStopTimeIndicesFactoryTest method test.
@Test
public void test() {
StopEntryImpl stopA = stop("a", 47.0, -122.0);
StopEntryImpl stopB = stop("b", 47.1, -122.1);
StopEntryImpl stopC = stop("c", 47.2, -122.2);
/**
**
* Block A
***
*/
BlockEntryImpl blockA = block("a");
// 1
TripEntryImpl tripA1 = trip("a1", "s1");
TripEntryImpl tripA2 = trip("a2", "s1");
TripEntryImpl tripA3 = trip("a3", "s1");
stopTime(0, stopA, tripA1, 0, 10, 0);
stopTime(0, stopB, tripA1, 20, 20, 0);
stopTime(0, stopC, tripA2, 30, 30, 0);
stopTime(0, stopA, tripA2, 40, 40, 0);
stopTime(0, stopA, tripA3, 50, 50, 0);
stopTime(0, stopB, tripA3, 60, 70, 0);
BlockConfigurationEntry bcA = linkBlockTrips(blockA, tripA1, tripA2, tripA3);
/**
**
* Block B - Same trip/stop sequence as A
***
*/
BlockEntryImpl blockB = block("b");
TripEntryImpl tripB1 = trip("b1", "s1");
TripEntryImpl tripB2 = trip("b2", "s1");
TripEntryImpl tripB3 = trip("b3", "s1");
stopTime(0, stopA, tripB1, 20, 30, 0);
stopTime(0, stopB, tripB1, 50, 50, 0);
stopTime(0, stopC, tripB2, 60, 60, 0);
stopTime(0, stopA, tripB2, 70, 70, 0);
stopTime(0, stopA, tripB3, 80, 80, 0);
stopTime(0, stopB, tripB3, 90, 100, 0);
BlockConfigurationEntry bcB = linkBlockTrips(blockB, tripB1, tripB2, tripB3);
/**
**
* Block C - Same stop sequence, but runs a little bit faster
***
*/
BlockEntryImpl blockC = block("c");
TripEntryImpl tripC1 = trip("c1", "s1");
TripEntryImpl tripC2 = trip("c2", "s1");
TripEntryImpl tripC3 = trip("c3", "s1");
stopTime(0, stopA, tripC1, 40, 50, 0);
stopTime(0, stopB, tripC1, 60, 60, 0);
stopTime(0, stopC, tripC2, 70, 70, 0);
stopTime(0, stopA, tripC2, 80, 80, 0);
stopTime(0, stopA, tripC3, 85, 85, 0);
stopTime(0, stopB, tripC3, 90, 95, 0);
BlockConfigurationEntry bcC = linkBlockTrips(blockC, tripC1, tripC2, tripC3);
/**
**
* Block D - Same stop sequence, but with different service id
***
*/
BlockEntryImpl blockD = block("d");
TripEntryImpl tripD1 = trip("d1", "s1");
TripEntryImpl tripD2 = trip("d2", "s1");
TripEntryImpl tripD3 = trip("d3", "s2");
stopTime(0, stopA, tripD1, 40, 50, 0);
stopTime(0, stopB, tripD1, 70, 70, 0);
stopTime(0, stopC, tripD2, 80, 80, 0);
stopTime(0, stopA, tripD2, 90, 90, 0);
stopTime(0, stopA, tripD3, 100, 100, 0);
stopTime(0, stopB, tripD3, 110, 120, 0);
BlockConfigurationEntry bcD = linkBlockTrips(blockD, tripD1, tripD2, tripD3);
/**
**
* Block E - One less stop
***
*/
BlockEntryImpl blockE = block("e");
TripEntryImpl tripE1 = trip("e1", "s1");
TripEntryImpl tripE2 = trip("e2", "s1");
TripEntryImpl tripE3 = trip("e3", "s1");
stopTime(0, stopA, tripE1, 50, 60, 0);
stopTime(0, stopB, tripE1, 80, 80, 0);
stopTime(0, stopC, tripE2, 90, 90, 0);
stopTime(0, stopA, tripE2, 100, 100, 0);
stopTime(0, stopA, tripE3, 110, 110, 0);
BlockConfigurationEntry bcE = linkBlockTrips(blockE, tripE1, tripE2, tripE3);
/**
**
* Block F - Another to group with E, but earlier
***
*/
BlockEntryImpl blockF = block("f");
TripEntryImpl tripF1 = trip("f1", "s1");
TripEntryImpl tripF2 = trip("f2", "s1");
TripEntryImpl tripF3 = trip("f3", "s1");
stopTime(0, stopA, tripF1, 40, 50, 0);
stopTime(0, stopB, tripF1, 70, 70, 0);
stopTime(0, stopC, tripF2, 80, 80, 0);
stopTime(0, stopA, tripF2, 90, 90, 0);
stopTime(0, stopA, tripF3, 100, 100, 0);
BlockConfigurationEntry bcF = linkBlockTrips(blockF, tripF1, tripF2, tripF3);
BlockStopTimeIndicesFactory factory = new BlockStopTimeIndicesFactory();
List<BlockStopTimeIndex> allIndices = factory.createIndices(Arrays.asList((BlockEntry) blockF, blockE, blockD, blockC, blockB, blockA));
assertEquals(6, allIndices.size());
List<BlockStopTimeIndex> indices = grep(allIndices, aid("a"), serviceIds(lsids("s1"), lsids()));
assertEquals(1, indices.size());
BlockStopTimeIndex index = indices.get(0);
assertEquals(15, index.getStopTimes().size());
assertEquals(bcA.getStopTimes().get(0), index.getStopTimes().get(0));
assertEquals(bcB.getStopTimes().get(0), index.getStopTimes().get(1));
assertEquals(bcA.getStopTimes().get(3), index.getStopTimes().get(2));
assertEquals(bcF.getStopTimes().get(0), index.getStopTimes().get(3));
assertEquals(bcC.getStopTimes().get(0), index.getStopTimes().get(4));
assertEquals(bcA.getStopTimes().get(4), index.getStopTimes().get(5));
assertEquals(bcE.getStopTimes().get(0), index.getStopTimes().get(6));
assertEquals(bcB.getStopTimes().get(3), index.getStopTimes().get(7));
assertEquals(bcC.getStopTimes().get(3), index.getStopTimes().get(8));
assertEquals(bcB.getStopTimes().get(4), index.getStopTimes().get(9));
assertEquals(bcC.getStopTimes().get(4), index.getStopTimes().get(10));
assertEquals(bcF.getStopTimes().get(3), index.getStopTimes().get(11));
assertEquals(bcF.getStopTimes().get(4), index.getStopTimes().get(12));
assertEquals(bcE.getStopTimes().get(3), index.getStopTimes().get(13));
assertEquals(bcE.getStopTimes().get(4), index.getStopTimes().get(14));
indices = grep(allIndices, aid("a"), serviceIds(lsids("s1", "s2"), lsids()));
assertEquals(1, indices.size());
index = indices.get(0);
assertEquals(3, index.getStopTimes().size());
assertEquals(bcD.getStopTimes().get(0), index.getStopTimes().get(0));
assertEquals(bcD.getStopTimes().get(3), index.getStopTimes().get(1));
assertEquals(bcD.getStopTimes().get(4), index.getStopTimes().get(2));
indices = grep(allIndices, aid("b"), serviceIds(lsids("s1"), lsids()));
assertEquals(1, indices.size());
index = indices.get(0);
assertEquals(8, index.getStopTimes().size());
assertEquals(bcA.getStopTimes().get(1), index.getStopTimes().get(0));
assertEquals(bcB.getStopTimes().get(1), index.getStopTimes().get(1));
assertEquals(bcC.getStopTimes().get(1), index.getStopTimes().get(2));
assertEquals(bcA.getStopTimes().get(5), index.getStopTimes().get(3));
assertEquals(bcF.getStopTimes().get(1), index.getStopTimes().get(4));
assertEquals(bcE.getStopTimes().get(1), index.getStopTimes().get(5));
assertEquals(bcC.getStopTimes().get(5), index.getStopTimes().get(6));
assertEquals(bcB.getStopTimes().get(5), index.getStopTimes().get(7));
indices = grep(allIndices, aid("b"), serviceIds(lsids("s1", "s2"), lsids()));
assertEquals(1, indices.size());
index = indices.get(0);
assertEquals(2, index.getStopTimes().size());
assertEquals(bcD.getStopTimes().get(1), index.getStopTimes().get(0));
assertEquals(bcD.getStopTimes().get(5), index.getStopTimes().get(1));
indices = grep(allIndices, aid("c"), serviceIds(lsids("s1"), lsids()));
assertEquals(1, indices.size());
index = indices.get(0);
assertEquals(5, index.getStopTimes().size());
assertEquals(bcA.getStopTimes().get(2), index.getStopTimes().get(0));
assertEquals(bcB.getStopTimes().get(2), index.getStopTimes().get(1));
assertEquals(bcC.getStopTimes().get(2), index.getStopTimes().get(2));
assertEquals(bcF.getStopTimes().get(2), index.getStopTimes().get(3));
assertEquals(bcE.getStopTimes().get(2), index.getStopTimes().get(4));
indices = grep(allIndices, aid("c"), serviceIds(lsids("s1", "s2"), lsids()));
assertEquals(1, indices.size());
index = indices.get(0);
assertEquals(1, index.getStopTimes().size());
assertEquals(bcD.getStopTimes().get(2), index.getStopTimes().get(0));
}
Aggregations