fixed parsing of departure with ersatzzug message

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@156 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-09-10 12:47:28 +00:00
parent 45724ce974
commit 50cc56d6ab
2 changed files with 22 additions and 1 deletions

View file

@ -458,6 +458,7 @@ public final class BahnProvider implements NetworkProvider
+ "(?:, <span class=\"red\">([^<]*)</span>)?" // message + "(?:, <span class=\"red\">([^<]*)</span>)?" // message
+ "(?:(?:,&nbsp;)?(?:<span class=\"red\">heute )?(Gl\\. " + ParserUtils.P_PLATFORM + ")(?:\\s*</span>)?)?" // position + "(?:(?:,&nbsp;)?(?:<span class=\"red\">heute )?(Gl\\. " + ParserUtils.P_PLATFORM + ")(?:\\s*</span>)?)?" // position
+ "(?:,<br/><a[^>]*><span class=\"red\">[^<]*</a></span>)?" // (ersatzzug message) + "(?:,<br/><a[^>]*><span class=\"red\">[^<]*</a></span>)?" // (ersatzzug message)
+ "(?:,<br/><span class=\"red\">[^<]*<a[^>]*>[^<]*</a></span>)?" // (ersatzzug message)
, Pattern.DOTALL); , Pattern.DOTALL);
private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)"); private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)");

View file

@ -66,6 +66,7 @@ public class BahnProviderTest
+ "<br />\n" // + "<br />\n" //
+ "<span class=\"bold\">21:58</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>,&nbsp;Gl. 13"); + "<span class=\"bold\">21:58</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>,&nbsp;Gl. 13");
assertNotNull(m.group(4)); // onTime
assertNotNull(m.group(7)); // position assertNotNull(m.group(7)); // position
} }
@ -81,6 +82,7 @@ public class BahnProviderTest
+ "<br />\n" // + "<br />\n" //
+ "<span class=\"bold\">07:02</span>&nbsp;<span class=\"red\">ca. +5</span>, <span class=\"red\">F&#228;hrt heute nur bis&nbsp;D&#252;sseldorf Hbf</span>,&nbsp;Gl. 10"); + "<span class=\"bold\">07:02</span>&nbsp;<span class=\"red\">ca. +5</span>, <span class=\"red\">F&#228;hrt heute nur bis&nbsp;D&#252;sseldorf Hbf</span>,&nbsp;Gl. 10");
assertNotNull(m.group(5)); // delay
assertNotNull(m.group(6)); // message assertNotNull(m.group(6)); // message
assertNotNull(m.group(7)); // position assertNotNull(m.group(7)); // position
} }
@ -97,6 +99,7 @@ public class BahnProviderTest
+ "<br />\n" // + "<br />\n" //
+ "<span class=\"bold\">17:10</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>,&nbsp;<span class=\"red\">heute Gl. 7 </span>"); + "<span class=\"bold\">17:10</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>,&nbsp;<span class=\"red\">heute Gl. 7 </span>");
assertNotNull(m.group(4)); // onTime
assertNotNull(m.group(7)); // position assertNotNull(m.group(7)); // position
} }
@ -112,6 +115,7 @@ public class BahnProviderTest
+ "<br />\n" // + "<br />\n" //
+ "<span class=\"bold\">19:57</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>, <span class=\"red\">&#196;nderung im Zuglauf!</span>,&nbsp;<span class=\"red\">heute Gl. 7 </span>"); + "<span class=\"bold\">19:57</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>, <span class=\"red\">&#196;nderung im Zuglauf!</span>,&nbsp;<span class=\"red\">heute Gl. 7 </span>");
assertNotNull(m.group(4)); // onTime
assertNotNull(m.group(6)); // message assertNotNull(m.group(6)); // message
assertNotNull(m.group(7)); // position assertNotNull(m.group(7)); // position
} }
@ -162,6 +166,22 @@ public class BahnProviderTest
assertNotNull(m.group(7)); // position assertNotNull(m.group(7)); // position
} }
@Test
public void departureWithErsatzzugMessage()
{
final Matcher m = assertFineDepartures("" //
+ "<a href=\"http://mobile.bahn.de/bin/mobil/traininfo.exe/dox/606621/948269/912326/253956/80/si=591375&amp;bt=dep&amp;ti=14:28&amp;pt=14:28&amp;p=1111111111&amp;date=10.09.10&amp;max=10&amp;rt=1&amp;&amp;\">\n" //
+ "<span class=\"bold\">RB 93328</span>\n" //
+ "</a>\n" //
+ "&gt;&gt;\n" //
+ "M&#252;nchen Hbf Gl.27-36\n" //
+ "<br />\n" //
+ "<span class=\"bold\">14:49</span>&nbsp;<span class=\"green bold\">p&#252;nktl.</span>,&nbsp;Gl. 1,<br/><span class=\"red\">Ersatzzug f&#252;r<a class=\"red underline\" href=\"http://mobile.bahn.de/bin/mobil/traininfo.exe/dox/611619/369020/735680/163967/80?ld=96159&amp;rt=1&amp;use_realtime_filter=1&amp;date=10.09.10&amp;time=14:49&amp;station_evaId=8000220&amp;station_type=dep&amp;\">RB 5416</a></span>");
assertNotNull(m.group(4)); // onTime
assertNotNull(m.group(7)); // position
}
private void assertFineConnectionDetails(String s) private void assertFineConnectionDetails(String s)
{ {
Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s); Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s);
@ -175,7 +195,7 @@ public class BahnProviderTest
Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s); Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s);
assertTrue(m.matches()); assertTrue(m.matches());
ParserUtils.printGroups(m); // ParserUtils.printGroups(m);
assertNotNull(m.group(1)); // line assertNotNull(m.group(1)); // line
assertNotNull(m.group(2)); // destination assertNotNull(m.group(2)); // destination