From 57e0492936717b501c24fdb5e95393d78b1673f2 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Fri, 15 Mar 2013 15:51:06 +0100 Subject: [PATCH] in the case of an unknown product, at least add symbol or name --- .../schildbach/pte/AbstractEfaProvider.java | 78 ++++++++++--------- .../src/de/schildbach/pte/KvvProvider.java | 6 +- .../src/de/schildbach/pte/MvvProvider.java | 4 +- .../src/de/schildbach/pte/NaldoProvider.java | 6 -- enabler/src/de/schildbach/pte/SfProvider.java | 4 +- .../src/de/schildbach/pte/TflProvider.java | 56 ++++++------- 6 files changed, 75 insertions(+), 79 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java index 6b59fa05..2760ee5d 100644 --- a/enabler/src/de/schildbach/pte/AbstractEfaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractEfaProvider.java @@ -761,45 +761,45 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider private static final Pattern P_LINE_Y = Pattern.compile("\\d+Y"); private static final Pattern P_LINE_SEV = Pattern.compile("SEV.*"); - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) + protected String parseLine(final String mot, String symbol, final String name, final String longName, final String trainName) { if (mot == null) { - if (noTrainName != null) + if (trainName != null) { final String str = name != null ? name : ""; - if (noTrainName.equals("S-Bahn")) + if (trainName.equals("S-Bahn")) return 'S' + str; - if (noTrainName.equals("U-Bahn")) + if (trainName.equals("U-Bahn")) return 'U' + str; - if (noTrainName.equals("Straßenbahn")) + if (trainName.equals("Straßenbahn")) return 'T' + str; - if (noTrainName.equals("Badner Bahn")) + if (trainName.equals("Badner Bahn")) return 'T' + str; - if (noTrainName.equals("Stadtbus")) + if (trainName.equals("Stadtbus")) return 'B' + str; - if (noTrainName.equals("Citybus")) + if (trainName.equals("Citybus")) return 'B' + str; - if (noTrainName.equals("Regionalbus")) + if (trainName.equals("Regionalbus")) return 'B' + str; - if (noTrainName.equals("ÖBB-Postbus")) + if (trainName.equals("ÖBB-Postbus")) return 'B' + str; - if (noTrainName.equals("Autobus")) + if (trainName.equals("Autobus")) return 'B' + str; - if (noTrainName.equals("Discobus")) + if (trainName.equals("Discobus")) return 'B' + str; - if (noTrainName.equals("Nachtbus")) + if (trainName.equals("Nachtbus")) return 'B' + str; - if (noTrainName.equals("Anrufsammeltaxi")) + if (trainName.equals("Anrufsammeltaxi")) return 'B' + str; - if (noTrainName.equals("Ersatzverkehr")) + if (trainName.equals("Ersatzverkehr")) return 'B' + str; - if (noTrainName.equals("Vienna Airport Lines")) + if (trainName.equals("Vienna Airport Lines")) return 'B' + str; } - throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "' noTrainName '" - + noTrainName + "'"); + throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName + + "' trainName='" + trainName + "'"); } final int t = Integer.parseInt(mot); @@ -855,13 +855,13 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'I' + name; if ("ES".equals(type)) // Eurostar Italia return 'I' + name; - if ("Eurocity".equals(noTrainName)) // Liechtenstein + if ("Eurocity".equals(trainName)) // Liechtenstein return 'I' + name; - if ("EuroNight".equals(noTrainName)) // Liechtenstein + if ("EuroNight".equals(trainName)) // Liechtenstein return 'I' + name; - if ("railjet".equals(noTrainName)) // Liechtenstein + if ("railjet".equals(trainName)) // Liechtenstein return 'I' + name; - if ("ÖBB InterCity".equals(noTrainName)) // Liechtenstein + if ("ÖBB InterCity".equals(trainName)) // Liechtenstein return 'I' + name; if (type.equals("IR")) // Interregio @@ -1162,11 +1162,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'R' + name; if ("CAPITOL".equals(name)) // San Francisco return 'R' + name; - if ("Train".equals(noTrainName) || "Train".equals(type)) // San Francisco + if ("Train".equals(trainName) || "Train".equals(type)) // San Francisco return "R" + name; if ("Regional Train :".equals(longName)) return "R"; - if ("Regional Train".equals(noTrainName)) // Melbourne + if ("Regional Train".equals(trainName)) // Melbourne return "R" + name; if ("Regional".equals(type)) // Melbourne return "R" + name; @@ -1174,9 +1174,9 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'R' + name; if ("Chiemsee-Bahn".equals(type)) return 'R' + name; - if ("Regionalzug".equals(noTrainName)) // Liechtenstein + if ("Regionalzug".equals(trainName)) // Liechtenstein return 'R' + name; - if ("RegionalExpress".equals(noTrainName)) // Liechtenstein + if ("RegionalExpress".equals(trainName)) // Liechtenstein return 'R' + name; if ("Ostdeutsche".equals(type)) // Bayern return 'R' + type; @@ -1348,9 +1348,9 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'T' + name; if ("Cable".equals(type)) // San Francisco return 'T' + name; - if ("Muni Rail".equals(noTrainName)) // San Francisco + if ("Muni Rail".equals(trainName)) // San Francisco return 'T' + name; - if ("Cable Car".equals(noTrainName)) // San Francisco + if ("Cable Car".equals(trainName)) // San Francisco return 'T' + name; if ("BUS".equals(type) || "Bus".equals(type)) @@ -1361,7 +1361,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'B' + str; if ("Ersatzverkehr".equals(type)) // Rhein-Ruhr return 'B' + str; - if ("Bus replacement".equals(noTrainName)) // Transport Line + if ("Bus replacement".equals(trainName)) // Transport Line return 'B' + str; if ("HBL".equals(type)) // Hamburg Hafenfähre @@ -1373,14 +1373,14 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider if (type.length() == 0) return "?"; if (P_LINE_NUMBER.matcher(type).matches()) - return "?"; + return "?" + ParserUtils.firstNotEmpty(symbol, name); if (P_LINE_Y.matcher(name).matches()) - return "?" + name; + return "?" + ParserUtils.firstNotEmpty(symbol, name); if ("Sonderverkehr Red Bull".equals(name)) return "?" + name; - throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "' noTrainName '" - + noTrainName + "' type '" + type + "' str '" + str + "'"); + throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName + + "' trainName='" + trainName + "' type='" + type + "' str='" + str + "'"); } if (t == 1) @@ -1413,10 +1413,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider return 'F' + name; if (t == 11 || t == -1) - return '?' + name; + return '?' + ParserUtils.firstNotEmpty(symbol, name); - throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "' noTrainName '" + noTrainName - + "'"); + throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName + + "' trainName='" + trainName + "'"); } public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException @@ -1708,6 +1708,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider { XmlPullUtil.require(pp, "itdServingLine"); final String slMotType = pp.getAttributeValue(null, "motType"); + final String slSymbol = pp.getAttributeValue(null, "symbol"); final String slNumber = pp.getAttributeValue(null, "number"); final String slStateless = pp.getAttributeValue(null, "stateless"); final String slTrainType = pp.getAttributeValue(null, "trainType"); @@ -1752,7 +1753,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider final String trainName = ParserUtils.firstNotEmpty(slTrainName, itdTrainName, slTrainType, itdTrainType); - final String label = parseLine(slMotType, slNumber, slNumber, trainName); + final String label = parseLine(slMotType, slSymbol, slNumber, slNumber, trainName); + return new Line(slStateless, label, lineStyle(label), itdMessage); } @@ -2235,7 +2237,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider final String motTrainName = pp.getAttributeValue(null, "trainName"); final String motTrainType = pp.getAttributeValue(null, "trainType"); final String trainName = ParserUtils.firstNotEmpty(motTrainName, motTrainType); - lineLabel = parseLine(motType, motShortName, motName, trainName); + lineLabel = parseLine(motType, motSymbol, motShortName, motName, trainName); } XmlPullUtil.enter(pp, "itdMeansOfTransport"); XmlPullUtil.require(pp, "motDivaParams"); diff --git a/enabler/src/de/schildbach/pte/KvvProvider.java b/enabler/src/de/schildbach/pte/KvvProvider.java index 86128bf2..5ac4c1d0 100644 --- a/enabler/src/de/schildbach/pte/KvvProvider.java +++ b/enabler/src/de/schildbach/pte/KvvProvider.java @@ -62,13 +62,13 @@ public class KvvProvider extends AbstractEfaProvider private static final Pattern P_LINE = Pattern.compile("(.*?)\\s+\\([\\w/]+\\)", Pattern.CASE_INSENSITIVE); @Override - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) + protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainName) { final Matcher m = P_LINE.matcher(name); if (m.matches()) - return super.parseLine(mot, m.group(1), longName, noTrainName); + return super.parseLine(mot, symbol, m.group(1), longName, trainName); else - return super.parseLine(mot, name, longName, noTrainName); + return super.parseLine(mot, symbol, name, longName, trainName); // TODO check for " (Ersatzverkehr)" } diff --git a/enabler/src/de/schildbach/pte/MvvProvider.java b/enabler/src/de/schildbach/pte/MvvProvider.java index 0da559d5..ef77c4ca 100644 --- a/enabler/src/de/schildbach/pte/MvvProvider.java +++ b/enabler/src/de/schildbach/pte/MvvProvider.java @@ -56,7 +56,7 @@ public class MvvProvider extends AbstractEfaProvider } @Override - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) + protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainName) { if ("0".equals(mot) && longName.equals("Hamburg-Köln-Express")) return "I" + longName; @@ -73,7 +73,7 @@ public class MvvProvider extends AbstractEfaProvider return "R" + longName; else - return super.parseLine(mot, name, longName, noTrainName); + return super.parseLine(mot, symbol, name, longName, trainName); } private static final Map LINES = new HashMap(); diff --git a/enabler/src/de/schildbach/pte/NaldoProvider.java b/enabler/src/de/schildbach/pte/NaldoProvider.java index a4d08965..780cfc16 100644 --- a/enabler/src/de/schildbach/pte/NaldoProvider.java +++ b/enabler/src/de/schildbach/pte/NaldoProvider.java @@ -55,10 +55,4 @@ public class NaldoProvider extends AbstractEfaProvider { return xmlStopfinderRequest(new Location(LocationType.STATION, 0, null, constraint.toString())); } - - @Override - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) - { - return super.parseLine(mot, name, longName, noTrainName); - } } diff --git a/enabler/src/de/schildbach/pte/SfProvider.java b/enabler/src/de/schildbach/pte/SfProvider.java index 100ff57f..2d3cd61d 100644 --- a/enabler/src/de/schildbach/pte/SfProvider.java +++ b/enabler/src/de/schildbach/pte/SfProvider.java @@ -68,7 +68,7 @@ public class SfProvider extends AbstractEfaProvider } @Override - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) + protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainName) { if ("NORTHBOUND".equals(name)) return "?" + name; @@ -79,7 +79,7 @@ public class SfProvider extends AbstractEfaProvider else if ("WESTBOUND".equals(name)) return "?" + name; else - return super.parseLine(mot, name, longName, noTrainName); + return super.parseLine(mot, symbol, name, longName, trainName); } private static final Map LINES = new HashMap(); diff --git a/enabler/src/de/schildbach/pte/TflProvider.java b/enabler/src/de/schildbach/pte/TflProvider.java index 8a9f7eef..0e38b7ae 100644 --- a/enabler/src/de/schildbach/pte/TflProvider.java +++ b/enabler/src/de/schildbach/pte/TflProvider.java @@ -57,65 +57,65 @@ public class TflProvider extends AbstractEfaProvider } @Override - protected String parseLine(final String mot, final String name, final String longName, final String noTrainName) + protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainName) { - if ("0".equals(mot) && "First Hull Trains".equals(noTrainName)) + if ("0".equals(mot) && "First Hull Trains".equals(trainName)) return "I" + name; - else if ("0".equals(mot) && ("Southern".equals(noTrainName) || "=SN".equals(noTrainName))) + else if ("0".equals(mot) && ("Southern".equals(trainName) || "=SN".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("Southeastern".equals(noTrainName) || "=SE".equals(noTrainName))) + else if ("0".equals(mot) && ("Southeastern".equals(trainName) || "=SE".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("South West Trains".equals(noTrainName) || "=SW".equals(noTrainName))) + else if ("0".equals(mot) && ("South West Trains".equals(trainName) || "=SW".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("Greater Anglia".equals(noTrainName) || "=LE".equals(noTrainName))) + else if ("0".equals(mot) && ("Greater Anglia".equals(trainName) || "=LE".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("First Great Western".equals(noTrainName) || "=GW".equals(noTrainName))) + else if ("0".equals(mot) && ("First Great Western".equals(trainName) || "=GW".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("First Capital Connect".equals(noTrainName) || "=FC".equals(noTrainName))) + else if ("0".equals(mot) && ("First Capital Connect".equals(trainName) || "=FC".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("Northern Rail".equals(noTrainName) || "=NT".equals(noTrainName))) + else if ("0".equals(mot) && ("Northern Rail".equals(trainName) || "=NT".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "Chiltern Railways".equals(noTrainName)) + else if ("0".equals(mot) && "Chiltern Railways".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && "Heathrow Connect".equals(noTrainName)) + else if ("0".equals(mot) && "Heathrow Connect".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && ("Heathrow Express".equals(noTrainName) || "=HX".equals(noTrainName))) + else if ("0".equals(mot) && ("Heathrow Express".equals(trainName) || "=HX".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "Gatwick Express".equals(noTrainName)) + else if ("0".equals(mot) && "Gatwick Express".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && ("Merseyrail".equals(noTrainName) || "=ME".equals(noTrainName))) + else if ("0".equals(mot) && ("Merseyrail".equals(trainName) || "=ME".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("East Coast".equals(noTrainName) || "=GR".equals(noTrainName))) + else if ("0".equals(mot) && ("East Coast".equals(trainName) || "=GR".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "Cross Country".equals(noTrainName)) + else if ("0".equals(mot) && "Cross Country".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && ("East Midlands Trains".equals(noTrainName) || "=EM".equals(noTrainName))) + else if ("0".equals(mot) && ("East Midlands Trains".equals(trainName) || "=EM".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("Arriva Trains Wales".equals(noTrainName) || "=AW".equals(noTrainName))) + else if ("0".equals(mot) && ("Arriva Trains Wales".equals(trainName) || "=AW".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("First TransPennine Express".equals(noTrainName) || "=TP".equals(noTrainName))) + else if ("0".equals(mot) && ("First TransPennine Express".equals(trainName) || "=TP".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("ScotRail".equals(noTrainName) || "=SR".equals(noTrainName))) + else if ("0".equals(mot) && ("ScotRail".equals(trainName) || "=SR".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("London Midland".equals(noTrainName) || "=LM".equals(noTrainName))) + else if ("0".equals(mot) && ("London Midland".equals(trainName) || "=LM".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && ("c2c".equals(noTrainName) || "=CC".equals(noTrainName))) + else if ("0".equals(mot) && ("c2c".equals(trainName) || "=CC".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "Grand Central".equals(noTrainName)) + else if ("0".equals(mot) && "Grand Central".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && ("Virgin Trains".equals(noTrainName) || "=VT".equals(noTrainName))) + else if ("0".equals(mot) && ("Virgin Trains".equals(trainName) || "=VT".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "Island Line".equals(noTrainName)) + else if ("0".equals(mot) && "Island Line".equals(trainName)) return "R" + name; - else if ("0".equals(mot) && ("Chiltern Railways".equals(noTrainName) || "=CH".equals(noTrainName))) + else if ("0".equals(mot) && ("Chiltern Railways".equals(trainName) || "=CH".equals(trainName))) return "R" + name; - else if ("0".equals(mot) && "London Overground".equals(noTrainName)) + else if ("0".equals(mot) && "London Overground".equals(trainName)) return "S" + name; else - return super.parseLine(mot, name, longName, noTrainName); + return super.parseLine(mot, symbol, name, longName, trainName); } private static final Map LINES = new HashMap();