use of org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry in project onebusaway-application-modules by camsys.
the class BlockStatusServiceImpl method getBlockInstancesForIndexAndTimestamps.
private List<BlockInstance> getBlockInstancesForIndexAndTimestamps(BlockSequenceIndex index, List<Date> timestamps) {
Date tFrom = timestamps.get(0);
Date tTo = timestamps.get(timestamps.size() - 1);
ServiceIntervalBlock serviceIntervalBlock = index.getServiceIntervalBlock();
List<BlockSequence> sequences = index.getSequences();
Collection<Date> serviceDates = _extendedCalendarService.getServiceDatesWithinRange(index.getServiceIds(), serviceIntervalBlock.getRange(), tFrom, tTo);
List<BlockInstance> instances = new ArrayList<BlockInstance>();
for (Date serviceDate : serviceDates) {
int effectiveFromTime = (int) ((tFrom.getTime() - serviceDate.getTime()) / 1000);
int effectiveToTime = (int) ((tTo.getTime() - serviceDate.getTime()) / 1000);
int indexFrom = Arrays.binarySearch(serviceIntervalBlock.getMaxArrivals(), effectiveFromTime);
int indexTo = Arrays.binarySearch(serviceIntervalBlock.getMinDepartures(), effectiveToTime);
if (indexFrom < 0)
indexFrom = -(indexFrom + 1);
if (indexTo < 0)
indexTo = -(indexTo + 1);
InstanceState state = new InstanceState(serviceDate.getTime());
for (int i = indexFrom; i < indexTo; i++) {
BlockSequence sequence = sequences.get(i);
BlockConfigurationEntry blockConfig = sequence.getBlockConfig();
BlockInstance instance = new BlockInstance(blockConfig, state);
instances.add(instance);
}
}
return instances;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry in project onebusaway-application-modules by camsys.
the class ScheduledBlockLocationServiceImpl method getScheduledBlockLocationFromDistanceAlongBlock.
@Override
public ScheduledBlockLocation getScheduledBlockLocationFromDistanceAlongBlock(ScheduledBlockLocation previousLocation, double distanceAlongBlock) {
if (previousLocation.getDistanceAlongBlock() > distanceAlongBlock)
throw new IllegalStateException("previousLocation's distanceAlongBlock must be before the requested distanceAlongBlock");
BlockTripEntry trip = previousLocation.getActiveTrip();
BlockConfigurationEntry blockConfig = trip.getBlockConfiguration();
List<BlockStopTimeEntry> stopTimes = blockConfig.getStopTimes();
int indexFrom = previousLocation.getStopTimeIndex();
int indexTo = indexFrom + 1;
while (indexTo < stopTimes.size()) {
double d = blockConfig.getDistanceAlongBlockForIndex(indexTo);
if (distanceAlongBlock <= d)
break;
indexTo++;
}
int stopTimeIndex = GenericBinarySearch.searchRange(blockConfig, indexFrom, indexTo, distanceAlongBlock, IndexAdapters.BLOCK_CONFIG_DISTANCE_INSTANCE);
return getScheduledBlockLocationFromDistanceAlongBlockAndStopTimeIndex(stopTimes, distanceAlongBlock, stopTimeIndex);
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry in project onebusaway-application-modules by camsys.
the class BlockStopTimeIndicesFactory method getStopTimesAsFrequencyStopTimes.
private List<FrequencyBlockStopTimeEntry> getStopTimesAsFrequencyStopTimes(List<BlockStopTimeEntry> stopTimes) {
List<FrequencyBlockStopTimeEntry> frequencyStopTimes = new ArrayList<FrequencyBlockStopTimeEntry>();
for (BlockStopTimeEntry blockStopTime : stopTimes) {
BlockTripEntry trip = blockStopTime.getTrip();
BlockConfigurationEntry blockConfig = trip.getBlockConfiguration();
for (FrequencyEntry frequency : blockConfig.getFrequencies()) {
FrequencyBlockStopTimeEntry frequencyStopTime = new FrequencyBlockStopTimeEntryImpl(blockStopTime, frequency);
frequencyStopTimes.add(frequencyStopTime);
}
}
return frequencyStopTimes;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry in project onebusaway-application-modules by camsys.
the class BlockStopTimeIndicesFactory method getBlockStopTimeAsKey.
private BlockStopTimeKey getBlockStopTimeAsKey(BlockStopTimeEntry blockStopTime) {
BlockTripEntry blockTrip = blockStopTime.getTrip();
BlockConfigurationEntry blockConfig = blockTrip.getBlockConfiguration();
StopTimeEntry stopTime = blockStopTime.getStopTime();
StopEntry stop = stopTime.getStop();
return new BlockStopTimeKey(blockConfig.getServiceIds(), stop.getId());
}
Aggregations