in the case of an unknown product, at least add symbol or name

This commit is contained in:
Andreas Schildbach 2013-03-15 15:51:06 +01:00
parent 4a65796401
commit 57e0492936
6 changed files with 75 additions and 79 deletions

View file

@ -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_Y = Pattern.compile("\\d+Y");
private static final Pattern P_LINE_SEV = Pattern.compile("SEV.*"); 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 (mot == null)
{ {
if (noTrainName != null) if (trainName != null)
{ {
final String str = name != null ? name : ""; final String str = name != null ? name : "";
if (noTrainName.equals("S-Bahn")) if (trainName.equals("S-Bahn"))
return 'S' + str; return 'S' + str;
if (noTrainName.equals("U-Bahn")) if (trainName.equals("U-Bahn"))
return 'U' + str; return 'U' + str;
if (noTrainName.equals("Straßenbahn")) if (trainName.equals("Straßenbahn"))
return 'T' + str; return 'T' + str;
if (noTrainName.equals("Badner Bahn")) if (trainName.equals("Badner Bahn"))
return 'T' + str; return 'T' + str;
if (noTrainName.equals("Stadtbus")) if (trainName.equals("Stadtbus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Citybus")) if (trainName.equals("Citybus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Regionalbus")) if (trainName.equals("Regionalbus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("ÖBB-Postbus")) if (trainName.equals("ÖBB-Postbus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Autobus")) if (trainName.equals("Autobus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Discobus")) if (trainName.equals("Discobus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Nachtbus")) if (trainName.equals("Nachtbus"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Anrufsammeltaxi")) if (trainName.equals("Anrufsammeltaxi"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Ersatzverkehr")) if (trainName.equals("Ersatzverkehr"))
return 'B' + str; return 'B' + str;
if (noTrainName.equals("Vienna Airport Lines")) if (trainName.equals("Vienna Airport Lines"))
return 'B' + str; return 'B' + str;
} }
throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "' noTrainName '" throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ noTrainName + "'"); + "' trainName='" + trainName + "'");
} }
final int t = Integer.parseInt(mot); final int t = Integer.parseInt(mot);
@ -855,13 +855,13 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'I' + name; return 'I' + name;
if ("ES".equals(type)) // Eurostar Italia if ("ES".equals(type)) // Eurostar Italia
return 'I' + name; return 'I' + name;
if ("Eurocity".equals(noTrainName)) // Liechtenstein if ("Eurocity".equals(trainName)) // Liechtenstein
return 'I' + name; return 'I' + name;
if ("EuroNight".equals(noTrainName)) // Liechtenstein if ("EuroNight".equals(trainName)) // Liechtenstein
return 'I' + name; return 'I' + name;
if ("railjet".equals(noTrainName)) // Liechtenstein if ("railjet".equals(trainName)) // Liechtenstein
return 'I' + name; return 'I' + name;
if ("ÖBB InterCity".equals(noTrainName)) // Liechtenstein if ("ÖBB InterCity".equals(trainName)) // Liechtenstein
return 'I' + name; return 'I' + name;
if (type.equals("IR")) // Interregio if (type.equals("IR")) // Interregio
@ -1162,11 +1162,11 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'R' + name; return 'R' + name;
if ("CAPITOL".equals(name)) // San Francisco if ("CAPITOL".equals(name)) // San Francisco
return 'R' + name; return 'R' + name;
if ("Train".equals(noTrainName) || "Train".equals(type)) // San Francisco if ("Train".equals(trainName) || "Train".equals(type)) // San Francisco
return "R" + name; return "R" + name;
if ("Regional Train :".equals(longName)) if ("Regional Train :".equals(longName))
return "R"; return "R";
if ("Regional Train".equals(noTrainName)) // Melbourne if ("Regional Train".equals(trainName)) // Melbourne
return "R" + name; return "R" + name;
if ("Regional".equals(type)) // Melbourne if ("Regional".equals(type)) // Melbourne
return "R" + name; return "R" + name;
@ -1174,9 +1174,9 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'R' + name; return 'R' + name;
if ("Chiemsee-Bahn".equals(type)) if ("Chiemsee-Bahn".equals(type))
return 'R' + name; return 'R' + name;
if ("Regionalzug".equals(noTrainName)) // Liechtenstein if ("Regionalzug".equals(trainName)) // Liechtenstein
return 'R' + name; return 'R' + name;
if ("RegionalExpress".equals(noTrainName)) // Liechtenstein if ("RegionalExpress".equals(trainName)) // Liechtenstein
return 'R' + name; return 'R' + name;
if ("Ostdeutsche".equals(type)) // Bayern if ("Ostdeutsche".equals(type)) // Bayern
return 'R' + type; return 'R' + type;
@ -1348,9 +1348,9 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'T' + name; return 'T' + name;
if ("Cable".equals(type)) // San Francisco if ("Cable".equals(type)) // San Francisco
return 'T' + name; return 'T' + name;
if ("Muni Rail".equals(noTrainName)) // San Francisco if ("Muni Rail".equals(trainName)) // San Francisco
return 'T' + name; return 'T' + name;
if ("Cable Car".equals(noTrainName)) // San Francisco if ("Cable Car".equals(trainName)) // San Francisco
return 'T' + name; return 'T' + name;
if ("BUS".equals(type) || "Bus".equals(type)) if ("BUS".equals(type) || "Bus".equals(type))
@ -1361,7 +1361,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'B' + str; return 'B' + str;
if ("Ersatzverkehr".equals(type)) // Rhein-Ruhr if ("Ersatzverkehr".equals(type)) // Rhein-Ruhr
return 'B' + str; return 'B' + str;
if ("Bus replacement".equals(noTrainName)) // Transport Line if ("Bus replacement".equals(trainName)) // Transport Line
return 'B' + str; return 'B' + str;
if ("HBL".equals(type)) // Hamburg Hafenfähre if ("HBL".equals(type)) // Hamburg Hafenfähre
@ -1373,14 +1373,14 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
if (type.length() == 0) if (type.length() == 0)
return "?"; return "?";
if (P_LINE_NUMBER.matcher(type).matches()) if (P_LINE_NUMBER.matcher(type).matches())
return "?"; return "?" + ParserUtils.firstNotEmpty(symbol, name);
if (P_LINE_Y.matcher(name).matches()) if (P_LINE_Y.matcher(name).matches())
return "?" + name; return "?" + ParserUtils.firstNotEmpty(symbol, name);
if ("Sonderverkehr Red Bull".equals(name)) if ("Sonderverkehr Red Bull".equals(name))
return "?" + name; return "?" + name;
throw new IllegalStateException("cannot normalize mot '" + mot + "' name '" + name + "' long '" + longName + "' noTrainName '" throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ noTrainName + "' type '" + type + "' str '" + str + "'"); + "' trainName='" + trainName + "' type='" + type + "' str='" + str + "'");
} }
if (t == 1) if (t == 1)
@ -1413,10 +1413,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return 'F' + name; return 'F' + name;
if (t == 11 || t == -1) 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 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"); XmlPullUtil.require(pp, "itdServingLine");
final String slMotType = pp.getAttributeValue(null, "motType"); final String slMotType = pp.getAttributeValue(null, "motType");
final String slSymbol = pp.getAttributeValue(null, "symbol");
final String slNumber = pp.getAttributeValue(null, "number"); final String slNumber = pp.getAttributeValue(null, "number");
final String slStateless = pp.getAttributeValue(null, "stateless"); final String slStateless = pp.getAttributeValue(null, "stateless");
final String slTrainType = pp.getAttributeValue(null, "trainType"); 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 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); 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 motTrainName = pp.getAttributeValue(null, "trainName");
final String motTrainType = pp.getAttributeValue(null, "trainType"); final String motTrainType = pp.getAttributeValue(null, "trainType");
final String trainName = ParserUtils.firstNotEmpty(motTrainName, motTrainType); 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.enter(pp, "itdMeansOfTransport");
XmlPullUtil.require(pp, "motDivaParams"); XmlPullUtil.require(pp, "motDivaParams");

View file

@ -62,13 +62,13 @@ public class KvvProvider extends AbstractEfaProvider
private static final Pattern P_LINE = Pattern.compile("(.*?)\\s+\\([\\w/]+\\)", Pattern.CASE_INSENSITIVE); private static final Pattern P_LINE = Pattern.compile("(.*?)\\s+\\([\\w/]+\\)", Pattern.CASE_INSENSITIVE);
@Override @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); final Matcher m = P_LINE.matcher(name);
if (m.matches()) if (m.matches())
return super.parseLine(mot, m.group(1), longName, noTrainName); return super.parseLine(mot, symbol, m.group(1), longName, trainName);
else else
return super.parseLine(mot, name, longName, noTrainName); return super.parseLine(mot, symbol, name, longName, trainName);
// TODO check for " (Ersatzverkehr)" // TODO check for " (Ersatzverkehr)"
} }

View file

@ -56,7 +56,7 @@ public class MvvProvider extends AbstractEfaProvider
} }
@Override @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")) if ("0".equals(mot) && longName.equals("Hamburg-Köln-Express"))
return "I" + longName; return "I" + longName;
@ -73,7 +73,7 @@ public class MvvProvider extends AbstractEfaProvider
return "R" + longName; return "R" + longName;
else else
return super.parseLine(mot, name, longName, noTrainName); return super.parseLine(mot, symbol, name, longName, trainName);
} }
private static final Map<String, Style> LINES = new HashMap<String, Style>(); private static final Map<String, Style> LINES = new HashMap<String, Style>();

View file

@ -55,10 +55,4 @@ public class NaldoProvider extends AbstractEfaProvider
{ {
return xmlStopfinderRequest(new Location(LocationType.STATION, 0, null, constraint.toString())); 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);
}
} }

View file

@ -68,7 +68,7 @@ public class SfProvider extends AbstractEfaProvider
} }
@Override @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)) if ("NORTHBOUND".equals(name))
return "?" + name; return "?" + name;
@ -79,7 +79,7 @@ public class SfProvider extends AbstractEfaProvider
else if ("WESTBOUND".equals(name)) else if ("WESTBOUND".equals(name))
return "?" + name; return "?" + name;
else else
return super.parseLine(mot, name, longName, noTrainName); return super.parseLine(mot, symbol, name, longName, trainName);
} }
private static final Map<String, Style> LINES = new HashMap<String, Style>(); private static final Map<String, Style> LINES = new HashMap<String, Style>();

View file

@ -57,65 +57,65 @@ public class TflProvider extends AbstractEfaProvider
} }
@Override @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; 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; 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; 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; 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; 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; 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; 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; return "R" + name;
else if ("0".equals(mot) && "Chiltern Railways".equals(noTrainName)) else if ("0".equals(mot) && "Chiltern Railways".equals(trainName))
return "R" + name; return "R" + name;
else if ("0".equals(mot) && "Heathrow Connect".equals(noTrainName)) else if ("0".equals(mot) && "Heathrow Connect".equals(trainName))
return "R" + name; 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; return "R" + name;
else if ("0".equals(mot) && "Gatwick Express".equals(noTrainName)) else if ("0".equals(mot) && "Gatwick Express".equals(trainName))
return "R" + name; 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; 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; return "R" + name;
else if ("0".equals(mot) && "Cross Country".equals(noTrainName)) else if ("0".equals(mot) && "Cross Country".equals(trainName))
return "R" + name; 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; 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; 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; 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; 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; 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; return "R" + name;
else if ("0".equals(mot) && "Grand Central".equals(noTrainName)) else if ("0".equals(mot) && "Grand Central".equals(trainName))
return "R" + name; 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; return "R" + name;
else if ("0".equals(mot) && "Island Line".equals(noTrainName)) else if ("0".equals(mot) && "Island Line".equals(trainName))
return "R" + name; 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; return "R" + name;
else if ("0".equals(mot) && "London Overground".equals(noTrainName)) else if ("0".equals(mot) && "London Overground".equals(trainName))
return "S" + name; return "S" + name;
else else
return super.parseLine(mot, name, longName, noTrainName); return super.parseLine(mot, symbol, name, longName, trainName);
} }
private static final Map<String, Style> LINES = new HashMap<String, Style>(); private static final Map<String, Style> LINES = new HashMap<String, Style>();