From 7d64ef647ff1e09a63f897b0e3cc7a27a6c4f578 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Wed, 15 Aug 2012 15:18:39 +0200 Subject: [PATCH] newLine() method now responsible for assembling line product and name --- .../schildbach/pte/AbstractHafasProvider.java | 45 ++++++++++--------- .../src/de/schildbach/pte/BahnProvider.java | 8 ++-- .../src/de/schildbach/pte/BvgProvider.java | 24 +++++----- .../de/schildbach/pte/EireannProvider.java | 2 +- enabler/src/de/schildbach/pte/PlProvider.java | 4 +- .../src/de/schildbach/pte/RmvProvider.java | 4 +- enabler/src/de/schildbach/pte/SeProvider.java | 6 +-- .../de/schildbach/pte/StockholmProvider.java | 2 +- .../src/de/schildbach/pte/ZvvProvider.java | 8 ++-- 9 files changed, 52 insertions(+), 51 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java index a2f4d4af..06955ec4 100644 --- a/enabler/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractHafasProvider.java @@ -51,6 +51,7 @@ import org.xmlpull.v1.XmlPullParserFactory; import de.schildbach.pte.dto.Connection; import de.schildbach.pte.dto.Departure; import de.schildbach.pte.dto.Line; +import de.schildbach.pte.dto.Line.Attr; import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.LocationType; import de.schildbach.pte.dto.NearbyStationsResult; @@ -2636,36 +2637,34 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { final Matcher mBus = P_NORMALIZE_LINE_BUS.matcher(line); if (mBus.matches()) - return newLine('B' + mBus.group(1)); + return newLine('B', mBus.group(1)); final Matcher mTram = P_NORMALIZE_LINE_TRAM.matcher(line); if (mTram.matches()) - return newLine('T' + mTram.group(1)); + return newLine('T', mTram.group(1)); } final char normalizedType = normalizeType(type); if (normalizedType == 0) throw new IllegalStateException("cannot normalize type '" + type + "' line '" + line + "'"); - final String lineStr; + final Attr[] attrs; + if (wheelchairAccess) + attrs = new Attr[] { Line.Attr.WHEEL_CHAIR_ACCESS }; + else + attrs = new Attr[0]; + if (line != null) { final Matcher m = P_NORMALIZE_LINE.matcher(line); final String strippedLine = m.matches() ? m.group(1) + m.group(2) : line; - lineStr = normalizedType + strippedLine; - - // FIXME xxxxxxx + return newLine(normalizedType, strippedLine, attrs); } else { - lineStr = Character.toString(normalizedType); + return newLine(normalizedType, null, attrs); } - - if (wheelchairAccess) - return newLine(lineStr, Line.Attr.WHEEL_CHAIR_ACCESS); - else - return newLine(lineStr); } protected Line parseLineWithoutType(final String line) @@ -2675,11 +2674,11 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final Matcher mBus = P_NORMALIZE_LINE_BUS.matcher(line); if (mBus.matches()) - return newLine('B' + mBus.group(1)); + return newLine('B', mBus.group(1)); final Matcher mTram = P_NORMALIZE_LINE_TRAM.matcher(line); if (mTram.matches()) - return newLine('T' + mTram.group(1)); + return newLine('T', mTram.group(1)); final Matcher m = P_NORMALIZE_LINE.matcher(line); if (m.matches()) @@ -2689,7 +2688,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider final char normalizedType = normalizeType(type); if (normalizedType != 0) - return newLine(normalizedType + type + number); + return newLine(normalizedType, type + number); throw new IllegalStateException("cannot normalize type '" + type + "' number '" + number + "' line '" + line + "'"); } @@ -2714,11 +2713,11 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider if (type.length() == 0) { if (number.length() == 0) - return newLine("?"); + return newLine('?', null); if (P_NORMALIZE_LINE_NUMBER.matcher(number).matches()) - return newLine("?" + number); + return newLine('?', number); if (P_LINE_RUSSIA.matcher(number).matches()) - return newLine('R' + number); + return newLine('R', number); } else { @@ -2729,17 +2728,17 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider { final Matcher mBus = P_NORMALIZE_LINE_BUS.matcher(number); if (mBus.matches()) - return newLine('B' + mBus.group(1)); + return newLine('B', mBus.group(1)); } if (normalizedType == 'T') { final Matcher mTram = P_NORMALIZE_LINE_TRAM.matcher(number); if (mTram.matches()) - return newLine('T' + mTram.group(1)); + return newLine('T', mTram.group(1)); } - return newLine(normalizedType + number.replaceAll("\\s+", "")); + return newLine(normalizedType, number.replaceAll("\\s+", "")); } } @@ -2749,8 +2748,10 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider throw new IllegalStateException("cannot normalize line#type '" + lineAndType + "'"); } - protected final Line newLine(final String lineStr, final Line.Attr... attrs) + protected final Line newLine(final char product, final String name, final Line.Attr... attrs) { + final String lineStr = product + (name != null ? name : "?"); + if (attrs.length == 0) { return new Line(null, lineStr, lineStyle(lineStr)); diff --git a/enabler/src/de/schildbach/pte/BahnProvider.java b/enabler/src/de/schildbach/pte/BahnProvider.java index 534266fc..21a62444 100644 --- a/enabler/src/de/schildbach/pte/BahnProvider.java +++ b/enabler/src/de/schildbach/pte/BahnProvider.java @@ -235,16 +235,16 @@ public final class BahnProvider extends AbstractHafasProvider protected final Line parseLineWithoutType(final String line) { if ("Schw-B".equals(line)) // Schwebebahn, gilt als "Straßenbahn besonderer Bauart" - return newLine('T' + line); + return newLine('T', line); if (P_LINE_RUSSIA.matcher(line).matches()) - return newLine('R' + line); + return newLine('R', line); if (P_LINE_NUMBER.matcher(line).matches()) - return newLine('?' + line); + return newLine('?', line); if ("---".equals(line)) - return newLine('?' + line); + return newLine('?', line); return super.parseLineWithoutType(line); } diff --git a/enabler/src/de/schildbach/pte/BvgProvider.java b/enabler/src/de/schildbach/pte/BvgProvider.java index 3327c448..bcaa5afc 100644 --- a/enabler/src/de/schildbach/pte/BvgProvider.java +++ b/enabler/src/de/schildbach/pte/BvgProvider.java @@ -519,39 +519,39 @@ public final class BvgProvider extends AbstractHafasProvider protected Line parseLineWithoutType(final String line) { if ("S41".equals(line)) - return newLine("SS41", Attr.CIRCLE_CLOCKWISE); + return newLine('S', "S41", Attr.CIRCLE_CLOCKWISE); if ("S42".equals(line)) - return newLine("SS42", Attr.CIRCLE_ANTICLOCKWISE); + return newLine('S', "S42", Attr.CIRCLE_ANTICLOCKWISE); if ("Bus S41".equals(line)) - return newLine("BS41", Attr.SERVICE_REPLACEMENT, Attr.CIRCLE_CLOCKWISE); + return newLine('B', "S41", Attr.SERVICE_REPLACEMENT, Attr.CIRCLE_CLOCKWISE); if ("Bus S42".equals(line)) - return newLine("BS42", Attr.SERVICE_REPLACEMENT, Attr.CIRCLE_ANTICLOCKWISE); + return newLine('B', "S42", Attr.SERVICE_REPLACEMENT, Attr.CIRCLE_ANTICLOCKWISE); if ("Bus TXL".equals(line)) - return newLine("BTXL", Attr.LINE_AIRPORT); + return newLine('B', "TXL", Attr.LINE_AIRPORT); if ("S9".equals(line)) - return newLine("SS9", Attr.LINE_AIRPORT); + return newLine('S', "S9", Attr.LINE_AIRPORT); if ("S45".equals(line)) - return newLine("SS45", Attr.LINE_AIRPORT); + return newLine('S', "S45", Attr.LINE_AIRPORT); final Matcher mRegional = P_LINE_REGIONAL.matcher(line); if (mRegional.matches()) - return newLine('R' + mRegional.group(1)); + return newLine('R', mRegional.group(1)); final Matcher mTram = P_LINE_TRAM.matcher(line); if (mTram.matches()) - return newLine('T' + mTram.group(1)); + return newLine('T', mTram.group(1)); final Matcher mBus = P_LINE_BUS.matcher(line); if (mBus.matches()) - return newLine('B' + mBus.group(1)); + return newLine('B', mBus.group(1)); if (P_LINE_FERRY.matcher(line).matches()) - return newLine('F' + line); + return newLine('F', line); if (P_LINE_NUMBER.matcher(line).matches()) - return newLine('R' + line); + return newLine('R', line); return super.parseLineWithoutType(line); } diff --git a/enabler/src/de/schildbach/pte/EireannProvider.java b/enabler/src/de/schildbach/pte/EireannProvider.java index a9a57de9..369dac66 100644 --- a/enabler/src/de/schildbach/pte/EireannProvider.java +++ b/enabler/src/de/schildbach/pte/EireannProvider.java @@ -159,7 +159,7 @@ public class EireannProvider extends AbstractHafasProvider { final Matcher mLine = P_NORMALIZE_LINE.matcher(lineAndType); if (mLine.matches()) - return newLine('B' + mLine.group(1)); + return newLine('B', mLine.group(1)); return super.parseLineAndType(lineAndType); } diff --git a/enabler/src/de/schildbach/pte/PlProvider.java b/enabler/src/de/schildbach/pte/PlProvider.java index 89f86a3c..bce97b1f 100644 --- a/enabler/src/de/schildbach/pte/PlProvider.java +++ b/enabler/src/de/schildbach/pte/PlProvider.java @@ -205,10 +205,10 @@ public class PlProvider extends AbstractHafasProvider { final Matcher mRussia = P_NORMALIZE_LINE_RUSSIA.matcher(line); if (mRussia.matches()) - return newLine('R' + mRussia.group(1)); + return newLine('R', mRussia.group(1)); if (P_NORMALIZE_LINE_NUMBER.matcher(line).matches()) - return newLine('R' + line); + return newLine('R', line); return super.parseLineWithoutType(line); } diff --git a/enabler/src/de/schildbach/pte/RmvProvider.java b/enabler/src/de/schildbach/pte/RmvProvider.java index 26a6feb4..7634b04e 100644 --- a/enabler/src/de/schildbach/pte/RmvProvider.java +++ b/enabler/src/de/schildbach/pte/RmvProvider.java @@ -310,9 +310,9 @@ public class RmvProvider extends AbstractHafasProvider protected Line parseLineWithoutType(final String line) { if ("11".equals(line)) - return newLine("T11"); + return newLine('T', "11"); if ("12".equals(line)) - return newLine("T12"); + return newLine('T', "12"); return super.parseLineWithoutType(line); } diff --git a/enabler/src/de/schildbach/pte/SeProvider.java b/enabler/src/de/schildbach/pte/SeProvider.java index fbc5c636..0a48f1da 100644 --- a/enabler/src/de/schildbach/pte/SeProvider.java +++ b/enabler/src/de/schildbach/pte/SeProvider.java @@ -207,12 +207,12 @@ public class SeProvider extends AbstractHafasProvider { final Matcher mBus = P_NORMALIZE_LINE_BUS.matcher(line); if (mBus.matches()) - return newLine('B' + mBus.group(1)); + return newLine('B', mBus.group(1)); final Matcher mSubway = P_NORMALIZE_LINE_SUBWAY.matcher(line); if (mSubway.matches()) - return newLine("UT" + mSubway.group(1)); + return newLine('U', "T" + mSubway.group(1)); - return newLine('?' + line); + return newLine('?', line); } } diff --git a/enabler/src/de/schildbach/pte/StockholmProvider.java b/enabler/src/de/schildbach/pte/StockholmProvider.java index d01d467d..5cf0e0df 100644 --- a/enabler/src/de/schildbach/pte/StockholmProvider.java +++ b/enabler/src/de/schildbach/pte/StockholmProvider.java @@ -199,7 +199,7 @@ public class StockholmProvider extends AbstractHafasProvider { final char normalizedType = normalizeType(type); if (normalizedType != 0) - return newLine(normalizedType + number); + return newLine(normalizedType, number); } throw new IllegalStateException("cannot normalize type " + type + " number " + number + " line#type " + lineAndType); diff --git a/enabler/src/de/schildbach/pte/ZvvProvider.java b/enabler/src/de/schildbach/pte/ZvvProvider.java index 71adde3f..ec9a72b1 100644 --- a/enabler/src/de/schildbach/pte/ZvvProvider.java +++ b/enabler/src/de/schildbach/pte/ZvvProvider.java @@ -200,17 +200,17 @@ public class ZvvProvider extends AbstractHafasProvider final String type = m.group(2); if ("Bus-NF".equals(type)) - return newLine('B' + number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('B', number, Line.Attr.WHEEL_CHAIR_ACCESS); if ("Tro-NF".equals(type)) - return newLine('B' + number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('B', number, Line.Attr.WHEEL_CHAIR_ACCESS); if ("Trm-NF".equals(type)) - return newLine('T' + number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('T', number, Line.Attr.WHEEL_CHAIR_ACCESS); if (type.length() > 0) { final char normalizedType = normalizeType(type); if (normalizedType != 0) - return newLine(normalizedType + number); + return newLine(normalizedType, number); } throw new IllegalStateException("cannot normalize type " + type + " number " + number + " line#type " + lineAndType);