use of org.onebusaway.transit_data_federation.services.blocks.BlockInstance in project onebusaway-application-modules by camsys.
the class BlockStatusBeanServiceImpl method bean.
private BlockStatusBean bean(BlockLocation blockLocation) {
if (blockLocation == null)
return null;
BlockInstance instance = blockLocation.getBlockInstance();
BlockConfigurationEntry block = instance.getBlock();
long serviceDate = instance.getServiceDate();
BlockStatusBean bean = new BlockStatusBean();
bean.setBlock(_blockBeanService.getBlockForId(block.getBlock().getId()));
bean.setStatus("default");
bean.setServiceDate(serviceDate);
bean.setTotalDistanceAlongBlock(block.getTotalBlockDistance());
bean.setInService(blockLocation.isInService());
CoordinatePoint location = blockLocation.getLocation();
bean.setLocation(location);
bean.setScheduledDistanceAlongBlock(blockLocation.getScheduledDistanceAlongBlock());
bean.setDistanceAlongBlock(blockLocation.getDistanceAlongBlock());
BlockTripEntry activeTrip = blockLocation.getActiveTrip();
if (activeTrip != null) {
BlockTripBean activeTripBean = _blockBeanService.getBlockTripAsBean(activeTrip);
bean.setActiveTrip(activeTripBean);
}
BlockStopTimeEntry stop = blockLocation.getClosestStop();
if (stop != null) {
StopBean stopBean = _stopBeanService.getStopForId(stop.getStopTime().getStop().getId());
bean.setClosestStop(stopBean);
bean.setClosestStopTimeOffset(blockLocation.getClosestStopTimeOffset());
}
bean.setPredicted(blockLocation.isPredicted());
bean.setLastUpdateTime(blockLocation.getLastUpdateTime());
bean.setScheduleDeviation(blockLocation.getScheduleDeviation());
AgencyAndId vid = blockLocation.getVehicleId();
if (vid != null)
bean.setVehicleId(ApplicationBeanLibrary.getId(vid));
return bean;
}
use of org.onebusaway.transit_data_federation.services.blocks.BlockInstance 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.blocks.BlockInstance in project onebusaway-application-modules by camsys.
the class BlockStatusServiceImpl method getBlocksForBounds.
@Override
public List<BlockLocation> getBlocksForBounds(CoordinateBounds bounds, long time) {
long timeFrom = time - _runningLateWindow * 1000;
long timeTo = time + _runningEarlyWindow * 1000;
List<BlockInstance> instances = _blockGeospatialService.getActiveScheduledBlocksPassingThroughBounds(bounds, timeFrom, timeTo);
List<BlockLocation> locations = getAsLocations(instances, time);
List<BlockLocation> inRange = new ArrayList<BlockLocation>();
for (BlockLocation location : locations) {
CoordinatePoint p = location.getLocation();
if (p != null && bounds.contains(p))
inRange.add(location);
}
return inRange;
}
Aggregations