SNCB: Fix date parsing of XML station board.

This commit is contained in:
Andreas Schildbach 2017-02-05 11:28:50 +01:00
parent 1015be4d85
commit 8be2426b3a
2 changed files with 22 additions and 7 deletions

View file

@ -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) {
}

View file

@ -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);
}
}