From 8895e1695f40bbdb824d9c92c21e14693bbd13d4 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Fri, 7 Nov 2014 20:25:36 +0100 Subject: [PATCH] Sort departures by time when querying station board (Hafas). --- .../schildbach/pte/AbstractHafasProvider.java | 4 ++++ .../src/de/schildbach/pte/dto/Departure.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 505161c5..b475d1e9 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -715,6 +715,10 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider XmlPullUtil.requireEndDocument(pp); + // sort departures + for (final StationDepartures stationDepartures : result.stationDepartures) + Collections.sort(stationDepartures.departures, Departure.TIME_COMPARATOR); + return result; } catch (final XmlPullParserException x) diff --git a/enabler/src/de/schildbach/pte/dto/Departure.java b/enabler/src/de/schildbach/pte/dto/Departure.java index 694ae742..b6351a73 100644 --- a/enabler/src/de/schildbach/pte/dto/Departure.java +++ b/enabler/src/de/schildbach/pte/dto/Departure.java @@ -18,6 +18,7 @@ package de.schildbach.pte.dto; import java.io.Serializable; +import java.util.Comparator; import java.util.Date; /** @@ -45,6 +46,16 @@ public final class Departure implements Serializable this.message = message; } + public Date getTime() + { + if (predictedTime != null) + return predictedTime; + else if (plannedTime != null) + return plannedTime; + else + return null; + } + @Override public String toString() { @@ -110,4 +121,12 @@ public final class Departure implements Serializable return 0; return o.hashCode(); } + + public static final Comparator TIME_COMPARATOR = new Comparator() + { + public int compare(final Departure departure0, final Departure departure1) + { + return departure0.getTime().compareTo(departure1.getTime()); + } + }; }