diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index 338b496d..248b067d 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -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) diff --git a/src/de/schildbach/pte/InvgProvider.java b/src/de/schildbach/pte/InvgProvider.java index fa6c0427..2a2d825c 100644 --- a/src/de/schildbach/pte/InvgProvider.java +++ b/src/de/schildbach/pte/InvgProvider.java @@ -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 diff --git a/src/de/schildbach/pte/SeptaProvider.java b/src/de/schildbach/pte/SeptaProvider.java index 79d00547..f78854f3 100644 --- a/src/de/schildbach/pte/SeptaProvider.java +++ b/src/de/schildbach/pte/SeptaProvider.java @@ -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); diff --git a/src/de/schildbach/pte/ShProvider.java b/src/de/schildbach/pte/ShProvider.java index 709bbf9e..adb31b05 100644 --- a/src/de/schildbach/pte/ShProvider.java +++ b/src/de/schildbach/pte/ShProvider.java @@ -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); diff --git a/src/de/schildbach/pte/VgsProvider.java b/src/de/schildbach/pte/VgsProvider.java index be8532da..c1705701 100644 --- a/src/de/schildbach/pte/VgsProvider.java +++ b/src/de/schildbach/pte/VgsProvider.java @@ -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);