From 5812a35d6706662bd626c4708388ca15990d58e7 Mon Sep 17 00:00:00 2001 From: "andreas.schildbach" Date: Wed, 22 Sep 2010 18:52:34 +0000 Subject: [PATCH] parse lineLink for Germany git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@179 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- src/de/schildbach/pte/BahnProvider.java | 22 ++++---- src/de/schildbach/pte/Departure.java | 7 ++- src/de/schildbach/pte/OebbProvider.java | 2 +- src/de/schildbach/pte/RmvProvider.java | 2 +- src/de/schildbach/pte/VbbProvider.java | 2 +- test/de/schildbach/pte/BahnProviderTest.java | 59 ++++++++++++-------- 6 files changed, 55 insertions(+), 39 deletions(-) diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 6a7073c7..fb78db2f 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -456,7 +456,7 @@ public final class BahnProvider implements NetworkProvider , Pattern.DOTALL); private static final Pattern P_DEPARTURES_COARSE = Pattern.compile("
\n(.+?)
", Pattern.DOTALL); static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?" // - + "\n" // + + "\n" // lineLink + "(.*?)\n" // line + "\n" // + ">>\n" // @@ -504,14 +504,16 @@ public final class BahnProvider implements NetworkProvider final Matcher mDepFine = P_DEPARTURES_FINE.matcher(mDepCoarse.group(1)); if (mDepFine.matches()) { - final String line = normalizeLine(ParserUtils.resolveEntities(mDepFine.group(1))); + final String lineLink = ParserUtils.resolveEntities(mDepFine.group(1)); - final String destination = ParserUtils.resolveEntities(mDepFine.group(2)); + final String line = normalizeLine(ParserUtils.resolveEntities(mDepFine.group(2))); + + final String destination = ParserUtils.resolveEntities(mDepFine.group(3)); final Calendar current = new GregorianCalendar(); current.setTime(currentTime); final Calendar parsed = new GregorianCalendar(); - parsed.setTime(ParserUtils.parseTime(mDepFine.group(3))); + parsed.setTime(ParserUtils.parseTime(mDepFine.group(4))); parsed.set(Calendar.YEAR, current.get(Calendar.YEAR)); parsed.set(Calendar.MONTH, current.get(Calendar.MONTH)); parsed.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH)); @@ -520,23 +522,23 @@ public final class BahnProvider implements NetworkProvider final Date plannedTime = parsed.getTime(); Date predictedTime = null; - if (mDepFine.group(4) != null) + if (mDepFine.group(5) != null) { predictedTime = plannedTime; } - else if (mDepFine.group(5) != null) + else if (mDepFine.group(6) != null) { - final int delay = Integer.parseInt(mDepFine.group(5)); + final int delay = Integer.parseInt(mDepFine.group(6)); parsed.add(Calendar.MINUTE, delay); predictedTime = parsed.getTime(); } - final String message = ParserUtils.resolveEntities(mDepFine.group(6)); + final String message = ParserUtils.resolveEntities(mDepFine.group(7)); - final String position = ParserUtils.resolveEntities(mDepFine.group(7)); + final String position = ParserUtils.resolveEntities(mDepFine.group(8)); final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line.charAt(0)) : null, - position, 0, destination, message); + lineLink, position, 0, destination, message); if (!departures.contains(dep)) departures.add(dep); } diff --git a/src/de/schildbach/pte/Departure.java b/src/de/schildbach/pte/Departure.java index 5281c0d6..bbe575b8 100644 --- a/src/de/schildbach/pte/Departure.java +++ b/src/de/schildbach/pte/Departure.java @@ -28,18 +28,20 @@ public final class Departure final public Date predictedTime; final public String line; final public int[] lineColors; + final public String lineLink; final public String position; final public int destinationId; final public String destination; final public String message; - public Departure(final Date plannedTime, final Date predictedTime, final String line, final int[] lineColors, final String position, - final int destinationId, final String destination, final String message) + public Departure(final Date plannedTime, final Date predictedTime, final String line, final int[] lineColors, final String lineLink, + final String position, final int destinationId, final String destination, final String message) { this.plannedTime = plannedTime; this.predictedTime = predictedTime; this.line = line; this.lineColors = lineColors; + this.lineLink = lineLink; this.position = position; this.destinationId = destinationId; this.destination = destination; @@ -53,6 +55,7 @@ public final class Departure this.predictedTime = null; this.line = line; this.lineColors = lineColors; + this.lineLink = null; this.position = position; this.destinationId = destinationId; this.destination = destination; diff --git a/src/de/schildbach/pte/OebbProvider.java b/src/de/schildbach/pte/OebbProvider.java index aa1432cb..d297e016 100644 --- a/src/de/schildbach/pte/OebbProvider.java +++ b/src/de/schildbach/pte/OebbProvider.java @@ -572,7 +572,7 @@ public class OebbProvider implements NetworkProvider final String position = mDepFine.group(7) != null ? "Gl. " + ParserUtils.resolveEntities(mDepFine.group(7)) : null; - final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line.charAt(0)) : null, + final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line.charAt(0)) : null, null, position, destinationId, destination, null); if (!departures.contains(dep)) diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java index c8783fd1..864c99ba 100644 --- a/src/de/schildbach/pte/RmvProvider.java +++ b/src/de/schildbach/pte/RmvProvider.java @@ -568,7 +568,7 @@ public class RmvProvider implements NetworkProvider final String position = ParserUtils.resolveEntities(ParserUtils.selectNotNull(mDepFine.group(5), mDepFine.group(6))); - final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line.charAt(0)) : null, + final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line.charAt(0)) : null, null, position, 0, destination, null); if (!departures.contains(dep)) diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java index b2c58f27..a54c01ba 100644 --- a/src/de/schildbach/pte/VbbProvider.java +++ b/src/de/schildbach/pte/VbbProvider.java @@ -589,7 +589,7 @@ public final class VbbProvider implements NetworkProvider final String destination = ParserUtils.resolveEntities(mDepFine.group(live ? 4 : 5)); - final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line) : null, position, + final Departure dep = new Departure(plannedTime, predictedTime, line, line != null ? LINES.get(line) : null, null, position, destinationId, destination, null); if (!departures.contains(dep)) departures.add(dep); diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java index 7acd122b..3678371a 100644 --- a/test/de/schildbach/pte/BahnProviderTest.java +++ b/test/de/schildbach/pte/BahnProviderTest.java @@ -51,7 +51,8 @@ public class BahnProviderTest + "
\n" // + "10:42Gl. 1"); - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(8)); // position } @Test @@ -66,8 +67,9 @@ public class BahnProviderTest + "
\n" // + "21:58 pünktl., Gl. 13"); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(8)); // position } @Test @@ -82,9 +84,10 @@ public class BahnProviderTest + "
\n" // + "07:02 ca. +5, Fährt heute nur bis Düsseldorf Hbf, Gl. 10"); - assertNotNull(m.group(5)); // delay - assertNotNull(m.group(6)); // message - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(6)); // delay + assertNotNull(m.group(7)); // message + assertNotNull(m.group(8)); // position } @Test @@ -99,8 +102,9 @@ public class BahnProviderTest + "
\n" // + "17:10 pünktl.heute Gl. 7 "); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(8)); // position } @Test @@ -115,9 +119,10 @@ public class BahnProviderTest + "
\n" // + "19:57 pünktl., Änderung im Zuglauf!heute Gl. 7 "); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(6)); // message - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(7)); // message + assertNotNull(m.group(8)); // position } @Test @@ -132,7 +137,8 @@ public class BahnProviderTest + "
\n" // + "04:52 k.A., Gl. 3"); - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(8)); // position } @Test @@ -147,8 +153,9 @@ public class BahnProviderTest + "
\n" // + "14:49 pünktl., Gl. 1,
Ersatzzug fürRB 5416"); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(8)); // position } @Test @@ -163,7 +170,8 @@ public class BahnProviderTest + "
\n" // + "10:27, Zug fällt aus,
Ersatzzug S "); - assertNotNull(m.group(6)); // message + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(7)); // message } @Test @@ -178,8 +186,9 @@ public class BahnProviderTest + "
\n" // + "00:18, Zug fällt aus, Gl. 4,
Ersatzzug RB 30535"); - assertNotNull(m.group(6)); // message - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(7)); // message + assertNotNull(m.group(8)); // position } @Test @@ -194,8 +203,9 @@ public class BahnProviderTest + "
\n" // + "10:59 pünktl., Änderung im Zuglauf!, Fährt heute nur bis Köln-Dellbrück, Gl. 1"); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(6)); // message + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(7)); // message assertNotNull(m.group(7)); // position } @@ -211,8 +221,9 @@ public class BahnProviderTest + "
\n" // + "22:58 pünktl., Gl. 2,
 Sonderzug"); - assertNotNull(m.group(4)); // onTime - assertNotNull(m.group(7)); // position + assertNotNull(m.group(1)); // lineLink + assertNotNull(m.group(5)); // onTime + assertNotNull(m.group(8)); // position } private void assertFineConnectionDetails(String s) @@ -230,9 +241,9 @@ public class BahnProviderTest // ParserUtils.printGroups(m); - assertNotNull(m.group(1)); // line - assertNotNull(m.group(2)); // destination - assertNotNull(m.group(3)); // time + assertNotNull(m.group(2)); // line + assertNotNull(m.group(3)); // destination + assertNotNull(m.group(4)); // time return m; }