diff --git a/enabler/src/de/schildbach/pte/AbstractHafasLegacyProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasLegacyProvider.java index 41d8f182..f1db4844 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasLegacyProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasLegacyProvider.java @@ -538,13 +538,8 @@ public abstract class AbstractHafasLegacyProvider extends AbstractHafasProvider if (!"cancel".equals(delay) && !"cancel".equals(eDelay)) { final Calendar plannedTime = new GregorianCalendar(timeZone); plannedTime.clear(); - ParserUtils.parseEuropeanTime(plannedTime, fpTime); - if (fpDate.length() == 8) - ParserUtils.parseGermanDate(plannedTime, fpDate); - else if (fpDate.length() == 10) - ParserUtils.parseIsoDate(plannedTime, fpDate); - else - throw new IllegalStateException("cannot parse: '" + fpDate + "'"); + parseXmlStationBoardDate(plannedTime, fpDate); + parseXmlStationBoardTime(plannedTime, fpTime); final Calendar predictedTime; if (eDelay != null) { @@ -672,6 +667,19 @@ public abstract class AbstractHafasLegacyProvider extends AbstractHafasProvider return result.get(); } + protected void parseXmlStationBoardDate(final Calendar calendar, final String dateStr) { + if (dateStr.length() == 8) + ParserUtils.parseGermanDate(calendar, dateStr); + else if (dateStr.length() == 10) + ParserUtils.parseIsoDate(calendar, dateStr); + else + throw new IllegalStateException("cannot parse: '" + dateStr + "'"); + } + + protected void parseXmlStationBoardTime(final Calendar calendar, final String timeStr) { + ParserUtils.parseEuropeanTime(calendar, timeStr); + } + protected void addCustomReplaces(final StringReplaceReader reader) { } diff --git a/enabler/src/de/schildbach/pte/SncbProvider.java b/enabler/src/de/schildbach/pte/SncbProvider.java index 7910152c..992db498 100644 --- a/enabler/src/de/schildbach/pte/SncbProvider.java +++ b/enabler/src/de/schildbach/pte/SncbProvider.java @@ -18,6 +18,7 @@ package de.schildbach.pte; import java.io.IOException; +import java.util.Calendar; import java.util.EnumSet; import java.util.Set; import java.util.regex.Matcher; @@ -28,6 +29,7 @@ import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyLocationsResult; import de.schildbach.pte.dto.Product; +import de.schildbach.pte.util.ParserUtils; import okhttp3.HttpUrl; @@ -108,4 +110,9 @@ public class SncbProvider extends AbstractHafasLegacyProvider { return super.normalizeType(type); } + + @Override + protected void parseXmlStationBoardDate(final Calendar calendar, final String dateStr) { + ParserUtils.parseGermanDate(calendar, dateStr); + } }