parse 'no prognosis' message

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@127 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-09-03 11:50:16 +00:00
parent a9533e32a2
commit 2bae153544
2 changed files with 53 additions and 3 deletions

View file

@ -134,8 +134,8 @@ public class RmvProvider implements NetworkProvider
return (double) value / 1000000;
}
private String connectionsQueryUri(final LocationType fromType, final String from, final LocationType viaType, final String via, final LocationType toType, final String to,
final Date date, final boolean dep)
private String connectionsQueryUri(final LocationType fromType, final String from, final LocationType viaType, final String via,
final LocationType toType, final String to, final Date date, final boolean dep)
{
final DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yy");
final DateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm");
@ -441,12 +441,13 @@ public class RmvProvider implements NetworkProvider
+ "Uhr, (\\d+\\.\\d+\\.\\d+).*?" //
, Pattern.DOTALL);
private static final Pattern P_DEPARTURES_COARSE = Pattern.compile("<p class=\"sq\">\n(.+?)</p>", Pattern.DOTALL);
private static final Pattern P_DEPARTURES_FINE = Pattern.compile("" //
static final Pattern P_DEPARTURES_FINE = Pattern.compile("" //
+ "<b>\\s*(.*?)\\s*</b>.*?" // line
+ "&gt;&gt;\n" //
+ "(.*?)\n" // destination
+ "<br />\n" //
+ "<b>(\\d{1,2}:\\d{2})</b>\n" // plannedTime
+ "(?:keine Prognose verf&#252;gbar\n)?" //
+ "(?:<span class=\"red\">ca\\. (\\d{1,2}:\\d{2})</span>\n)?" // predictedTime
+ "(?:<span class=\"red\">heute Gl\\. " + ParserUtils.P_PLATFORM + "</span><br />\n)?" // predictedPosition
+ "(?:(Gl\\. " + ParserUtils.P_PLATFORM + ")<br />\n)?" // position

View file

@ -0,0 +1,49 @@
/*
* Copyright 2010 the original author or authors.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte;
import static junit.framework.Assert.assertTrue;
import java.util.regex.Matcher;
import org.junit.Test;
/**
* @author Andreas Schildbach
*/
public class RmvProviderTest
{
@Test
public void departureWithNoPrognosisMessage()
{
assertFineDepartures("<b>Bus 42 </b>\n" //
+ "&gt;&gt;\n" //
+ "Frankfurt (Main) Enkheim\n" //
+ "<br />\n" //
+ "<b>20:21</b>\n" //
+ "keine Prognose verf&#252;gbar\n" //
+ "<span class=\"red\">heute Gl. Enkheim</span><br />\n");
}
private void assertFineDepartures(String s)
{
Matcher m = RmvProvider.P_DEPARTURES_FINE.matcher(s);
assertTrue(m.matches());
// ParserUtils.printGroups(m);
}
}