private Frequency doMap(org.onebusaway.gtfs.model.Frequency rhs) { Frequency lhs = new Frequency(); lhs.setTrip(tripMapper.map(rhs.getTrip())); lhs.setStartTime(rhs.getStartTime()); lhs.setEndTime(rhs.getEndTime()); lhs.setHeadwaySecs(rhs.getHeadwaySecs()); lhs.setExactTimes(rhs.getExactTimes()); lhs.setLabelOnly(rhs.getLabelOnly()); return lhs; } }
private Map<AgencyAndId, List<FrequencyEntry>> getFrequenciesByTrip( TransitGraphImpl graph) { Map<AgencyAndId, List<FrequencyEntry>> frequenciesByTripId = new HashMap<AgencyAndId, List<FrequencyEntry>>(); Collection<Frequency> allFrequencies = _gtfsDao.getAllFrequencies(); int frequencyIndex = 0; for (Frequency frequency : allFrequencies) { if (frequencyIndex % 100 == 0) _log.info("frequencies: " + (frequencyIndex++) + "/" + allFrequencies.size()); frequencyIndex++; AgencyAndId tripId = frequency.getTrip().getId(); FrequencyEntryImpl entry = new FrequencyEntryImpl( frequency.getStartTime(), frequency.getEndTime(), frequency.getHeadwaySecs()); List<FrequencyEntry> frequencies = frequenciesByTripId.get(tripId); if (frequencies == null) { frequencies = new ArrayList<FrequencyEntry>(); frequenciesByTripId.put(tripId, frequencies); } frequencies.add(entry); } FrequencyComparator comparator = new FrequencyComparator(); for (List<FrequencyEntry> list : frequenciesByTripId.values()) Collections.sort(list, comparator); return frequenciesByTripId; }
private void processRawFrequency(TransitGraphImpl graph, Frequency frequency, Map<AgencyAndId, List<FrequencyEntry>> frequenciesByTripId, Map<FrequencyRouteLabelKey, List<FrequencyEntry>> frequencyLabelsByKey) { AgencyAndId tripId = frequency.getTrip().getId(); TripEntry trip = graph.getTripEntryForId(tripId); FrequencyEntryImpl entry = new FrequencyEntryImpl(frequency.getStartTime(), frequency.getEndTime(), frequency.getHeadwaySecs()); FrequencyRouteLabelKey key = getFrequencyLabelKeyForTrip(frequency, trip); if (key != null) { frequencyLabelsByKey.get(key).add(entry); } else { List<FrequencyEntry> frequencies = frequenciesByTripId.get(tripId); if (frequencies == null) { frequencies = new ArrayList<FrequencyEntry>(); frequenciesByTripId.put(tripId, frequencies); } frequencies.add(entry); } }
private void processRawFrequency(TransitGraphImpl graph, Frequency frequency, Map<AgencyAndId, List<FrequencyEntry>> frequenciesByTripId, Map<AgencyAndId, Integer> exactTimesValueByTrip) { AgencyAndId tripId = frequency.getTrip().getId(); /** * The value of frequencies.txt exact_times is expected to be the same * across all entries for the same trip id. */ Integer exactTimesValue = exactTimesValueByTrip.get(tripId); if (exactTimesValue == null) { exactTimesValue = frequency.getExactTimes(); exactTimesValueByTrip.put(tripId, exactTimesValue); } else if (exactTimesValue != frequency.getExactTimes()) { throw new IllegalStateException( "The value of frequencies.txt exact_times differed for frequency entries with tripId=" + tripId); } FrequencyEntryImpl entry = new FrequencyEntryImpl(frequency.getStartTime(), frequency.getEndTime(), frequency.getHeadwaySecs(), frequency.getExactTimes()); List<FrequencyEntry> frequencies = frequenciesByTripId.get(tripId); if (frequencies == null) { frequencies = new ArrayList<FrequencyEntry>(); frequenciesByTripId.put(tripId, frequencies); } frequencies.add(entry); }
@Override protected boolean entitiesAreIdentical(Frequency frequencyA, Frequency frequencyB) { if (!frequencyA.getTrip().equals(frequencyB.getTrip())) { return false; } if (frequencyA.getStartTime() != frequencyB.getStartTime()) { return false; } if (frequencyA.getEndTime() != frequencyB.getEndTime()) { return false; } /** * If everything else matches but headway secs, should we consider them the * same? Maybe for fuzzy matching? */ if (frequencyA.getHeadwaySecs() != frequencyB.getHeadwaySecs()) { return false; } return true; } }
@Override protected boolean entitiesAreIdentical(Frequency frequencyA, Frequency frequencyB) { if (!frequencyA.getTrip().equals(frequencyB.getTrip())) { return false; } if (frequencyA.getStartTime() != frequencyB.getStartTime()) { return false; } if (frequencyA.getEndTime() != frequencyB.getEndTime()) { return false; } /** * If everything else matches but headway secs, should we consider them the * same? Maybe for fuzzy matching? */ if (frequencyA.getHeadwaySecs() != frequencyB.getHeadwaySecs()) { return false; } return true; } }
int startTime = f.getStartTime(); int startTime = f.getStartTime();
} else { for(Frequency freq : frequencies) { for(int i = freq.getStartTime(); i < freq.getEndTime(); i += freq.getHeadwaySecs()) { int diff = i - originalStopTimes.get(0).getArrivalTime(); List<StopTime> newStopTimes = new ArrayList<StopTime>();