cleanup of various normalizeType/normalizeLine methods

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@631 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-05-08 23:15:02 +00:00
parent 76c9ba2edd
commit f5a7ca06dd
13 changed files with 257 additions and 455 deletions

View file

@ -733,12 +733,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
if (category == null) if (category == null)
category = shortCategory; category = shortCategory;
final char type = normalizeType(category); final String lineStr = normalizeLine(category, name);
final String lineStr;
if (type != 0)
lineStr = type + name;
else
lineStr = _normalizeLine(category, name); // for compatibility
line = new Line(lineStr, lineColors(lineStr)); line = new Line(lineStr, lineColors(lineStr));
} }
else if (tag.equals("Walk") || tag.equals("Transfer") || tag.equals("GisRoute")) else if (tag.equals("Walk") || tag.equals("Transfer") || tag.equals("GisRoute"))
@ -1099,6 +1094,228 @@ public abstract class AbstractHafasProvider implements NetworkProvider
return new NearbyStationsResult(stations); return new NearbyStationsResult(stations);
} }
private static final Pattern P_LINE_S = Pattern.compile("SN?\\d*");
protected char normalizeType(final String type)
{
final String ucType = type.toUpperCase();
// Intercity
if ("EC".equals(ucType)) // EuroCity
return 'I';
if ("EN".equals(ucType)) // EuroNight
return 'I';
if ("D".equals(ucType)) // EuroNight, Sitzwagenabteil
return 'I';
if ("EIC".equals(ucType)) // Ekspres InterCity, Polen
return 'I';
if ("ICE".equals(ucType)) // InterCityExpress
return 'I';
if ("IC".equals(ucType)) // InterCity
return 'I';
if ("ICT".equals(ucType)) // InterCity
return 'I';
if ("ICN".equals(ucType)) // Intercity-Neigezug, Schweiz
return 'I';
if ("CNL".equals(ucType)) // CityNightLine
return 'I';
if ("OEC".equals(ucType)) // ÖBB-EuroCity
return 'I';
if ("OIC".equals(ucType)) // ÖBB-InterCity
return 'I';
if ("RJ".equals(ucType)) // RailJet, Österreichische Bundesbahnen
return 'I';
if ("THA".equals(ucType)) // Thalys
return 'I';
if ("TGV".equals(ucType)) // Train à Grande Vitesse
return 'I';
if ("DNZ".equals(ucType)) // Nachtzug Basel-Moskau
return 'I';
if ("AIR".equals(ucType)) // Generic Flight
return 'I';
if ("ECB".equals(ucType)) // EC, Verona-München
return 'I';
if ("NZ".equals(ucType)) // Schweden, Nacht
return 'I';
if ("INZ".equals(ucType)) // Nacht
return 'I';
if ("RHI".equals(ucType)) // ICE
return 'I';
if ("RHT".equals(ucType)) // TGV
return 'I';
if ("TGD".equals(ucType)) // TGV
return 'I';
if ("IRX".equals(ucType)) // IC
return 'I';
if ("ES".equals(ucType)) // Eurostar Italia
return 'I';
if ("EST".equals(ucType)) // Eurostar Frankreich
return 'I';
if ("EM".equals(ucType)) // Euromed, Barcelona-Alicante, Spanien
return 'I';
if ("AVE".equals(ucType)) // Alta Velocidad Española, Spanien
return 'I';
if ("ARC".equals(ucType)) // Arco (Renfe), Spanien
return 'I';
if ("ALS".equals(ucType)) // Alaris (Renfe), Spanien
return 'I';
if ("ATR".equals(ucType)) // Altaria (Renfe), Spanien
return 'R';
if ("TAL".equals(ucType)) // Talgo, Spanien
return 'I';
if ("X2".equals(ucType)) // X2000 Neigezug, Schweden
return 'I';
if ("FYR".equals(ucType)) // Fyra, Amsterdam-Schiphol-Rotterdam
return 'I';
if ("FLUG".equals(ucType))
return 'I';
// Regional
if ("ZUG".equals(ucType)) // Generic Train
return 'R';
if ("R".equals(ucType)) // Generic Regional Train
return 'R';
if ("DPN".equals(ucType)) // Dritter Personen Nahverkehr
return 'R';
if ("RB".equals(ucType)) // RegionalBahn
return 'R';
if ("RE".equals(ucType)) // RegionalExpress
return 'R';
if ("IR".equals(ucType)) // Interregio
return 'R';
if ("IRE".equals(ucType)) // Interregio Express
return 'R';
if ("HEX".equals(ucType)) // Harz-Berlin-Express, Veolia
return 'R';
if ("WFB".equals(ucType)) // Westfalenbahn
return 'R';
if ("RT".equals(ucType)) // RegioTram
return 'R';
if ("REX".equals(ucType)) // RegionalExpress, Österreich
return 'R';
if ("OS".equals(ucType)) // Osobný vlak, Slovakia oder Osobní vlak, Czech Republic
return 'R';
if ("SP".equals(ucType)) // Spěšný vlak, Czech Republic
return 'R';
if ("EZ".equals(ucType)) // ÖBB ErlebnisBahn
return 'R';
if ("ARZ".equals(ucType)) // Auto-Reisezug Brig - Iselle di Trasquera
return 'R';
if ("OE".equals(ucType)) // Ostdeutsche Eisenbahn
return 'R';
if ("MR".equals(ucType)) // Märkische Regionalbahn
return 'R';
if ("PE".equals(ucType)) // Prignitzer Eisenbahn GmbH
return 'R';
if ("NE".equals(ucType)) // NEB Betriebsgesellschaft mbH
return 'R';
if ("MRB".equals(ucType)) // Mitteldeutsche Regiobahn
return 'R';
if ("ATZ".equals(ucType)) // Autotunnelzug
return 'R';
if ("CAT".equals(ucType)) // City Airport Train
return 'R';
if ("EXT".equals(ucType)) // Extrazug
return 'R';
if ("KD".equals(ucType)) // Koleje Dolnośląskie (Niederschlesische Eisenbahn)
return 'R';
// if ("E".equals(normalizedType)) // Eilzug, stimmt wahrscheinlich nicht
// return "R" + normalizedName;
// Suburban Trains
if (P_LINE_S.matcher(ucType).matches()) // Generic (Night) S-Bahn
return 'S';
// if ("SPR".equals(normalizedType)) // Sprinter, Niederlande
// return "S" + normalizedName;
// Subway
if ("U".equals(ucType)) // Generic U-Bahn
return 'U';
if ("MET".equals(ucType))
return 'U';
// if ("M".equals(normalizedType)) // Metro
// return "U" + normalizedName;
// if ("Métro".equals(normalizedType))
// return "U" + normalizedName;
// Tram
if ("STR".equals(ucType)) // Generic Tram
return 'T';
if ("TRAM".equals(ucType))
return 'T';
if ("TRA".equals(ucType))
return 'T';
// if ("T".equals(normalizedType)) // Tram
// return "T" + normalizedName;
// if ("Tramway".equals(normalizedType))
// return "T" + normalizedName;
// Bus
if ("BUS".equals(ucType)) // Generic Bus
return 'B';
if ("NFB".equals(ucType)) // Niederflur-Bus
return 'B';
if ("SEV".equals(ucType)) // Schienen-Ersatz-Verkehr
return 'B';
if ("BUSSEV".equals(ucType)) // Schienen-Ersatz-Verkehr
return 'B';
if ("BSV".equals(ucType)) // Bus SEV
return 'B';
if ("FB".equals(ucType)) // Fernbus? Luxemburg-Saarbrücken
return 'B';
if ("TRO".equals(ucType)) // Trolleybus
return 'B';
if ("AST".equals(ucType)) // Anruf-Sammel-Taxi
return 'B';
if ("RUF".equals(ucType)) // Rufbus
return 'B';
if ("RFT".equals(ucType)) // Ruftaxi
return 'B';
// if ("N".equals(normalizedType)) // Nachtbus
// return "B" + normalizedName;
// if ("Taxi".equals(normalizedType)) // Taxi
// return "B" + normalizedName;
// if ("TX".equals(normalizedType)) // Taxi
// return "B" + normalizedName;
// Ferry
if ("SCHIFF".equals(ucType))
return 'F';
if ("FÄHRE".equals(ucType))
return 'F';
if ("SCH".equals(ucType)) // Schiff
return 'F';
if ("AS".equals(ucType)) // SyltShuttle, eigentlich Autoreisezug
return 'F';
if ("KAT".equals(ucType)) // Katamaran, e.g. Friedrichshafen - Konstanz
return 'F';
if ("BAT".equals(ucType)) // Boots Anlege Terminal?
return 'F';
// Cable Car
if ("SB".equals(ucType)) // Seilbahn
return 'C';
if ("ZAHNR".equals(ucType)) // Zahnradbahn, u.a. Zugspitzbahn
return 'C';
if ("GB".equals(ucType)) // Gondelbahn
return 'C';
if ("LB".equals(ucType)) // Luftseilbahn
return 'C';
if ("FUN".equals(ucType)) // Funiculaire (Standseilbahn)
return 'C';
// if ("L".equals(normalizedType))
// return "?" + normalizedName;
// if ("P".equals(normalizedType))
// return "?" + normalizedName;
// if ("CR".equals(normalizedType))
// return "?" + normalizedName;
// if ("TRN".equals(normalizedType))
// return "?" + normalizedName;
return 0;
}
protected static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zßÄÅäáàâåéèêíìîÖöóòôÜüúùûØ/-]+)[\\s-]*(.*)"); protected static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zßÄÅäáàâåéèêíìîÖöóòôÜüúùûØ/-]+)[\\s-]*(.*)");
protected String normalizeLine(final String type, final String line) protected String normalizeLine(final String type, final String line)
@ -1123,151 +1340,6 @@ public abstract class AbstractHafasProvider implements NetworkProvider
throw new IllegalStateException("cannot normalize type '" + type + "' line '" + line + "'"); throw new IllegalStateException("cannot normalize type '" + type + "' line '" + line + "'");
} }
protected abstract char normalizeType(String type);
protected final char normalizeCommonTypes(final String ucType)
{
// Intercity
if (ucType.equals("EC")) // EuroCity
return 'I';
if (ucType.equals("EN")) // EuroNight
return 'I';
if (ucType.equals("EIC")) // Ekspres InterCity, Polen
return 'I';
if (ucType.equals("ICE")) // InterCityExpress
return 'I';
if (ucType.equals("IC")) // InterCity
return 'I';
if (ucType.equals("ICT")) // InterCity
return 'I';
if ("ICN".equals(ucType)) // Intercity-Neigezug, Schweiz
return 'I';
if (ucType.equals("CNL")) // CityNightLine
return 'I';
if (ucType.equals("OEC")) // ÖBB-EuroCity
return 'I';
if (ucType.equals("OIC")) // ÖBB-InterCity
return 'I';
if (ucType.equals("RJ")) // RailJet, Österreichische Bundesbahnen
return 'I';
if (ucType.equals("THA")) // Thalys
return 'I';
if (ucType.equals("TGV")) // Train à Grande Vitesse
return 'I';
if (ucType.equals("DNZ")) // Nachtzug Basel-Moskau
return 'I';
if (ucType.equals("AIR")) // Generic Flight
return 'I';
if (ucType.equals("ECB")) // EC, Verona-München
return 'I';
if (ucType.equals("INZ")) // Nacht
return 'I';
if (ucType.equals("RHI")) // ICE
return 'I';
if (ucType.equals("RHT")) // TGV
return 'I';
if (ucType.equals("TGD")) // TGV
return 'I';
if (ucType.equals("IRX")) // IC
return 'I';
if ("FLUG".equals(ucType))
return 'I';
// Regional
if (ucType.equals("ZUG")) // Generic Train
return 'R';
if (ucType.equals("R")) // Generic Regional Train
return 'R';
if (ucType.equals("DPN")) // Dritter Personen Nahverkehr
return 'R';
if (ucType.equals("RB")) // RegionalBahn
return 'R';
if (ucType.equals("RE")) // RegionalExpress
return 'R';
if (ucType.equals("IR")) // Interregio
return 'R';
if (ucType.equals("IRE")) // Interregio Express
return 'R';
if (ucType.equals("HEX")) // Harz-Berlin-Express, Veolia
return 'R';
if (ucType.equals("WFB")) // Westfalenbahn
return 'R';
if (ucType.equals("RT")) // RegioTram
return 'R';
if (ucType.equals("REX")) // RegionalExpress, Österreich
return 'R';
if (ucType.equals("OS")) // Osobný vlak, Slovakia oder Osobní vlak, Czech Republic
return 'R';
if (ucType.equals("SP")) // Spěšný vlak, Czech Republic
return 'R';
if ("EZ".equals(ucType)) // ÖBB ErlebnisBahn
return 'R';
if ("ARZ".equals(ucType)) // Auto-Reisezug Brig - Iselle di Trasquera
return 'R';
if ("OE".equals(ucType)) // Ostdeutsche Eisenbahn
return 'R';
if ("MR".equals(ucType)) // Märkische Regionalbahn
return 'R';
if ("PE".equals(ucType)) // Prignitzer Eisenbahn GmbH
return 'R';
if ("NE".equals(ucType)) // NEB Betriebsgesellschaft mbH
return 'R';
// Suburban Trains
if (ucType.equals("S")) // Generic S-Bahn
return 'S';
// Subway
if (ucType.equals("U")) // Generic U-Bahn
return 'U';
// Tram
if (ucType.equals("STR")) // Generic Tram
return 'T';
if ("TRAM".equals(ucType))
return 'T';
if ("TRA".equals(ucType))
return 'T';
// Bus
if (ucType.equals("BUS")) // Generic Bus
return 'B';
if (ucType.equals("AST")) // Anruf-Sammel-Taxi
return 'B';
if (ucType.equals("RUF")) // Rufbus
return 'B';
if ("RFT".equals(ucType)) // Ruftaxi
return 'B';
if (ucType.equals("SEV")) // Schienen-Ersatz-Verkehr
return 'B';
if (ucType.equals("BUSSEV")) // Schienen-Ersatz-Verkehr
return 'B';
if (ucType.equals("BSV")) // Bus SEV
return 'B';
if (ucType.equals("FB")) // Luxemburg-Saarbrücken
return 'B';
// Ferry
if ("SCHIFF".equals(ucType))
return 'F';
if ("FÄHRE".equals(ucType))
return 'F';
if (ucType.equals("SCH")) // Schiff
return 'F';
if (ucType.equals("AS")) // SyltShuttle, eigentlich Autoreisezug
return 'F';
if ("KAT".equals(ucType)) // Katamaran
return 'F';
// Cable Car
if ("SB".equals(ucType)) // Seilbahn
return 'C';
if ("ZAHNR".equals(ucType)) // Zahnradbahn, u.a. Zugspitzbahn
return 'C';
return 0;
}
protected String normalizeLine(final String line) protected String normalizeLine(final String line)
{ {
if (line == null || line.length() == 0) if (line == null || line.length() == 0)
@ -1289,140 +1361,6 @@ public abstract class AbstractHafasProvider implements NetworkProvider
throw new IllegalStateException("cannot normalize line " + line); throw new IllegalStateException("cannot normalize line " + line);
} }
private static final Pattern P_LINE_S = Pattern.compile("S\\d+");
private static final Pattern P_LINE_SN = Pattern.compile("SN\\d*");
private final String _normalizeLine(final String type, final String name)
{
final String normalizedType = type.split(" ", 2)[0];
final String normalizedName = normalizeWhitespace(name);
if ("EN".equals(normalizedType)) // EuroNight
return "I" + normalizedName;
if ("EC".equals(normalizedType)) // EuroCity
return "I" + normalizedName;
if ("ICE".equals(normalizedType)) // InterCityExpress
return "I" + normalizedName;
if ("IC".equals(normalizedType)) // InterCity
return "I" + normalizedName;
if ("ICN".equals(normalizedType)) // IC-Neigezug
return "I" + normalizedName;
if ("CNL".equals(normalizedType)) // CityNightLine
return "I" + normalizedName;
if ("OEC".equals(normalizedType)) // ÖBB EuroCity
return "I" + normalizedName;
if ("OIC".equals(normalizedType)) // ÖBB InterCity
return "I" + normalizedName;
if ("TGV".equals(normalizedType)) // Train à grande vit.
return "I" + normalizedName;
if ("THA".equals(normalizedType)) // Thalys
return "I" + normalizedName;
if ("THALYS".equals(normalizedType)) // THALYS
return "I" + normalizedName;
if ("ES".equals(normalizedType)) // Eurostar Italia
return "I" + normalizedName;
if ("EST".equals(normalizedType)) // Eurostar
return "I" + normalizedName;
if ("X2".equals(normalizedType)) // X2000 Neigezug, Schweden
return "I" + normalizedName;
if ("RJ".equals(normalizedType)) // Railjet
return "I" + normalizedName;
if ("AVE".equals(normalizedType)) // Alta Velocidad ES
return "I" + normalizedName;
if ("ARC".equals(normalizedType)) // Arco, Spanien
return "I" + normalizedName;
if ("ALS".equals(normalizedType)) // Alaris, Spanien
return "I" + normalizedName;
if ("TAL".equals(normalizedType)) // Talgo, Spanien
return "I" + normalizedName;
if ("NZ".equals(normalizedType)) // Nacht-Zug
return "I" + normalizedName;
if ("FYR".equals(normalizedType)) // Fyra, Amsterdam-Schiphol-Rotterdam
return "I" + normalizedName;
if ("R".equals(normalizedType)) // Regio
return "R" + normalizedName;
if ("D".equals(normalizedType)) // Schnellzug
return "R" + normalizedName;
if ("E".equals(normalizedType)) // Eilzug
return "R" + normalizedName;
if ("RE".equals(normalizedType)) // RegioExpress
return "R" + normalizedName;
if ("IR".equals(normalizedType)) // InterRegio
return "R" + normalizedName;
if ("IRE".equals(normalizedType)) // InterRegioExpress
return "R" + normalizedName;
if ("ATZ".equals(normalizedType)) // Autotunnelzug
return "R" + normalizedName;
if ("EXT".equals(normalizedType)) // Extrazug
return "R" + normalizedName;
if ("CAT".equals(normalizedType)) // City Airport Train
return "R" + normalizedName;
if ("S".equals(normalizedType)) // S-Bahn
return "S" + normalizedName;
if (P_LINE_S.matcher(normalizedType).matches()) // diverse S-Bahnen
return "S" + normalizedType;
if (P_LINE_SN.matcher(normalizedType).matches()) // Nacht-S-Bahn
return "S" + normalizedType;
if ("SPR".equals(normalizedType)) // Sprinter, Niederlande
return "S" + normalizedName;
if ("Met".equals(normalizedType)) // Metro
return "U" + normalizedName;
if ("M".equals(normalizedType)) // Metro
return "U" + normalizedName;
if ("Métro".equals(normalizedType))
return "U" + normalizedName;
if ("Tram".equals(normalizedType)) // Tram
return "T" + normalizedName;
if ("TRAM".equals(normalizedType)) // Tram
return "T" + normalizedName;
if ("T".equals(normalizedType)) // Tram
return "T" + normalizedName;
if ("Tramway".equals(normalizedType))
return "T" + normalizedName;
if ("BUS".equals(normalizedType)) // Bus
return "B" + normalizedName;
if ("Bus".equals(normalizedType)) // Niederflurbus
return "B" + normalizedName;
if ("NFB".equals(normalizedType)) // Niederflur-Bus
return "B" + normalizedName;
if ("N".equals(normalizedType)) // Nachtbus
return "B" + normalizedName;
if ("Tro".equals(normalizedType)) // Trolleybus
return "B" + normalizedName;
if ("Taxi".equals(normalizedType)) // Taxi
return "B" + normalizedName;
if ("TX".equals(normalizedType)) // Taxi
return "B" + normalizedName;
if ("BAT".equals(normalizedType)) // Schiff
return "F" + normalizedName;
if ("GB".equals(normalizedType)) // Gondelbahn
return "C" + normalizedName;
if ("LB".equals(normalizedType)) // Luftseilbahn
return "C" + normalizedName;
if ("FUN".equals(normalizedType)) // Standseilbahn
return "C" + normalizedName;
if ("Fun".equals(normalizedType)) // Funiculaire
return "C" + normalizedName;
if ("L".equals(normalizedType))
return "?" + normalizedName;
if ("P".equals(normalizedType))
return "?" + normalizedName;
if ("CR".equals(normalizedType))
return "?" + normalizedName;
if ("TRN".equals(normalizedType))
return "?" + normalizedName;
throw new IllegalStateException("cannot normalize type '" + normalizedType + "' (" + type + ") name '" + normalizedName + "'");
}
private static final Pattern P_CONNECTION_ID = Pattern.compile("co=(C\\d+-\\d+)&"); private static final Pattern P_CONNECTION_ID = Pattern.compile("co=(C\\d+-\\d+)&");
protected static String extractConnectionId(final String link) protected static String extractConnectionId(final String link)

View file

@ -140,9 +140,6 @@ public class DsbProvider extends AbstractHafasProvider
if ("S-TOG".equals(ucType)) if ("S-TOG".equals(ucType))
return 'S'; return 'S';
if ("MET".equals(ucType))
return 'U';
if ("BYBUS".equals(ucType)) if ("BYBUS".equals(ucType))
return 'B'; return 'B';
if ("X-BUS".equals(ucType)) if ("X-BUS".equals(ucType))
@ -160,7 +157,7 @@ public class DsbProvider extends AbstractHafasProvider
if ("FÆRGE".equals(ucType)) if ("FÆRGE".equals(ucType))
return 'F'; return 'F';
final char t = normalizeCommonTypes(ucType); final char t = super.normalizeType(type);
if (t != 0) if (t != 0)
return t; return t;

View file

@ -107,7 +107,7 @@ public class LuProvider extends AbstractHafasProvider
if ("CRE".equals(ucType)) if ("CRE".equals(ucType))
return 'R'; return 'R';
final char t = normalizeCommonTypes(ucType); final char t = super.normalizeType(type);
if (t != 0) if (t != 0)
return t; return t;

View file

@ -247,12 +247,6 @@ public class NasaProvider extends AbstractHafasProvider
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
if (ucType.equals("D")) // Rußland Schlafwagenzug
return 'I';
if (ucType.equals("ECW")) if (ucType.equals("ECW"))
return 'I'; return 'I';
@ -278,6 +272,10 @@ public class NasaProvider extends AbstractHafasProvider
if (ucType.equals("RBS")) // Rufbus if (ucType.equals("RBS")) // Rufbus
return 'B'; return 'B';
final char t = super.normalizeType(type);
if (t != 0)
return t;
if (ucType.equals("EB")) // Europa-Park, vermutlich "Erlebnisbahn" if (ucType.equals("EB")) // Europa-Park, vermutlich "Erlebnisbahn"
return '?'; return '?';

View file

@ -199,12 +199,6 @@ public class NsProvider extends AbstractHafasProvider
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
if (ucType.equals("EST")) // Eurostar Frankreich
return 'I';
if (ucType.equals("INT")) // Zürich-Brüssel if (ucType.equals("INT")) // Zürich-Brüssel
return 'I'; return 'I';
@ -222,6 +216,10 @@ public class NsProvider extends AbstractHafasProvider
if (ucType.equals("MÉT")) if (ucType.equals("MÉT"))
return 'U'; return 'U';
final char t = super.normalizeType(type);
if (t != 0)
return t;
return 0; return 0;
} }
} }

View file

@ -606,16 +606,10 @@ public class OebbProvider extends AbstractHafasProvider
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
// if (ucType.equals("X")) // Interconnex, Connections only? // if (ucType.equals("X")) // Interconnex, Connections only?
// return 'I'; // return 'I';
if (ucType.equals("INT")) // Rußland, Connections only? if (ucType.equals("INT")) // Rußland, Connections only?
return 'I'; return 'I';
if (ucType.equals("D")) // Rußland
return 'I';
if (ucType.equals("RR")) // Finnland, Connections only? if (ucType.equals("RR")) // Finnland, Connections only?
return 'I'; return 'I';
if (ucType.equals("TLK")) // Tanie Linie Kolejowe, Polen if (ucType.equals("TLK")) // Tanie Linie Kolejowe, Polen
@ -624,30 +618,16 @@ public class OebbProvider extends AbstractHafasProvider
return 'I'; return 'I';
if (ucType.equals("SC")) // SuperCity, Tschechien if (ucType.equals("SC")) // SuperCity, Tschechien
return 'I'; return 'I';
if (ucType.equals("EST")) // Eurostar Frankreich
return 'I';
if (ucType.equals("ALS")) // Spanien
return 'I';
if (ucType.equals("ARC")) // Spanien
return 'I';
if (ucType.equals("TLG")) // Spanien, Madrid if (ucType.equals("TLG")) // Spanien, Madrid
return 'I'; return 'I';
if (ucType.equals("HOT")) // Spanien, Nacht if (ucType.equals("HOT")) // Spanien, Nacht
return 'I'; return 'I';
if (ucType.equals("AVE")) // Alta Velocidad Española, Spanien
return 'I';
if (ucType.equals("NZ")) // Schweden, Nacht, via JSON API
return 'I';
if (ucType.equals("OZ")) // Schweden, Oeresundzug, Connections only? if (ucType.equals("OZ")) // Schweden, Oeresundzug, Connections only?
return 'I'; return 'I';
if (ucType.equals("X2")) // Schweden, Connections only?
return 'I';
if (ucType.equals("X")) // Schweden, via JSON API if (ucType.equals("X")) // Schweden, via JSON API
return 'I'; return 'I';
if (ucType.equals("LYN")) // Dänemark if (ucType.equals("LYN")) // Dänemark
return 'I'; return 'I';
if (ucType.equals("ES")) // Eurostar Italia
return 'I';
if (ucType.equals("UUU")) // Italien, Nacht, Connections only? if (ucType.equals("UUU")) // Italien, Nacht, Connections only?
return 'I'; return 'I';
@ -683,8 +663,6 @@ public class OebbProvider extends AbstractHafasProvider
return 'R'; return 'R';
if (ucType.equals("ZR")) // Bratislava, Slovakai if (ucType.equals("ZR")) // Bratislava, Slovakai
return 'R'; return 'R';
if (ucType.equals("CAT")) // Stockholm-Arlanda, Arlanda Express
return 'R';
if (ucType.equals("N")) // Frankreich, Tours if (ucType.equals("N")) // Frankreich, Tours
return 'R'; return 'R';
if (ucType.equals("DPF")) // VX=Vogtland Express, Connections only? if (ucType.equals("DPF")) // VX=Vogtland Express, Connections only?
@ -725,8 +703,6 @@ public class OebbProvider extends AbstractHafasProvider
return 'R'; return 'R';
if (ucType.equals("NOB")) // Nord-Ostsee-Bahn, via JSON API if (ucType.equals("NOB")) // Nord-Ostsee-Bahn, via JSON API
return 'R'; return 'R';
if (ucType.equals("MRB")) // Mitteldeutsche Regiobahn, via JSON API
return 'R';
if (ucType.equals("ARR")) // Ostfriesland, via JSON API if (ucType.equals("ARR")) // Ostfriesland, via JSON API
return 'R'; return 'R';
if (ucType.equals("SHB")) // Schleswig-Holstein-Bahn, via JSON API if (ucType.equals("SHB")) // Schleswig-Holstein-Bahn, via JSON API
@ -847,6 +823,10 @@ public class OebbProvider extends AbstractHafasProvider
if (ucType.equals("HBB")) // Innsbruck Hungerburgbahn, via JSON API if (ucType.equals("HBB")) // Innsbruck Hungerburgbahn, via JSON API
return 'C'; return 'C';
final char t = super.normalizeType(type);
if (t != 0)
return t;
if (ucType.equals("U70")) // U.K., Connections only? if (ucType.equals("U70")) // U.K., Connections only?
return '?'; return '?';
if (ucType.equals("R84")) // U.K., Connections only? if (ucType.equals("R84")) // U.K., Connections only?

View file

@ -103,6 +103,10 @@ public class PlProvider extends AbstractHafasProvider
@Override @Override
protected String normalizeLine(String line) protected String normalizeLine(String line)
{ {
// replace badly encoded character (stations 8530643 and 8530644)
if (line.equals("F\u0084hre"))
line = "Fähre";
final Matcher mRussia = P_NORMALIZE_LINE_RUSSIA.matcher(line); final Matcher mRussia = P_NORMALIZE_LINE_RUSSIA.matcher(line);
if (mRussia.matches()) if (mRussia.matches())
return 'R' + mRussia.group(1); return 'R' + mRussia.group(1);
@ -122,45 +126,23 @@ public class PlProvider extends AbstractHafasProvider
return 'I'; return 'I';
if ("X".equals(ucType)) // Schweden if ("X".equals(ucType)) // Schweden
return 'I'; return 'I';
if ("NZ".equals(ucType)) // Schweden, Nacht
return 'I';
if ("LYN".equals(ucType)) // Dänemark if ("LYN".equals(ucType)) // Dänemark
return 'I'; return 'I';
if ("HOT".equals(ucType)) // Spanien, Nacht if ("HOT".equals(ucType)) // Spanien, Nacht
return 'I'; return 'I';
if ("AVE".equals(ucType)) // Alta Velocidad Española, Spanien
return 'I';
if ("TLG".equals(ucType)) // Spanien, Madrid if ("TLG".equals(ucType)) // Spanien, Madrid
return 'I'; return 'I';
if ("ALS".equals(ucType)) // Spanien
return 'I';
if ("ARC".equals(ucType)) // Spanien
return 'I';
if ("EM".equals(ucType)) // EuroMed, Barcelona-Alicante, Spanien
return 'I';
if ("ES".equals(ucType)) // Eurostar Italia
return 'I';
if ("SC".equals(ucType)) // SuperCity, Tschechien if ("SC".equals(ucType)) // SuperCity, Tschechien
return 'I'; return 'I';
if ("EST".equals(ucType)) // Eurostar Frankreich
return 'I';
if ("FYR".equals(ucType)) // Fyra, Amsterdam-Schiphol-Rotterdam
return 'I';
if ("D".equals(ucType))
return 'R';
if ("KM".equals(ucType)) // Koleje Mazowieckie if ("KM".equals(ucType)) // Koleje Mazowieckie
return 'R'; return 'R';
if ("KD".equals(ucType)) // Koleje Dolnoslaskie
return 'R';
if ("AR".equals(ucType)) // Arriva Polaczen if ("AR".equals(ucType)) // Arriva Polaczen
return 'R'; return 'R';
if ("NEB".equals(ucType)) // Niederbarnimer Eisenbahn if ("NEB".equals(ucType)) // Niederbarnimer Eisenbahn
return 'R'; return 'R';
if ("NWB".equals(ucType)) // NordWestBahn if ("NWB".equals(ucType)) // NordWestBahn
return 'R'; return 'R';
if ("MRB".equals(ucType)) // Mitteldeutsche Regiobahn
return 'R';
if ("HZL".equals(ucType)) // Hohenzollerische Landesbahn if ("HZL".equals(ucType)) // Hohenzollerische Landesbahn
return 'R'; return 'R';
if ("PEG".equals(ucType)) // Prignitzer Eisenbahn if ("PEG".equals(ucType)) // Prignitzer Eisenbahn
@ -265,14 +247,10 @@ public class PlProvider extends AbstractHafasProvider
return 'R'; return 'R';
if ("BE".equals(ucType)) // Grensland-Express if ("BE".equals(ucType)) // Grensland-Express
return 'R'; return 'R';
if ("CAT".equals(ucType)) // City Airport Train
return 'R';
if ("LEO".equals(ucType)) // Chiemgauer Lokalbahn if ("LEO".equals(ucType)) // Chiemgauer Lokalbahn
return 'R'; return 'R';
if ("MSB".equals(ucType)) // Mainschleifenbahn if ("MSB".equals(ucType)) // Mainschleifenbahn
return 'R'; return 'R';
if ("ATR".equals(ucType)) // Spanien
return 'R';
if ("N".equals(ucType)) // St. Pierre des Corps - Tours if ("N".equals(ucType)) // St. Pierre des Corps - Tours
return 'R'; return 'R';
// if ("INT".equals(ucType)) // Rußland // if ("INT".equals(ucType)) // Rußland
@ -297,7 +275,7 @@ public class PlProvider extends AbstractHafasProvider
if ("BUSMKK".equals(ucType)) // Main-Kinz-Kreis if ("BUSMKK".equals(ucType)) // Main-Kinz-Kreis
return 'B'; return 'B';
final char t = normalizeCommonTypes(ucType); final char t = super.normalizeType(type);
if (t != 0) if (t != 0)
return t; return t;

View file

@ -230,7 +230,6 @@ public class SbbProvider extends AbstractHafasProvider
} }
} }
private static final Pattern P_NORMALIZE_TYPE_SBAHN = Pattern.compile("SN?\\d*");
private static final Pattern P_NORMALIZE_TYPE_BUS = Pattern.compile("BUS\\w*"); private static final Pattern P_NORMALIZE_TYPE_BUS = Pattern.compile("BUS\\w*");
@Override @Override
@ -238,55 +237,15 @@ public class SbbProvider extends AbstractHafasProvider
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
if (ucType.equals("X")) // InterConnex if (ucType.equals("X")) // InterConnex
return 'I'; return 'I';
if (ucType.equals("ES")) // Eurostar Italia
return 'I';
if (ucType.equals("EST")) // Eurostar Frankreich
return 'I';
if (ucType.equals("NZ")) // Nachtzug?
return 'I';
if (ucType.equals("IN")) // Oslo if (ucType.equals("IN")) // Oslo
return 'I'; return 'I';
if (ucType.equals("AVE")) // Alta Velocidad Española, Spanien
return 'I';
if (ucType.equals("TAL")) // Talgo, Spanien
return 'I';
if (ucType.equals("EM")) // EuroMed, Barcelona-Alicante, Spanien
return 'I';
if (ucType.equals("FYR")) // Fyra, Amsterdam-Schiphol-Rotterdam
return 'I';
if (ucType.equals("D"))
return 'R';
if (ucType.equals("E")) if (ucType.equals("E"))
return 'R'; return 'R';
if (ucType.equals("EXT"))
return 'R';
if (ucType.equals("ATZ"))
return 'R';
if (ucType.equals("RSB")) if (ucType.equals("RSB"))
return 'R'; return 'R';
if (ucType.equals("SN"))
return 'R';
if (ucType.equals("CAT")) // City Airport Train Wien
return 'R';
if (ucType.equals("ALS")) // Spanien
return 'R';
if (ucType.equals("ARC")) // Spanien
return 'R';
if (ucType.equals("ATR")) // Spanien
return 'R';
if (P_NORMALIZE_TYPE_SBAHN.matcher(ucType).matches())
return 'S';
if (ucType.equals("MET")) // Lausanne
return 'U';
if (ucType.equals("M")) // Lausanne if (ucType.equals("M")) // Lausanne
return 'T'; return 'T';
@ -295,12 +254,8 @@ public class SbbProvider extends AbstractHafasProvider
if (ucType.equals("NTR")) if (ucType.equals("NTR"))
return 'T'; return 'T';
if (ucType.equals("TRO"))
return 'B';
if (ucType.equals("NTO")) // Niederflurtrolleybus zwischen Bern, Bahnhofsplatz und Bern, Wankdorf Bahnhof if (ucType.equals("NTO")) // Niederflurtrolleybus zwischen Bern, Bahnhofsplatz und Bern, Wankdorf Bahnhof
return 'B'; return 'B';
if (ucType.equals("NFB"))
return 'B';
if (ucType.equals("NBU")) if (ucType.equals("NBU"))
return 'B'; return 'B';
if (ucType.equals("MIN")) if (ucType.equals("MIN"))
@ -318,27 +273,21 @@ public class SbbProvider extends AbstractHafasProvider
if (P_NORMALIZE_TYPE_BUS.matcher(ucType).matches()) if (P_NORMALIZE_TYPE_BUS.matcher(ucType).matches())
return 'B'; return 'B';
if (ucType.equals("BAT"))
return 'F';
if (ucType.equals("BAV")) if (ucType.equals("BAV"))
return 'F'; return 'F';
if (ucType.equals("FAE")) if (ucType.equals("FAE"))
return 'F'; return 'F';
if (ucType.equals("KAT")) // z.B. Friedrichshafen <-> Konstanz
return 'F';
if (ucType.equals("GB")) // Gondelbahn
return 'C';
if (ucType.equals("SL")) // Sessel-Lift if (ucType.equals("SL")) // Sessel-Lift
return 'C'; return 'C';
if (ucType.equals("LB"))
return 'C';
if (ucType.equals("FUN")) // Standseilbahn
return 'C';
if (ucType.equals("P")) if (ucType.equals("P"))
return '?'; return '?';
final char t = super.normalizeType(type);
if (t != 0)
return t;
return 0; return 0;
} }
} }

View file

@ -114,7 +114,7 @@ public class ShProvider extends AbstractHafasProvider
if ("NBE".equals(ucType)) // Nordbahn Eisenbahngesellschaft if ("NBE".equals(ucType)) // Nordbahn Eisenbahngesellschaft
return 'R'; return 'R';
final char t = normalizeCommonTypes(ucType); final char t = super.normalizeType(type);
if (t != 0) if (t != 0)
return t; return t;

View file

@ -206,12 +206,6 @@ public class SncbProvider extends AbstractHafasProvider
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
if (ucType.equals("EST")) // Eurostar Frankreich
return 'I';
if (ucType.equals("INT")) // Zürich-Brüssel if (ucType.equals("INT")) // Zürich-Brüssel
return 'I'; return 'I';
@ -229,6 +223,10 @@ public class SncbProvider extends AbstractHafasProvider
if (ucType.equals("MÉT")) if (ucType.equals("MÉT"))
return 'U'; return 'U';
final char t = super.normalizeType(type);
if (t != 0)
return t;
return 0; return 0;
} }
} }

View file

@ -139,21 +139,6 @@ public class VbbProvider extends AbstractHafasProvider
throw new IllegalStateException("cannot normalize line " + line); throw new IllegalStateException("cannot normalize line " + line);
} }
@Override
protected char normalizeType(final String type)
{
final String ucType = type.toUpperCase();
if ("D".equals(ucType)) // DB Regio AG, e.g. Berlin - Prag
return 'I';
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
return 0;
}
public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException
{ {
final StringBuilder uri = new StringBuilder(); final StringBuilder uri = new StringBuilder();

View file

@ -260,14 +260,10 @@ public class VgsProvider extends AbstractHafasProvider
} }
@Override @Override
protected char normalizeType(String type) protected char normalizeType(final String type)
{ {
final String ucType = type.toUpperCase(); final String ucType = type.toUpperCase();
final char t = normalizeCommonTypes(ucType);
if (t != 0)
return t;
if (ucType.equals("INT")) // Zürich-Brüssel if (ucType.equals("INT")) // Zürich-Brüssel
return 'I'; return 'I';
@ -284,6 +280,10 @@ public class VgsProvider extends AbstractHafasProvider
if (ucType.equals("T84")) // U.K. if (ucType.equals("T84")) // U.K.
return '?'; return '?';
final char t = super.normalizeType(type);
if (t != 0)
return t;
return 0; return 0;
} }
} }

View file

@ -127,8 +127,6 @@ public class ZvvProvider extends AbstractHafasProvider
throw new IllegalStateException("cannot normalize line " + line); throw new IllegalStateException("cannot normalize line " + line);
} }
private static final Pattern P_NORMALIZE_LINE_S = Pattern.compile("SN?\\d+");
@Override @Override
protected char normalizeType(final String type) protected char normalizeType(final String type)
{ {
@ -137,17 +135,8 @@ public class ZvvProvider extends AbstractHafasProvider
// E-Bus: Bus, Tram oder Zug? // E-Bus: Bus, Tram oder Zug?
// TX: Ruftaxi? // TX: Ruftaxi?
if ("D".equals(ucType))
return 'R';
if ("EXT".equals(ucType))
return 'R';
if ("ATZ".equals(ucType)) // Autotunnelzug
return 'R';
if ("S-BAHN".equals(ucType)) if ("S-BAHN".equals(ucType))
return 'S'; return 'S';
if (P_NORMALIZE_LINE_S.matcher(type).matches())
return 'S';
if ("T".equals(ucType)) if ("T".equals(ucType))
return 'T'; return 'T';
@ -158,8 +147,6 @@ public class ZvvProvider extends AbstractHafasProvider
if ("BUS-NF".equals(ucType)) // Niederflur if ("BUS-NF".equals(ucType)) // Niederflur
return 'B'; return 'B';
if ("TRO".equals(ucType))
return 'B';
if ("D-SCHIFF".equals(ucType)) if ("D-SCHIFF".equals(ucType))
return 'F'; return 'F';
@ -170,19 +157,13 @@ public class ZvvProvider extends AbstractHafasProvider
return 'C'; return 'C';
if ("SEILBAHN".equals(ucType)) if ("SEILBAHN".equals(ucType))
return 'C'; return 'C';
if ("FUN".equals(ucType)) // Standseilbahn
return 'C';
if ("GB".equals(ucType)) // Gondelbahn
return 'C';
if ("LB".equals(ucType)) // Luftseilbahn
return 'C';
if ("SL".equals(ucType)) // Sessel-Lift if ("SL".equals(ucType)) // Sessel-Lift
return 'C'; return 'C';
if ("UNB".equals(ucType)) if ("UNB".equals(ucType))
return '?'; return '?';
final char t = normalizeCommonTypes(ucType); final char t = super.normalizeType(type);
if (t != 0) if (t != 0)
return t; return t;