diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java
index ab03c868..c1e9545e 100644
--- a/src/de/schildbach/pte/AbstractHafasProvider.java
+++ b/src/de/schildbach/pte/AbstractHafasProvider.java
@@ -64,6 +64,11 @@ public abstract class AbstractHafasProvider implements NetworkProvider
this.accessId = accessId;
}
+ protected String[] splitNameAndPlace(final String name)
+ {
+ return new String[] { null, name };
+ }
+
private final String wrap(final String request)
{
return "" //
@@ -766,7 +771,8 @@ public abstract class AbstractHafasProvider implements NetworkProvider
parsedLat = Integer.parseInt(mFineCoords.group(2));
}
- stations.add(new Station(parsedId, null, parsedName, null, parsedLat, parsedLon, 0, null, null));
+ final String[] nameAndPlace = splitNameAndPlace(parsedName);
+ stations.add(new Station(parsedId, nameAndPlace[0], nameAndPlace[1], parsedName, parsedLat, parsedLon, 0, null, null));
}
else
{
diff --git a/src/de/schildbach/pte/RmvProvider.java b/src/de/schildbach/pte/RmvProvider.java
index 8fc60318..80d83633 100644
--- a/src/de/schildbach/pte/RmvProvider.java
+++ b/src/de/schildbach/pte/RmvProvider.java
@@ -70,6 +70,19 @@ public class RmvProvider extends AbstractHafasProvider
return false;
}
+ private static final String[] PLACES = { "Frankfurt (Main)", "Offenbach (Main)", "Mainz", "Wiesbaden", "Marburg", "Kassel", "Hanau", "Göttingen",
+ "Darmstadt", "Aschaffenburg" };
+
+ @Override
+ protected String[] splitNameAndPlace(final String name)
+ {
+ for (final String place : PLACES)
+ if (name.startsWith(place + " "))
+ return new String[] { place, name.substring(place.length() + 1) };
+
+ return super.splitNameAndPlace(name);
+ }
+
private static final String NAME_URL = API_BASE + "stboard.exe/dox?input=";
private static final Pattern P_SINGLE_NAME = Pattern.compile(".*.*",
Pattern.DOTALL);
@@ -522,7 +535,8 @@ public class RmvProvider extends AbstractHafasProvider
}
}
- return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, null, location), departures, null);
+ final String[] nameAndPlace = splitNameAndPlace(location);
+ return new QueryDeparturesResult(new Location(LocationType.STATION, locationId, nameAndPlace[0], nameAndPlace[1]), departures, null);
}
else
{
diff --git a/test/de/schildbach/pte/live/RmvProviderLiveTest.java b/test/de/schildbach/pte/live/RmvProviderLiveTest.java
index e637ae5f..5f4577c3 100644
--- a/test/de/schildbach/pte/live/RmvProviderLiveTest.java
+++ b/test/de/schildbach/pte/live/RmvProviderLiveTest.java
@@ -14,12 +14,14 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
package de.schildbach.pte.live;
import org.junit.Test;
import de.schildbach.pte.RmvProvider;
import de.schildbach.pte.dto.NearbyStationsResult;
+import de.schildbach.pte.dto.QueryDeparturesResult;
/**
* @author Andreas Schildbach
@@ -35,4 +37,12 @@ public class RmvProviderLiveTest
System.out.println(result.stations.size() + " " + result.stations);
}
+
+ @Test
+ public void departures() throws Exception
+ {
+ final QueryDeparturesResult queryDepartures = provider.queryDepartures("3000001", 0);
+
+ System.out.println(queryDepartures.departures);
+ }
}