refactored normalizeLine to parseLine

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@788 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-09-25 11:01:04 +00:00
parent 5cbbd7f175
commit ed80d13ff9
5 changed files with 41 additions and 25 deletions

View file

@ -923,8 +923,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
if (category == null)
category = shortCategory;
final String lineStr = normalizeLine(category, name);
line = new Line(null, lineStr, lineColors(lineStr));
line = parseLine(category, name);
}
else if (tag.equals("Walk") || tag.equals("Transfer") || tag.equals("GisRoute"))
{
@ -1687,26 +1686,32 @@ public abstract class AbstractHafasProvider implements NetworkProvider
protected static final Pattern P_NORMALIZE_LINE = Pattern.compile("([A-Za-zßÄÅäáàâåéèêíìîÖöóòôÜüúùûØ/]+)[\\s-]*(.*)");
protected String normalizeLine(final String type, final String line)
protected Line parseLine(final String type, final String line)
{
final char normalizedType = normalizeType(type);
if (normalizedType != 0)
{
final String lineStr;
if (line != null)
{
final Matcher m = P_NORMALIZE_LINE.matcher(line);
final String strippedLine = m.matches() ? m.group(1) + m.group(2) : line;
return normalizedType + strippedLine;
lineStr = normalizedType + strippedLine;
}
else
{
return Character.toString(normalizedType);
lineStr = Character.toString(normalizedType);
}
}
throw new IllegalStateException("cannot normalize type '" + type + "' line '" + line + "'");
return new Line(null, lineStr, lineColors(lineStr));
}
else
{
throw new IllegalStateException("cannot normalize type '" + type + "' line '" + line + "'");
}
}
protected String normalizeLine(final String line)

View file

@ -235,7 +235,7 @@ public class InvgProvider extends AbstractHafasProvider
final String lineType = mDepFine.group(3);
final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0;
@ -243,8 +243,8 @@ public class InvgProvider extends AbstractHafasProvider
final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null;
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, new Line(
null, line, line != null ? lineColors(line) : null), position, destinationId, destination, null, null);
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line,
position, destinationId, destination, null, null);
if (!departures.contains(dep))
departures.add(dep);
@ -282,28 +282,40 @@ public class InvgProvider extends AbstractHafasProvider
protected static final Pattern P_NORMALIZE_LINE_BUS_X = Pattern.compile("Bus\\s*X\\s*(\\d+)");
@Override
protected String normalizeLine(final String type, final String line)
protected Line parseLine(final String type, final String line)
{
if ("1".equals(type))
{
final Matcher mBus = P_NORMALIZE_LINE_BUS.matcher(line);
if (mBus.matches())
return "B" + mBus.group(1);
{
final String lineStr = "B" + mBus.group(1);
return new Line(null, lineStr, lineColors(lineStr));
}
final Matcher mNachtbus = P_NORMALIZE_LINE_NACHTBUS.matcher(line);
if (mNachtbus.matches())
return "BN" + mNachtbus.group(1);
{
final String lineStr = "BN" + mNachtbus.group(1);
return new Line(null, lineStr, lineColors(lineStr));
}
final Matcher mBusS = P_NORMALIZE_LINE_BUS_S.matcher(line);
if (mBusS.matches())
return "BS" + mBusS.group(1);
{
final String lineStr = "BS" + mBusS.group(1);
return new Line(null, lineStr, lineColors(lineStr));
}
final Matcher mBusX = P_NORMALIZE_LINE_BUS_X.matcher(line);
if (mBusX.matches())
return "BX" + mBusX.group(1);
{
final String lineStr = "BX" + mBusX.group(1);
return new Line(null, lineStr, lineColors(lineStr));
}
}
return super.normalizeLine(type, line);
return super.parseLine(type, line);
}
@Override

View file

@ -257,7 +257,7 @@ public class SeptaProvider extends AbstractHafasProvider
final String lineType = mDepFine.group(3);
final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0;
@ -265,8 +265,8 @@ public class SeptaProvider extends AbstractHafasProvider
final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null;
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, new Line(null,
line, line != null ? lineColors(line) : null), position, destinationId, destination, null, null);
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line,
position, destinationId, destination, null, null);
if (!departures.contains(dep))
departures.add(dep);

View file

@ -222,7 +222,7 @@ public class ShProvider extends AbstractHafasProvider
final String lineType = mDepFine.group(2);
final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(3).trim()));
final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(3).trim()));
final int destinationId = mDepFine.group(4) != null ? Integer.parseInt(mDepFine.group(4)) : 0;
@ -230,8 +230,7 @@ public class ShProvider extends AbstractHafasProvider
final String position = mDepFine.group(6) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(6)) : null;
final Departure dep = new Departure(plannedTime.getTime(), null, new Line(null, line, line != null ? lineColors(line) : null),
position, destinationId, destination, null, null);
final Departure dep = new Departure(plannedTime.getTime(), null, line, position, destinationId, destination, null, null);
if (!departures.contains(dep))
departures.add(dep);

View file

@ -264,7 +264,7 @@ public class VgsProvider extends AbstractHafasProvider
final String lineType = mDepFine.group(3);
final String line = normalizeLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final Line line = parseLine(lineType, ParserUtils.resolveEntities(mDepFine.group(4)));
final int destinationId = mDepFine.group(5) != null ? Integer.parseInt(mDepFine.group(5)) : 0;
@ -272,8 +272,8 @@ public class VgsProvider extends AbstractHafasProvider
final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null;
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, new Line(
null, line, line != null ? lineColors(line) : null), position, destinationId, destination, null, null);
final Departure dep = new Departure(plannedTime.getTime(), predictedTime != null ? predictedTime.getTime() : null, line,
position, destinationId, destination, null, null);
if (!departures.contains(dep))
departures.add(dep);