diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 748f39c5..7cd64cd3 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -19,8 +19,6 @@ package de.schildbach.pte; import java.io.IOException; import java.io.InputStream; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -228,14 +226,22 @@ public abstract class AbstractHafasProvider implements NetworkProvider to = autocompletes.get(0); } - final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); + final Calendar c = new GregorianCalendar(timeZone()); + c.setTime(date); final String request = "" // - + "" + location(from) + "" // + + "" + + location(from) + + "" // + (via != null ? "" + location(via) + "" : "") // - + "" + location(to) + "" // - + "" // + + "" + + location(to) + + "" // + + "" // + "" // + ""; @@ -855,11 +861,13 @@ public abstract class AbstractHafasProvider implements NetworkProvider return 'I'; if (ucType.equals("EN")) // EuroNight return 'I'; + if (ucType.equals("EIC")) // Ekspres InterCity, Polen + return 'I'; if (ucType.equals("ICE")) // InterCityExpress return 'I'; if (ucType.equals("IC")) // InterCity return 'I'; - if (ucType.equals("EN")) // EuroNight + if (ucType.equals("ICT")) // InterCity return 'I'; if (ucType.equals("CNL")) // CityNightLine return 'I'; @@ -890,7 +898,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider if (ucType.equals("IRX")) // IC return 'I'; - // Regional Germany + // Regional if (ucType.equals("ZUG")) // Generic Train return 'R'; if (ucType.equals("R")) // Generic Regional Train @@ -913,11 +921,9 @@ public abstract class AbstractHafasProvider implements NetworkProvider return 'R'; if (ucType.equals("REX")) // RegionalExpress, Österreich return 'R'; - - // Regional Poland - if (ucType.equals("OS")) // Chop-Cierna nas Tisou + if (ucType.equals("OS")) // Osobný vlak, Slovakia oder Osobní vlak, Czech Republic return 'R'; - if (ucType.equals("SP")) // Polen + if (ucType.equals("SP")) // Spěšný vlak, Czech Republic return 'R'; // Suburban Trains diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 305ec1d8..1fdb672a 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -128,8 +126,9 @@ public final class BahnProvider extends AbstractHafasProvider private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); + final Calendar c = new GregorianCalendar(timeZone()); + c.setTime(date); + final StringBuilder uri = new StringBuilder(); uri.append(API_BASE).append("query.exe/dox"); @@ -139,8 +138,9 @@ public final class BahnProvider extends AbstractHafasProvider uri.append("&REQ0JourneyStops1.0ID=").append(ParserUtils.urlEncode(locationId(via))); uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to))); uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); - uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); - uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); + uri.append("&REQ0JourneyDate=").append( + String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); + uri.append("&REQ0JourneyTime=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); uri.append("&REQ0Tariff_Class=2"); uri.append("&REQ0Tariff_TravellerAge.1=35"); uri.append("&REQ0Tariff_TravellerReductionClass.1=0"); diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index 36412386..2cb2751e 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -206,8 +204,9 @@ public final class BvgProvider extends AbstractHafasProvider private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); + final Calendar c = new GregorianCalendar(timeZone()); + c.setTime(date); + final StringBuilder uri = new StringBuilder(); uri.append("http://mobil.bvg.de/Fahrinfo/bin/query.bin/dox"); @@ -219,8 +218,9 @@ public final class BvgProvider extends AbstractHafasProvider appendLocationBvg(uri, via, "1", null); uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); - uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); - uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); + uri.append("&REQ0JourneyDate=").append( + String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); + uri.append("&REQ0JourneyTime=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); for (final char p : products.toCharArray()) { diff --git a/src/de/schildbach/pte/InvgProvider.java b/src/de/schildbach/pte/InvgProvider.java index 98fa0ee4..8877384c 100644 --- a/src/de/schildbach/pte/InvgProvider.java +++ b/src/de/schildbach/pte/InvgProvider.java @@ -18,12 +18,9 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; @@ -136,16 +133,11 @@ public class InvgProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); - final Date now = new Date(); - final StringBuilder uri = new StringBuilder(); + uri.append(API_BASE).append("stboard.exe/dn"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); - uri.append("&time=").append(TIME_FORMAT.format(now)); - uri.append("&date=").append(DATE_FORMAT.format(now)); uri.append("&productsFilter=1111111111"); if (maxDepartures != 0) uri.append("&maxJourneys=").append(maxDepartures); diff --git a/src/de/schildbach/pte/NasaProvider.java b/src/de/schildbach/pte/NasaProvider.java index d3717621..6e750e46 100644 --- a/src/de/schildbach/pte/NasaProvider.java +++ b/src/de/schildbach/pte/NasaProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -86,16 +84,11 @@ public class NasaProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); - final Date now = new Date(); - final StringBuilder uri = new StringBuilder(); + uri.append(API_BASE).append("stboard.exe/dn"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); - uri.append("&time=").append(TIME_FORMAT.format(now)); - uri.append("&date=").append(DATE_FORMAT.format(now)); uri.append("&productsFilter=11111111"); if (maxDepartures != 0) uri.append("&maxJourneys=").append(maxDepartures); diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index 4fab8d82..b9524d1a 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -164,8 +162,9 @@ public class OebbProvider extends AbstractHafasProvider private String connectionsQuery(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products, final WalkSpeed walkSpeed) throws IOException { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); + final Calendar c = new GregorianCalendar(timeZone()); + c.setTime(date); + final StringBuilder uri = new StringBuilder(); uri.append("queryPageDisplayed=yes"); @@ -174,9 +173,10 @@ public class OebbProvider extends AbstractHafasProvider if (via != null) uri.append("&REQ0JourneyStops1.0ID=").append(ParserUtils.urlEncode(locationId(via))); uri.append("&REQ0JourneyStopsZ0ID=").append(ParserUtils.urlEncode(locationId(to))); - uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); + uri.append("&REQ0JourneyDate=").append( + String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); uri.append("&wDayExt0=").append(ParserUtils.urlEncode("Mo|Di|Mi|Do|Fr|Sa|So")); - uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); + uri.append("&REQ0JourneyTime=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); uri.append("&existHafasDemo3=yes"); uri.append("&REQ0JourneyDep_Foot_speed=").append(WALKSPEED_MAP.get(walkSpeed)); @@ -512,21 +512,16 @@ public class OebbProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); - final Date now = new Date(); - final StringBuilder uri = new StringBuilder(); uri.append(API_BASE); uri.append("stboard.exe/dn?L=vs_scotty.vs_stb"); uri.append("&input=").append(stationId); uri.append("&boardType=dep"); - uri.append("&time=").append(TIME_FORMAT.format(now)); uri.append("&productsFilter=111111111111"); uri.append("&additionalTime=0"); uri.append("&maxJourneys=").append(maxDepartures != 0 ? maxDepartures : 20); uri.append("&start=yes"); - uri.append("&selectDate=today"); uri.append("&monitor=1"); uri.append("&requestType=0"); uri.append("&view=preview"); diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index 1838c54c..b22a992c 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -132,15 +130,17 @@ public class RmvProvider extends AbstractHafasProvider private String connectionsQueryUri(final Location from, final Location via, final Location to, final Date date, final boolean dep, final String products, final WalkSpeed walkSpeed) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); + final Calendar c = new GregorianCalendar(timeZone()); + c.setTime(date); + final StringBuilder uri = new StringBuilder(); uri.append(API_BASE).append("query.exe/dox"); uri.append("?REQ0HafasInitialSelection=0"); uri.append("&REQ0HafasSearchForw=").append(dep ? "1" : "0"); - uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); - uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); + uri.append("&REQ0JourneyDate=").append( + String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); + uri.append("&REQ0JourneyTime=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); uri.append("&REQ0JourneyStopsS0ID=").append(ParserUtils.urlEncode(locationId(from))); if (via != null) uri.append("&REQ0JourneyStops1.0ID=").append(ParserUtils.urlEncode(locationId(via))); @@ -466,19 +466,20 @@ public class RmvProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); - final Date now = new Date(); + final Calendar c = new GregorianCalendar(timeZone()); final StringBuilder uri = new StringBuilder(); + uri.append(API_BASE).append("stboard.exe/dox"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); // show departures uri.append("&maxJourneys=").append(maxDepartures != 0 ? maxDepartures : 50); // maximum taken from RMV site - uri.append("&time=").append(TIME_FORMAT.format(now)); - uri.append("&date=").append(DATE_FORMAT.format(now)); + uri.append("&date=").append( + String.format("%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000)); + uri.append("&time=").append(String.format("%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE))); uri.append("&disableEquivs=yes"); // don't use nearby stations uri.append("&start=yes"); + return uri.toString(); } diff --git a/src/de/schildbach/pte/SeptaProvider.java b/src/de/schildbach/pte/SeptaProvider.java index 9c22aabf..d398d355 100644 --- a/src/de/schildbach/pte/SeptaProvider.java +++ b/src/de/schildbach/pte/SeptaProvider.java @@ -18,12 +18,9 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.TimeZone; @@ -119,16 +116,17 @@ public class SeptaProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("h:mm a"); - final Date now = new Date(); + final Calendar now = new GregorianCalendar(timeZone()); final StringBuilder uri = new StringBuilder(); uri.append(API_BASE).append("stboard.exe/en"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); - uri.append("&time=").append(ParserUtils.urlEncode(TIME_FORMAT.format(now))); - uri.append("&date=").append(ParserUtils.urlEncode(DATE_FORMAT.format(now))); + uri.append("&time=").append( + ParserUtils.urlEncode(String.format("%02d:%02d %s", now.get(Calendar.HOUR), now.get(Calendar.MINUTE), + now.get(Calendar.AM_PM) == Calendar.AM ? "am" : "pm"))); + uri.append("&date=").append( + String.format("%02d%02d%04d", now.get(Calendar.MONTH) + 1, now.get(Calendar.DAY_OF_MONTH), now.get(Calendar.YEAR))); uri.append("&productsFilter=1111"); if (maxDepartures != 0) uri.append("&maxJourneys=").append(maxDepartures); diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java index 5714fc52..17f32d5a 100644 --- a/src/de/schildbach/pte/VgsProvider.java +++ b/src/de/schildbach/pte/VgsProvider.java @@ -18,8 +18,6 @@ package de.schildbach.pte; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; @@ -85,16 +83,11 @@ public class VgsProvider extends AbstractHafasProvider private String departuresQueryUri(final String stationId, final int maxDepartures) { - final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy"); - final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm"); - final Date now = new Date(); - final StringBuilder uri = new StringBuilder(); + uri.append(API_BASE).append("stboard.exe/dn"); uri.append("?input=").append(stationId); uri.append("&boardType=dep"); - uri.append("&time=").append(TIME_FORMAT.format(now)); - uri.append("&date=").append(DATE_FORMAT.format(now)); uri.append("&productsFilter=11111111111"); if (maxDepartures != 0) uri.append("&maxJourneys=").append(maxDepartures);