diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index f7fb5d8f..7e385fb2 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -255,6 +255,11 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider return new String[] { null, name }; } + protected String[] splitPOI(final String poi) + { + return new String[] { null, poi }; + } + protected String[] splitAddress(final String address) { return new String[] { null, address }; @@ -410,7 +415,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } else if (type == 4) // poi { - location = new Location(LocationType.POI, localId, lat, lon, null, value); + final String[] placeAndName = splitPOI(value); + location = new Location(LocationType.POI, localId, lat, lon, placeAndName[0], placeAndName[1]); } else if (type == 128) // crossing { @@ -2100,7 +2106,8 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider } else if (type == 3) { - return new Location(LocationType.POI, null, lat, lon, null, name); + final String[] placeAndName = splitPOI(name); + return new Location(LocationType.POI, null, lat, lon, placeAndName[0], placeAndName[1]); } else { diff --git a/enabler/src/de/schildbach/pte/BahnProvider.java b/enabler/src/de/schildbach/pte/BahnProvider.java index 1356ada8..f382e39f 100644 --- a/enabler/src/de/schildbach/pte/BahnProvider.java +++ b/enabler/src/de/schildbach/pte/BahnProvider.java @@ -129,19 +129,29 @@ public final class BahnProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mComma = P_SPLIT_NAME_ONE_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(2), mComma.group(1) }; + final Matcher m = P_SPLIT_NAME_ONE_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/BvgProvider.java b/enabler/src/de/schildbach/pte/BvgProvider.java index 6a9ca6bb..2a37d167 100644 --- a/enabler/src/de/schildbach/pte/BvgProvider.java +++ b/enabler/src/de/schildbach/pte/BvgProvider.java @@ -155,12 +155,22 @@ public final class BvgProvider extends AbstractHafasProvider return place; } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/DsbProvider.java b/enabler/src/de/schildbach/pte/DsbProvider.java index 51a7bebb..e7507649 100644 --- a/enabler/src/de/schildbach/pte/DsbProvider.java +++ b/enabler/src/de/schildbach/pte/DsbProvider.java @@ -124,9 +124,9 @@ public class DsbProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mParen = P_SPLIT_NAME_PAREN.matcher(name); - if (mParen.matches()) - return new String[] { mParen.group(2), mParen.group(1) }; + final Matcher m = P_SPLIT_NAME_PAREN.matcher(name); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(name); } diff --git a/enabler/src/de/schildbach/pte/InvgProvider.java b/enabler/src/de/schildbach/pte/InvgProvider.java index c0f76e23..8d21e147 100644 --- a/enabler/src/de/schildbach/pte/InvgProvider.java +++ b/enabler/src/de/schildbach/pte/InvgProvider.java @@ -91,17 +91,37 @@ public class InvgProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + for (final String place : PLACES) - { if (name.startsWith(place + " ") || name.startsWith(place + "-")) return new String[] { place, name.substring(place.length() + 1) }; - else if (name.startsWith(place + ", ")) - return new String[] { place, name.substring(place.length() + 2) }; - } return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + + @Override + protected String[] splitAddress(final String address) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(address); + } + @Override public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException { diff --git a/enabler/src/de/schildbach/pte/JetProvider.java b/enabler/src/de/schildbach/pte/JetProvider.java index 63c88eae..2b68b2da 100644 --- a/enabler/src/de/schildbach/pte/JetProvider.java +++ b/enabler/src/de/schildbach/pte/JetProvider.java @@ -121,6 +121,16 @@ public class JetProvider extends AbstractHafasProvider } } + @Override + protected String[] splitAddress(final String address) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(address); + } + private static final Pattern P_NORMALIZE_BUS = Pattern.compile("([א]?\\d{1,3})#"); @Override diff --git a/enabler/src/de/schildbach/pte/LuProvider.java b/enabler/src/de/schildbach/pte/LuProvider.java index b7a6f277..8c1a96d6 100644 --- a/enabler/src/de/schildbach/pte/LuProvider.java +++ b/enabler/src/de/schildbach/pte/LuProvider.java @@ -112,9 +112,9 @@ public class LuProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(name); } @@ -122,9 +122,9 @@ public class LuProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/NasaProvider.java b/enabler/src/de/schildbach/pte/NasaProvider.java index e6d0e2e5..d6984a3e 100644 --- a/enabler/src/de/schildbach/pte/NasaProvider.java +++ b/enabler/src/de/schildbach/pte/NasaProvider.java @@ -107,19 +107,29 @@ public class NasaProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/NvvProvider.java b/enabler/src/de/schildbach/pte/NvvProvider.java index 6152e521..f2449207 100644 --- a/enabler/src/de/schildbach/pte/NvvProvider.java +++ b/enabler/src/de/schildbach/pte/NvvProvider.java @@ -150,9 +150,9 @@ public class NvvProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/OebbProvider.java b/enabler/src/de/schildbach/pte/OebbProvider.java index 2eff6bc4..0bcfd610 100644 --- a/enabler/src/de/schildbach/pte/OebbProvider.java +++ b/enabler/src/de/schildbach/pte/OebbProvider.java @@ -166,20 +166,28 @@ public class OebbProvider extends AbstractHafasProvider protected String[] splitStationName(final String name) { for (final String place : PLACES) - { if (name.startsWith(place + " ")) return new String[] { place, name.substring(place.length() + 1) }; - } return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/RsagProvider.java b/enabler/src/de/schildbach/pte/RsagProvider.java index b409234c..455515c4 100644 --- a/enabler/src/de/schildbach/pte/RsagProvider.java +++ b/enabler/src/de/schildbach/pte/RsagProvider.java @@ -136,9 +136,9 @@ public class RsagProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/SbbProvider.java b/enabler/src/de/schildbach/pte/SbbProvider.java index bd384a40..a64465f4 100644 --- a/enabler/src/de/schildbach/pte/SbbProvider.java +++ b/enabler/src/de/schildbach/pte/SbbProvider.java @@ -118,19 +118,29 @@ public class SbbProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/SeProvider.java b/enabler/src/de/schildbach/pte/SeProvider.java index cf449674..5c00bbb8 100644 --- a/enabler/src/de/schildbach/pte/SeProvider.java +++ b/enabler/src/de/schildbach/pte/SeProvider.java @@ -145,9 +145,9 @@ public class SeProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_LAST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(2), mComma.group(1) }; + final Matcher m = P_SPLIT_NAME_LAST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/SeptaProvider.java b/enabler/src/de/schildbach/pte/SeptaProvider.java index 2ce21a8c..da09a10f 100644 --- a/enabler/src/de/schildbach/pte/SeptaProvider.java +++ b/enabler/src/de/schildbach/pte/SeptaProvider.java @@ -297,9 +297,9 @@ public class SeptaProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_LAST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(2), mComma.group(1) }; + final Matcher m = P_SPLIT_NAME_LAST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/ShProvider.java b/enabler/src/de/schildbach/pte/ShProvider.java index fdb1b71c..c4cdcfb5 100644 --- a/enabler/src/de/schildbach/pte/ShProvider.java +++ b/enabler/src/de/schildbach/pte/ShProvider.java @@ -141,20 +141,28 @@ public class ShProvider extends AbstractHafasProvider protected String[] splitStationName(final String name) { for (final String place : PLACES) - { if (name.startsWith(place + " ") || name.startsWith(place + "-")) return new String[] { place, name.substring(place.length() + 1) }; - } return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/SncbProvider.java b/enabler/src/de/schildbach/pte/SncbProvider.java index 2ae7b224..bfafcf15 100644 --- a/enabler/src/de/schildbach/pte/SncbProvider.java +++ b/enabler/src/de/schildbach/pte/SncbProvider.java @@ -19,6 +19,7 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Collection; +import java.util.regex.Matcher; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; @@ -114,6 +115,16 @@ public class SncbProvider extends AbstractHafasProvider return super.splitStationName(name); } + @Override + protected String[] splitAddress(final String address) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(address); + } + @Override public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException { diff --git a/enabler/src/de/schildbach/pte/StockholmProvider.java b/enabler/src/de/schildbach/pte/StockholmProvider.java index 9cf1b51a..dee03850 100644 --- a/enabler/src/de/schildbach/pte/StockholmProvider.java +++ b/enabler/src/de/schildbach/pte/StockholmProvider.java @@ -114,9 +114,9 @@ public class StockholmProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mParen = P_SPLIT_NAME_PAREN.matcher(name); - if (mParen.matches()) - return new String[] { mParen.group(2), mParen.group(1) }; + final Matcher m = P_SPLIT_NAME_PAREN.matcher(name); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(name); } @@ -124,9 +124,9 @@ public class StockholmProvider extends AbstractHafasProvider @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_LAST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(2), mComma.group(1) }; + final Matcher m = P_SPLIT_NAME_LAST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/VbbProvider.java b/enabler/src/de/schildbach/pte/VbbProvider.java index 5c9caf68..5b790e21 100644 --- a/enabler/src/de/schildbach/pte/VbbProvider.java +++ b/enabler/src/de/schildbach/pte/VbbProvider.java @@ -151,12 +151,22 @@ public class VbbProvider extends AbstractHafasProvider return place; } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/VgsProvider.java b/enabler/src/de/schildbach/pte/VgsProvider.java index a6a5471e..edcc1b10 100644 --- a/enabler/src/de/schildbach/pte/VgsProvider.java +++ b/enabler/src/de/schildbach/pte/VgsProvider.java @@ -94,19 +94,29 @@ public class VgsProvider extends AbstractHafasProvider @Override protected String[] splitStationName(final String name) { - final Matcher mComma = P_SPLIT_NAME_LAST_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(2), mComma.group(1) }; + final Matcher m = P_SPLIT_NAME_LAST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(2), m.group(1) }; return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); } diff --git a/enabler/src/de/schildbach/pte/ZvvProvider.java b/enabler/src/de/schildbach/pte/ZvvProvider.java index a9794aa3..9fb3751d 100644 --- a/enabler/src/de/schildbach/pte/ZvvProvider.java +++ b/enabler/src/de/schildbach/pte/ZvvProvider.java @@ -136,25 +136,33 @@ public class ZvvProvider extends AbstractHafasProvider } } - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(name); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(name); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; for (final String place : PLACES) - { if (name.startsWith(place + " ") || name.startsWith(place + ",")) return new String[] { place, name.substring(place.length() + 1) }; - } return super.splitStationName(name); } + @Override + protected String[] splitPOI(final String poi) + { + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(poi); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; + + return super.splitStationName(poi); + } + @Override protected String[] splitAddress(final String address) { - final Matcher mComma = P_SPLIT_NAME_FIRST_COMMA.matcher(address); - if (mComma.matches()) - return new String[] { mComma.group(1), mComma.group(2) }; + final Matcher m = P_SPLIT_NAME_FIRST_COMMA.matcher(address); + if (m.matches()) + return new String[] { m.group(1), m.group(2) }; return super.splitStationName(address); }