From efa52d7f3d22afac523085902991be161eedcf35 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Tue, 9 Jul 2013 20:21:20 +0200 Subject: [PATCH] Migrate Sweden to binary connections query --- .../schildbach/pte/AbstractHafasProvider.java | 17 +++++++++---- enabler/src/de/schildbach/pte/SeProvider.java | 25 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index 6edd272f..2542ff2b 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -90,6 +90,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider private final Charset xmlMlcResEncoding; private boolean dominantPlanStopTime = false; private boolean canDoEquivs = true; + private boolean useIso8601 = false; private static class Context implements QueryTripsContext { @@ -185,6 +186,11 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider this.canDoEquivs = canDoEquivs; } + protected void setUseIso8601(final boolean useIso8601) + { + this.useIso8601 = useIso8601; + } + protected TimeZone timeZone() { return TimeZone.getTimeZone("CET"); @@ -899,11 +905,12 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final Calendar c = new GregorianCalendar(timeZone()); c.setTime(date); - uri.append("&REQ0JourneyDate="); - uri.append(String.format(Locale.ENGLISH, "%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, - c.get(Calendar.YEAR) - 2000)); - uri.append("&REQ0JourneyTime="); - uri.append(String.format(Locale.ENGLISH, "%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); + final String dateStr = useIso8601 ? String.format(Locale.ENGLISH, "%04d-%02d-%02d", c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, + c.get(Calendar.DAY_OF_MONTH)) : String.format(Locale.ENGLISH, "%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), + c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000); + uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(dateStr)); + final String timeStr = String.format(Locale.ENGLISH, "%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); + uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(timeStr)); final StringBuilder productsStr = new StringBuilder(numProductBits); if (products != null) diff --git a/enabler/src/de/schildbach/pte/SeProvider.java b/enabler/src/de/schildbach/pte/SeProvider.java index 55f6667a..2cd5ab64 100644 --- a/enabler/src/de/schildbach/pte/SeProvider.java +++ b/enabler/src/de/schildbach/pte/SeProvider.java @@ -19,7 +19,9 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; +import java.util.Date; import java.util.List; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -29,6 +31,8 @@ import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; +import de.schildbach.pte.dto.QueryTripsContext; +import de.schildbach.pte.dto.QueryTripsResult; /** * @author Andreas Schildbach @@ -47,6 +51,7 @@ public class SeProvider extends AbstractHafasProvider setClientType("ANDROID"); setCanDoEquivs(false); + setUseIso8601(true); } public NetworkId id() @@ -193,6 +198,26 @@ public class SeProvider extends AbstractHafasProvider return jsonGetStops(uri.toString()); } + @Override + protected void appendCustomTripsQueryBinaryUri(final StringBuilder uri) + { + uri.append("&h2g-direct=11"); + } + + @Override + public QueryTripsResult queryTrips(final Location from, final Location via, final Location to, final Date date, final boolean dep, + final int numTrips, final Collection products, final WalkSpeed walkSpeed, final Accessibility accessibility, + final Set