use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockLocationServiceImpl method getVehicleLocationRecordAsBlockInstance.
/**
**
* Private Methods
***
*/
private BlockInstance getVehicleLocationRecordAsBlockInstance(VehicleLocationRecord record) {
AgencyAndId blockId = record.getBlockId();
if (blockId == null) {
AgencyAndId tripId = record.getTripId();
if (tripId == null)
throw new IllegalArgumentException("at least one of blockId or tripId must be specified for VehicleLocationRecord");
TripEntry tripEntry = _transitGraphDao.getTripEntryForId(tripId);
if (tripEntry == null)
throw new IllegalArgumentException("trip not found with id=" + tripId);
BlockEntry block = tripEntry.getBlock();
blockId = block.getId();
}
if (record.getServiceDate() == 0)
throw new IllegalArgumentException("you must specify a serviceDate");
if (record.getTimeOfRecord() == 0)
throw new IllegalArgumentException("you must specify a record time");
BlockInstance blockInstance = getBestBlockForRecord(blockId, record.getServiceDate(), record.getTimeOfRecord());
return blockInstance;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockBeanServiceImpl method getBlockForId.
@Cacheable
public BlockBean getBlockForId(AgencyAndId blockId) {
BlockEntry blockEntry = _graph.getBlockEntryForId(blockId);
if (blockEntry == null)
return null;
BlockBean bean = new BlockBean();
bean.setId(AgencyAndIdLibrary.convertToString(blockEntry.getId()));
List<BlockConfigurationBean> configBeans = new ArrayList<BlockConfigurationBean>();
for (BlockConfigurationEntry blockConfiguration : blockEntry.getConfigurations()) {
BlockConfigurationBean configBean = getBlockConfigurationAsBean(blockConfiguration);
configBeans.add(configBean);
}
bean.setConfigurations(configBeans);
return bean;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockIndexFactoryServiceImpl method createLayoverIndices.
public List<BlockLayoverIndex> createLayoverIndices(Iterable<BlockEntry> blocks) {
List<BlockLayoverIndex> allIndices = new ArrayList<BlockLayoverIndex>();
int logInterval = LoggingIntervalUtil.getAppropriateLoggingInterval(allIndices.size());
Map<BlockLayoverSequenceKey, List<BlockTripEntry>> blockTripsByServiceIds = new FactoryMap<BlockLayoverSequenceKey, List<BlockTripEntry>>(new ArrayList<BlockTripEntry>());
if (_verbose)
_log.info("grouping block layovers by sequence key");
int tripCount = 0;
for (BlockEntry block : blocks) {
if (block.getConfigurations().isEmpty()) {
_log.warn("block has no active configurations: " + block.getId());
continue;
}
if (BlockLibrary.isFrequencyBased(block))
continue;
for (BlockConfigurationEntry blockConfiguration : block.getConfigurations()) {
BlockTripEntry prevTrip = null;
for (BlockTripEntry blockTrip : blockConfiguration.getTrips()) {
if (prevTrip != null) {
BlockLayoverSequenceKey key = getBlockTripAsLayoverSequenceKey(blockTrip);
blockTripsByServiceIds.get(key).add(blockTrip);
tripCount++;
}
prevTrip = blockTrip;
}
}
}
if (_verbose)
_log.info("groups found: " + blockTripsByServiceIds.size() + " out of trips: " + tripCount);
int count = 0;
for (List<BlockTripEntry> tripsWithSameSequence : blockTripsByServiceIds.values()) {
if (_verbose && count % logInterval == 0)
_log.info("groups processed: " + count + "/" + blockTripsByServiceIds.size());
count++;
List<List<BlockTripEntry>> groupedBlocks = ensureLayoverGroups(tripsWithSameSequence);
for (List<BlockTripEntry> group : groupedBlocks) {
BlockLayoverIndex index = createLayoverIndexForGroupOfBlockTrips(group);
allIndices.add(index);
}
}
return allIndices;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockIndexFactoryServiceImpl method createTripIndices.
/**
**
*
***
*/
public List<BlockTripIndex> createTripIndices(Iterable<BlockEntry> blocks) {
List<BlockTripIndex> allIndices = new ArrayList<BlockTripIndex>();
int logInterval = LoggingIntervalUtil.getAppropriateLoggingInterval(allIndices.size());
Map<BlockSequenceKey, List<BlockTripEntry>> blockTripsByKey = new FactoryMap<BlockSequenceKey, List<BlockTripEntry>>(new ArrayList<BlockTripEntry>());
if (_verbose)
_log.info("grouping block trips by sequence key");
int tripCount = 0;
for (BlockEntry block : blocks) {
if (block.getConfigurations().isEmpty()) {
_log.warn("block has no active configurations: " + block.getId());
continue;
}
if (BlockLibrary.isFrequencyBased(block))
continue;
for (BlockConfigurationEntry blockConfiguration : block.getConfigurations()) {
for (BlockTripEntry blockTrip : blockConfiguration.getTrips()) {
BlockSequenceKey key = getBlockTripAsTripSequenceKey(blockTrip);
blockTripsByKey.get(key).add(blockTrip);
tripCount++;
}
}
}
if (_verbose)
_log.info("groups found: " + blockTripsByKey.size() + " out of trips: " + tripCount);
int count = 0;
for (List<BlockTripEntry> tripsWithSameSequence : blockTripsByKey.values()) {
if (_verbose && count % logInterval == 0)
_log.info("groups processed: " + count + "/" + blockTripsByKey.size());
count++;
List<List<BlockTripEntry>> groupedBlocks = BlockLibrary.createStrictlyOrderedGroups(tripsWithSameSequence, _blockTripLooseComparator, _blockTripStrictComparator);
for (List<BlockTripEntry> group : groupedBlocks) {
BlockTripIndex index = createTripIndexForGroupOfBlockTrips(group);
allIndices.add(index);
}
}
return allIndices;
}
use of org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry in project onebusaway-application-modules by camsys.
the class BlockIndexFactoryServiceImpl method createFrequencyTripIndices.
public List<FrequencyBlockTripIndex> createFrequencyTripIndices(Iterable<BlockEntry> blocks) {
List<FrequencyBlockTripIndex> allIndices = new ArrayList<FrequencyBlockTripIndex>();
int logInterval = LoggingIntervalUtil.getAppropriateLoggingInterval(allIndices.size());
Map<BlockSequenceKey, List<BlockTripEntry>> blockTripsByKey = new FactoryMap<BlockSequenceKey, List<BlockTripEntry>>(new ArrayList<BlockTripEntry>());
if (_verbose)
_log.info("grouping frequency blocks by sequence key");
int tripCount = 0;
for (BlockEntry block : blocks) {
if (block.getConfigurations().isEmpty()) {
_log.warn("block has no configurations: " + block.getId());
continue;
}
if (!BlockLibrary.isFrequencyBased(block))
continue;
for (BlockConfigurationEntry blockConfiguration : block.getConfigurations()) {
for (BlockTripEntry blockTrip : blockConfiguration.getTrips()) {
BlockSequenceKey key = getBlockTripAsTripSequenceKey(blockTrip);
blockTripsByKey.get(key).add(blockTrip);
tripCount++;
}
}
}
if (_verbose)
_log.info("frequency groups found: " + blockTripsByKey.size() + " out of trips: " + tripCount);
int count = 0;
for (List<BlockTripEntry> tripsWithSameSequence : blockTripsByKey.values()) {
if (_verbose && count % logInterval == 0)
_log.info("frequency groups processed: " + count + "/" + blockTripsByKey.size());
count++;
List<FrequencyTripGroup> groupedTrips = ensureFrequencyTripGroups(tripsWithSameSequence);
for (FrequencyTripGroup group : groupedTrips) {
group.trimToSize();
FrequencyBlockTripIndex index = createFrequencyIndexForTrips(group.getTrips(), group.getFrequencies());
allIndices.add(index);
}
}
return allIndices;
}
Aggregations