Search in sources :

Example 26 with BlockEntry

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;
}
Also used : AgencyAndId(org.onebusaway.gtfs.model.AgencyAndId) BlockEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry) BlockInstance(org.onebusaway.transit_data_federation.services.blocks.BlockInstance) TripEntry(org.onebusaway.transit_data_federation.services.transit_graph.TripEntry) BlockTripEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockTripEntry)

Example 27 with BlockEntry

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;
}
Also used : BlockEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry) BlockBean(org.onebusaway.transit_data.model.blocks.BlockBean) ArrayList(java.util.ArrayList) BlockConfigurationBean(org.onebusaway.transit_data.model.blocks.BlockConfigurationBean) BlockConfigurationEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry) Cacheable(org.onebusaway.container.cache.Cacheable)

Example 28 with BlockEntry

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;
}
Also used : FactoryMap(org.onebusaway.collections.FactoryMap) BlockTripEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockTripEntry) ArrayList(java.util.ArrayList) BlockLayoverIndex(org.onebusaway.transit_data_federation.services.blocks.BlockLayoverIndex) BlockEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry) ArrayList(java.util.ArrayList) List(java.util.List) BlockConfigurationEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry)

Example 29 with BlockEntry

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;
}
Also used : FactoryMap(org.onebusaway.collections.FactoryMap) BlockTripEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockTripEntry) ArrayList(java.util.ArrayList) BlockEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry) ArrayList(java.util.ArrayList) List(java.util.List) BlockConfigurationEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry) BlockTripIndex(org.onebusaway.transit_data_federation.services.blocks.BlockTripIndex) FrequencyBlockTripIndex(org.onebusaway.transit_data_federation.services.blocks.FrequencyBlockTripIndex)

Example 30 with BlockEntry

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;
}
Also used : FactoryMap(org.onebusaway.collections.FactoryMap) BlockTripEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockTripEntry) ArrayList(java.util.ArrayList) FrequencyBlockTripIndex(org.onebusaway.transit_data_federation.services.blocks.FrequencyBlockTripIndex) BlockEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry) ArrayList(java.util.ArrayList) List(java.util.List) BlockConfigurationEntry(org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry)

Aggregations

BlockEntry (org.onebusaway.transit_data_federation.services.transit_graph.BlockEntry)31 BlockConfigurationEntry (org.onebusaway.transit_data_federation.services.transit_graph.BlockConfigurationEntry)13 ArrayList (java.util.ArrayList)11 TripEntry (org.onebusaway.transit_data_federation.services.transit_graph.TripEntry)10 AgencyAndId (org.onebusaway.gtfs.model.AgencyAndId)9 List (java.util.List)8 BlockTripEntry (org.onebusaway.transit_data_federation.services.transit_graph.BlockTripEntry)8 Test (org.junit.Test)7 Date (java.util.Date)6 BlockEntryImpl (org.onebusaway.transit_data_federation.impl.transit_graph.BlockEntryImpl)6 BlockInstance (org.onebusaway.transit_data_federation.services.blocks.BlockInstance)6 FrequencyBlockTripIndex (org.onebusaway.transit_data_federation.services.blocks.FrequencyBlockTripIndex)6 ServiceIdActivation (org.onebusaway.transit_data_federation.services.transit_graph.ServiceIdActivation)6 FactoryMap (org.onebusaway.collections.FactoryMap)5 StopEntryImpl (org.onebusaway.transit_data_federation.impl.transit_graph.StopEntryImpl)5 TripEntryImpl (org.onebusaway.transit_data_federation.impl.transit_graph.TripEntryImpl)5 Cacheable (org.onebusaway.container.cache.Cacheable)3 ServiceDate (org.onebusaway.gtfs.model.calendar.ServiceDate)3 BlockLayoverIndex (org.onebusaway.transit_data_federation.services.blocks.BlockLayoverIndex)3 BlockTripIndex (org.onebusaway.transit_data_federation.services.blocks.BlockTripIndex)3