mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-17 13:59:50 +00:00
Hafas: More improvements to splitting place and name, mostly for POIs.
This commit is contained in:
parent
589cf69063
commit
7ff06cc2d4
20 changed files with 213 additions and 81 deletions
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue