diff --git a/src/de/schildbach/pte/BvgProvider.java b/src/de/schildbach/pte/BvgProvider.java index f4083fbf..8529bd3c 100644 --- a/src/de/schildbach/pte/BvgProvider.java +++ b/src/de/schildbach/pte/BvgProvider.java @@ -607,18 +607,18 @@ public final class BvgProvider extends AbstractHafasProvider private Location location(final String typeStr, final String idStr, final String latStr, final String lonStr, final String nameStr) { final int id = idStr != null ? Integer.parseInt(idStr) : 0; - final int lat = latStr != null ? (int) (Float.parseFloat(latStr) * 1E6) : 0; - final int lon = lonStr != null ? (int) (Float.parseFloat(lonStr) * 1E6) : 0; + final int lat = latStr != null ? Integer.parseInt(latStr) : 0; + final int lon = lonStr != null ? Integer.parseInt(lonStr) : 0; final String[] placeAndName = splitPlaceAndName(nameStr); final LocationType type; if (typeStr == null) type = LocationType.ANY; - else if ("HST".equals(typeStr)) + else if ("STATION".equals(typeStr)) type = LocationType.STATION; else if ("POI".equals(typeStr)) type = LocationType.POI; - else if ("ADR".equals(typeStr)) + else if ("ADDRESS".equals(typeStr)) type = LocationType.ADDRESS; else throw new IllegalArgumentException("cannot handle: " + typeStr); @@ -649,12 +649,14 @@ public final class BvgProvider extends AbstractHafasProvider private static final Pattern P_CONNECTIONS_HEAD = Pattern.compile(".*?" // + "]*>\n" // + "(?:([^\n]*)\n)?" // from name - + "]*>\n" // + "([^\n]*)<.*?)?" // via name + "]*>\n" // + "(?:([^\n]*)\n)?" // to name - + "]*>.., (\\d{2}\\.\\d{2}\\.\\d{2}) \\d{1,2}:\\d{2}.*?" // date + "(?:]*?>.*?)?" // linkEarlier + "(?:]*?>.*?)?" // linkLater @@ -706,10 +708,10 @@ public final class BvgProvider extends AbstractHafasProvider final Matcher mHead = P_CONNECTIONS_HEAD.matcher(page); if (mHead.matches()) { - final Location from = mHead.group(1) != null ? location(mHead.group(3), mHead.group(2), mHead.group(5), mHead.group(4), + final Location from = mHead.group(1) != null ? location(mHead.group(4), mHead.group(5), mHead.group(2), mHead.group(3), ParserUtils.resolveEntities(mHead.group(1))) : null; final Location via = mHead.group(6) != null ? location(null, null, null, null, ParserUtils.resolveEntities(mHead.group(6))) : null; - final Location to = mHead.group(7) != null ? location(mHead.group(9), mHead.group(8), mHead.group(11), mHead.group(10), + final Location to = mHead.group(7) != null ? location(mHead.group(10), mHead.group(11), mHead.group(8), mHead.group(9), ParserUtils.resolveEntities(mHead.group(7))) : null; final Calendar currentDate = new GregorianCalendar(timeZone()); currentDate.clear();