fix overlong line names for London

This commit is contained in:
Andreas Schildbach 2013-03-19 11:02:19 +01:00
parent 6361096607
commit bd397fdb47
5 changed files with 87 additions and 71 deletions

View file

@ -761,7 +761,8 @@ 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, String symbol, final String name, final String longName, final String trainName)
protected String parseLine(final String mot, String symbol, final String name, final String longName, final String trainType,
final String trainNum, final String trainName)
{
if (mot == null)
{
@ -799,7 +800,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
}
throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ "' trainName='" + trainName + "'");
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
}
final int t = Integer.parseInt(mot);
@ -1380,7 +1381,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return "?" + name;
throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ "' trainName='" + trainName + "' type='" + type + "' str='" + str + "'");
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "' type='" + type + "' str='" + str
+ "'");
}
if (t == 1)
@ -1416,7 +1418,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
return '?' + ParserUtils.firstNotEmpty(symbol, name);
throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ "' trainName='" + trainName + "'");
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
}
public QueryDeparturesResult queryDepartures(final int stationId, final int maxDepartures, final boolean equivs) throws IOException
@ -1713,7 +1715,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
final String slStateless = pp.getAttributeValue(null, "stateless");
final String slTrainType = pp.getAttributeValue(null, "trainType");
final String slTrainName = pp.getAttributeValue(null, "trainName");
/* final String slTrainNum = */pp.getAttributeValue(null, "trainNum");
final String slTrainNum = pp.getAttributeValue(null, "trainNum");
XmlPullUtil.enter(pp, "itdServingLine");
String itdTrainName = null;
@ -1736,6 +1738,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
if (XmlPullUtil.test(pp, "itdNoTrain"))
{
itdTrainName = pp.getAttributeValue(null, "name");
itdTrainType = pp.getAttributeValue(null, "type");
if (!pp.isEmptyElementTag())
{
XmlPullUtil.enter(pp, "itdNoTrain");
@ -1751,9 +1754,10 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
}
XmlPullUtil.exit(pp, "itdServingLine");
final String trainName = ParserUtils.firstNotEmpty(slTrainName, itdTrainName, slTrainType, itdTrainType);
final String trainType = ParserUtils.firstNotEmpty(slTrainType, itdTrainType);
final String trainName = ParserUtils.firstNotEmpty(slTrainName, itdTrainName);
final String label = parseLine(slMotType, slSymbol, slNumber, slNumber, trainName);
final String label = parseLine(slMotType, slSymbol, slNumber, slNumber, trainType, slTrainNum, trainName);
return new Line(slStateless, label, lineStyle(label), itdMessage);
}
@ -2236,8 +2240,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
final String motName = pp.getAttributeValue(null, "name");
final String motTrainName = pp.getAttributeValue(null, "trainName");
final String motTrainType = pp.getAttributeValue(null, "trainType");
final String trainName = ParserUtils.firstNotEmpty(motTrainName, motTrainType);
lineLabel = parseLine(motType, motSymbol, motShortName, motName, trainName);
lineLabel = parseLine(motType, motSymbol, motShortName, motName, motTrainType, motShortName, motTrainName);
}
XmlPullUtil.enter(pp, "itdMeansOfTransport");
XmlPullUtil.require(pp, "motDivaParams");

View file

@ -62,13 +62,14 @@ 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 symbol, final String name, final String longName, final String trainName)
protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainType,
final String trainNum, final String trainName)
{
final Matcher m = P_LINE.matcher(name);
if (m.matches())
return super.parseLine(mot, symbol, m.group(1), longName, trainName);
return super.parseLine(mot, symbol, m.group(1), longName, trainType, trainNum, trainName);
else
return super.parseLine(mot, symbol, name, longName, trainName);
return super.parseLine(mot, symbol, name, longName, trainType, trainNum, trainName);
// TODO check for " (Ersatzverkehr)"
}

View file

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

View file

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

View file

@ -57,65 +57,74 @@ public class TflProvider extends AbstractEfaProvider
}
@Override
protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainName)
protected String parseLine(final String mot, final String symbol, final String name, final String longName, final String trainType,
final String trainNum, final String trainName)
{
if ("0".equals(mot) && "First Hull Trains".equals(trainName))
return "I" + name;
if ("0".equals(mot))
{
if ("First Hull Trains".equals(trainName) || "=HT".equals(trainType))
return "IHT" + trainNum;
else if ("0".equals(mot) && ("Southern".equals(trainName) || "=SN".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("Southeastern".equals(trainName) || "=SE".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("South West Trains".equals(trainName) || "=SW".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("Greater Anglia".equals(trainName) || "=LE".equals(trainName)))
return "R" + name;
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(trainName) || "=FC".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("Northern Rail".equals(trainName) || "=NT".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && "Chiltern Railways".equals(trainName))
return "R" + name;
else if ("0".equals(mot) && "Heathrow Connect".equals(trainName))
return "R" + name;
else if ("0".equals(mot) && ("Heathrow Express".equals(trainName) || "=HX".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && "Gatwick Express".equals(trainName))
return "R" + name;
else if ("0".equals(mot) && ("Merseyrail".equals(trainName) || "=ME".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("East Coast".equals(trainName) || "=GR".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && "Cross Country".equals(trainName))
return "R" + name;
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(trainName) || "=AW".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("First TransPennine Express".equals(trainName) || "=TP".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("ScotRail".equals(trainName) || "=SR".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("London Midland".equals(trainName) || "=LM".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && ("c2c".equals(trainName) || "=CC".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && "Grand Central".equals(trainName))
return "R" + name;
else if ("0".equals(mot) && ("Virgin Trains".equals(trainName) || "=VT".equals(trainName)))
return "R" + name;
else if ("0".equals(mot) && "Island Line".equals(trainName))
return "R" + name;
else if ("0".equals(mot) && ("Chiltern Railways".equals(trainName) || "=CH".equals(trainName)))
return "R" + name;
else if ("Southern".equals(trainName) || "=SN".equals(trainType))
return "RSN" + trainNum;
else if ("Southeastern".equals(trainName) || "=SE".equals(trainType))
return "RSE" + trainNum;
else if ("South West Trains".equals(trainName) || "=SW".equals(trainType))
return "RSW" + trainNum;
else if ("Greater Anglia".equals(trainName) || "=LE".equals(trainType))
return "RLE" + trainNum;
else if ("First Great Western".equals(trainName) || "=GW".equals(trainType))
return "RGW" + trainNum;
else if ("First Capital Connect".equals(trainName) || "=FC".equals(trainType))
return "RFC" + trainNum;
else if ("Northern Rail".equals(trainName) || "=NT".equals(trainType))
return "RNT" + trainNum;
else if ("Heathrow Connect".equals(trainName) || "=HC".equals(trainType))
return "RHC" + trainNum;
else if ("Heathrow Express".equals(trainName) || "=HX".equals(trainType))
return "RHX" + trainNum;
else if ("Gatwick Express".equals(trainName) || "=GX".equals(trainType))
return "RGX" + trainNum;
else if ("Merseyrail".equals(trainName) || "=ME".equals(trainType))
return "RME" + trainNum;
else if ("East Coast".equals(trainName) || "=GR".equals(trainType))
return "RGR" + trainNum;
else if ("Cross Country".equals(trainName) || "=XC".equals(trainType))
return "RXC" + trainNum;
else if ("East Midlands Trains".equals(trainName) || "=EM".equals(trainType))
return "REM" + trainNum;
else if ("Arriva Trains Wales".equals(trainName) || "=AW".equals(trainType))
return "RAW" + trainNum;
else if ("First TransPennine Express".equals(trainName) || "=TP".equals(trainType))
return "RTP" + trainNum;
else if ("ScotRail".equals(trainName) || "=SR".equals(trainType))
return "RSR" + trainNum;
else if ("London Midland".equals(trainName) || "=LM".equals(trainType))
return "RLM" + trainNum;
else if ("c2c".equals(trainName) || "=CC".equals(trainType))
return "RCC" + trainNum;
else if ("Grand Central".equals(trainName) || "=GC".equals(trainType))
return "RGC" + trainNum;
else if ("Virgin Trains".equals(trainName) || "=VT".equals(trainType))
return "RVT" + trainNum;
else if ("Island Line".equals(trainName) || "=IL".equals(trainType))
return "RIL" + trainNum;
else if ("Chiltern Railways".equals(trainName) || "=CH".equals(trainType))
return "RCH" + trainNum;
else if ("0".equals(mot) && "London Overground".equals(trainName))
return "S" + name;
throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
}
else if ("3".equals(mot))
{
if ("London Overground".equals(trainName) || "=LO".equals(trainType))
return "SLO" + (trainNum != null ? trainNum : "");
else
return super.parseLine(mot, symbol, name, longName, trainName);
throw new IllegalStateException("cannot normalize mot='" + mot + "' symbol='" + symbol + "' name='" + name + "' long='" + longName
+ "' trainType='" + trainType + "' trainNum='" + trainNum + "' trainName='" + trainName + "'");
}
return super.parseLine(mot, symbol, name, longName, trainType, trainNum, trainName);
}
private static final Map<String, Style> LINES = new HashMap<String, Style>();