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_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");

View file

@ -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)"
}

View file

@ -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<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()));
}
@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
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<String, Style> LINES = new HashMap<String, Style>();

View file

@ -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<String, Style> LINES = new HashMap<String, Style>();