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); + } }