diff --git a/enabler/src/de/schildbach/pte/NetworkId.java b/enabler/src/de/schildbach/pte/NetworkId.java index 0600fa81..ba04d9f5 100644 --- a/enabler/src/de/schildbach/pte/NetworkId.java +++ b/enabler/src/de/schildbach/pte/NetworkId.java @@ -29,7 +29,7 @@ public enum NetworkId DB, BVG, VBB, NVV, BAYERN, MVV, INVG, AVV, VGN, VVM, VMV, HVV, SH, GVH, BSVAG, VBN, NASA, VVO, VMS, VGS, VRR, VRS, MVG, NPH, VRN, VVS, DING, KVV, VAGFR, NVBW, VVV, // Austria - OEBB, VAO, VOR, WIEN, LINZ, SVV, VVT, IVB, STV, + OEBB, VAO, VOR, WIEN, LINZ, VVT, IVB, STV, // Switzerland SBB, BVB, VBL, ZVV, diff --git a/enabler/src/de/schildbach/pte/SvvProvider.java b/enabler/src/de/schildbach/pte/SvvProvider.java deleted file mode 100644 index 95c8cdcb..00000000 --- a/enabler/src/de/schildbach/pte/SvvProvider.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2010-2015 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 . - */ - -package de.schildbach.pte; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Nullable; - -import com.google.common.base.Charsets; - -import de.schildbach.pte.dto.Line; -import de.schildbach.pte.dto.Product; -import de.schildbach.pte.dto.Style; - -/** - * @author Andreas Schildbach - */ -public class SvvProvider extends AbstractEfaProvider -{ - private final static String API_BASE = "http://efa.svv-info.at/svv/"; - - public SvvProvider() - { - super(NetworkId.SVV, API_BASE); - - setRequestUrlEncoding(Charsets.UTF_8); - setStyles(STYLES); - } - - @Override - protected Line parseLine(final @Nullable String id, final @Nullable String network, final @Nullable String mot, final @Nullable String symbol, - final @Nullable String name, final @Nullable String longName, final @Nullable String trainType, final @Nullable String trainNum, - final @Nullable String trainName) - { - if ("1".equals(mot)) - { - if ("S1/11".equals(symbol)) // Salzburger Lokalbahn - return new Line(id, network, Product.SUBURBAN_TRAIN, "S1/11"); - } - - return super.parseLine(id, network, mot, symbol, name, longName, trainType, trainNum, trainName); - } - - private static final Map STYLES = new HashMap(); - - static - { - STYLES.put("svv|SS1", new Style(Style.parseColor("#b61d33"), Style.WHITE)); - STYLES.put("svv|SS2", new Style(Style.parseColor("#0069b4"), Style.WHITE)); - STYLES.put("svv|SS3", new Style(Style.parseColor("#0aa537"), Style.WHITE)); - STYLES.put("svv|SS4", new Style(Style.parseColor("#a862a4"), Style.WHITE)); - STYLES.put("svv|SS11", new Style(Style.parseColor("#b61d33"), Style.WHITE)); - - STYLES.put("svv|B1", new Style(Style.parseColor("#e3000f"), Style.WHITE)); - STYLES.put("svv|B2", new Style(Style.parseColor("#0069b4"), Style.WHITE)); - STYLES.put("svv|B3", new Style(Style.parseColor("#956b27"), Style.WHITE)); - STYLES.put("svv|B4", new Style(Style.parseColor("#ffcc00"), Style.WHITE)); - STYLES.put("svv|B5", new Style(Style.parseColor("#04bbee"), Style.WHITE)); - STYLES.put("svv|B6", new Style(Style.parseColor("#85bc22"), Style.WHITE)); - STYLES.put("svv|B7", new Style(Style.parseColor("#009a9b"), Style.WHITE)); - STYLES.put("svv|B8", new Style(Style.parseColor("#f39100"), Style.WHITE)); - STYLES.put("svv|B10", new Style(Style.parseColor("#f8baa2"), Style.BLACK)); - STYLES.put("svv|B12", new Style(Style.parseColor("#b9dfde"), Style.WHITE)); - STYLES.put("svv|B14", new Style(Style.parseColor("#cfe09a"), Style.WHITE)); - } -} diff --git a/enabler/src/de/schildbach/pte/VaoProvider.java b/enabler/src/de/schildbach/pte/VaoProvider.java index fc4ccc7c..87389c52 100644 --- a/enabler/src/de/schildbach/pte/VaoProvider.java +++ b/enabler/src/de/schildbach/pte/VaoProvider.java @@ -20,6 +20,8 @@ package de.schildbach.pte; import java.io.IOException; import java.util.Date; import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -35,6 +37,7 @@ import de.schildbach.pte.dto.Product; import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryTripsContext; import de.schildbach.pte.dto.QueryTripsResult; +import de.schildbach.pte.dto.Style; import de.schildbach.pte.dto.SuggestLocationsResult; /** @@ -55,6 +58,7 @@ public class VaoProvider extends AbstractHafasProvider setJsonApiClient("{\"id\":\"VAO\",\"l\":\"vs_vvv\"}"); setJsonApiAuthorization(jsonApiAuthorization); setJsonNearbyLocationsEncoding(Charsets.UTF_8); + setStyles(STYLES); } @Override @@ -133,4 +137,29 @@ public class VaoProvider extends AbstractHafasProvider return jsonTripSearch(jsonContext.from, jsonContext.to, jsonContext.date, jsonContext.dep, jsonContext.products, later ? jsonContext.laterContext : jsonContext.earlierContext); } + + private static final Map STYLES = new HashMap(); + + static + { + // Salzburg S-Bahn + STYLES.put("Salzburg AG|SS1", new Style(Style.parseColor("#b61d33"), Style.WHITE)); + STYLES.put("Salzburg AG|SS11", new Style(Style.parseColor("#b61d33"), Style.WHITE)); + STYLES.put("OEBB|SS2", new Style(Style.parseColor("#0069b4"), Style.WHITE)); + STYLES.put("OEBB|SS3", new Style(Style.parseColor("#0aa537"), Style.WHITE)); + STYLES.put("BLB|SS4", new Style(Style.parseColor("#a862a4"), Style.WHITE)); + + // Salzburg Bus + STYLES.put("Salzburg AG|B1", new Style(Style.parseColor("#e3000f"), Style.WHITE)); + STYLES.put("Salzburg AG|B2", new Style(Style.parseColor("#0069b4"), Style.WHITE)); + STYLES.put("Salzburg AG|B3", new Style(Style.parseColor("#956b27"), Style.WHITE)); + STYLES.put("Salzburg AG|B4", new Style(Style.parseColor("#ffcc00"), Style.WHITE)); + STYLES.put("Salzburg AG|B5", new Style(Style.parseColor("#04bbee"), Style.WHITE)); + STYLES.put("Salzburg AG|B6", new Style(Style.parseColor("#85bc22"), Style.WHITE)); + STYLES.put("Salzburg AG|B7", new Style(Style.parseColor("#009a9b"), Style.WHITE)); + STYLES.put("Salzburg AG|B8", new Style(Style.parseColor("#f39100"), Style.WHITE)); + STYLES.put("Salzburg AG|B10", new Style(Style.parseColor("#f8baa2"), Style.BLACK)); + STYLES.put("Salzburg AG|B12", new Style(Style.parseColor("#b9dfde"), Style.WHITE)); + STYLES.put("Salzburg AG|B14", new Style(Style.parseColor("#cfe09a"), Style.WHITE)); + } } diff --git a/enabler/test/de/schildbach/pte/live/SvvProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/SvvProviderLiveTest.java deleted file mode 100644 index 58dd3739..00000000 --- a/enabler/test/de/schildbach/pte/live/SvvProviderLiveTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright 2010-2015 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 . - */ - -package de.schildbach.pte.live; - -import static org.hamcrest.CoreMatchers.hasItem; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; - -import java.util.Date; - -import org.junit.Test; - -import de.schildbach.pte.NetworkProvider.Accessibility; -import de.schildbach.pte.NetworkProvider.WalkSpeed; -import de.schildbach.pte.SvvProvider; -import de.schildbach.pte.dto.Location; -import de.schildbach.pte.dto.LocationType; -import de.schildbach.pte.dto.NearbyLocationsResult; -import de.schildbach.pte.dto.Product; -import de.schildbach.pte.dto.QueryDeparturesResult; -import de.schildbach.pte.dto.QueryTripsResult; -import de.schildbach.pte.dto.SuggestLocationsResult; - -/** - * @author Andreas Schildbach - */ -public class SvvProviderLiveTest extends AbstractProviderLiveTest -{ - public SvvProviderLiveTest() - { - super(new SvvProvider()); - } - - @Test - public void nearbyStations() throws Exception - { - final NearbyLocationsResult result = queryNearbyStations(new Location(LocationType.STATION, "60650002")); - print(result); - } - - @Test - public void nearbyStationsByCoordinate() throws Exception - { - final NearbyLocationsResult result = queryNearbyStations(Location.coord(47809195, 13054919)); - print(result); - } - - @Test - public void queryDepartures() throws Exception - { - final QueryDeparturesResult result = queryDepartures("60650002", false); - print(result); - } - - @Test - public void suggestLocationsIncomplete() throws Exception - { - final SuggestLocationsResult result = suggestLocations("Kur"); - print(result); - } - - @Test - public void suggestLocationsWithUmlaut() throws Exception - { - final SuggestLocationsResult result = suggestLocations("Salzburg Süd"); - print(result); - assertThat(result.getLocations(), hasItem(new Location(LocationType.STATION, "60650458"))); - } - - @Test - public void suggestLocationsAddress() throws Exception - { - final SuggestLocationsResult result = suggestLocations("Kaigasse 10"); - print(result); - } - - @Test - public void suggestLocationsCoverage() throws Exception - { - final SuggestLocationsResult salzburgResult = suggestLocations("Salzburg Süd"); - print(salzburgResult); - assertThat(salzburgResult.getLocations(), hasItem(new Location(LocationType.STATION, "60650458"))); - - final SuggestLocationsResult strasswalchenResult = suggestLocations("Straßwalchen West"); - print(strasswalchenResult); - assertThat(strasswalchenResult.getLocations(), hasItem(new Location(LocationType.STATION, "60656483"))); - - final SuggestLocationsResult schwarzachResult = suggestLocations("Schwarzach Abtsdorf"); - print(schwarzachResult); - assertThat(schwarzachResult.getLocations(), hasItem(new Location(LocationType.STATION, "60656614"))); - - final SuggestLocationsResult trimmelkamResult = suggestLocations("Trimmelkam"); - print(trimmelkamResult); - assertThat(trimmelkamResult.getLocations(), hasItem(new Location(LocationType.STATION, "60640776"))); - } - - @Test - public void shortTrip() throws Exception - { - final QueryTripsResult result = queryTrips(new Location(LocationType.STATION, "60650021", 47797036, 13053608, "Salzburg", "Justizgebäude"), - null, new Location(LocationType.STATION, "60650022", 47793760, 13059338, "Salzburg", "Akademiestraße"), new Date(), true, - Product.ALL, WalkSpeed.NORMAL, Accessibility.NEUTRAL); - print(result); - assertEquals(QueryTripsResult.Status.OK, result.status); - assertTrue(result.trips.size() > 0); - - if (!result.context.canQueryLater()) - return; - - final QueryTripsResult laterResult = queryMoreTrips(result.context, true); - print(laterResult); - - if (!laterResult.context.canQueryLater()) - return; - - final QueryTripsResult later2Result = queryMoreTrips(laterResult.context, true); - print(later2Result); - - if (!later2Result.context.canQueryEarlier()) - return; - - final QueryTripsResult earlierResult = queryMoreTrips(later2Result.context, false); - print(earlierResult); - } -} diff --git a/enabler/test/de/schildbach/pte/live/VaoProviderLiveTest.java b/enabler/test/de/schildbach/pte/live/VaoProviderLiveTest.java index e8f77674..46245524 100644 --- a/enabler/test/de/schildbach/pte/live/VaoProviderLiveTest.java +++ b/enabler/test/de/schildbach/pte/live/VaoProviderLiveTest.java @@ -17,7 +17,10 @@ package de.schildbach.pte.live; +import static org.hamcrest.CoreMatchers.hasItem; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; import java.util.Date; @@ -58,6 +61,13 @@ public class VaoProviderLiveTest extends AbstractProviderLiveTest print(result); } + @Test + public void nearbyStationsByCoordinateSalzburg() throws Exception + { + final NearbyLocationsResult result = queryNearbyStations(Location.coord(47809195, 13054919)); + print(result); + } + @Test public void queryDepartures() throws Exception { @@ -66,6 +76,13 @@ public class VaoProviderLiveTest extends AbstractProviderLiveTest assertEquals(QueryDeparturesResult.Status.OK, result.status); } + @Test + public void queryDeparturesSalzburg() throws Exception + { + final QueryDeparturesResult result = queryDepartures("455000200", false); + print(result); + } + @Test public void queryDeparturesInvalidStation() throws Exception { @@ -95,6 +112,26 @@ public class VaoProviderLiveTest extends AbstractProviderLiveTest print(result); } + @Test + public void suggestLocationsCoverage() throws Exception + { + final SuggestLocationsResult salzburgResult = suggestLocations("Salzburg Süd"); + print(salzburgResult); + assertThat(salzburgResult.getLocations(), hasItem(new Location(LocationType.STATION, "60650458"))); + + final SuggestLocationsResult strasswalchenResult = suggestLocations("Straßwalchen West"); + print(strasswalchenResult); + assertThat(strasswalchenResult.getLocations(), hasItem(new Location(LocationType.STATION, "60656483"))); + + final SuggestLocationsResult schwarzachResult = suggestLocations("Schwarzach Abtsdorf"); + print(schwarzachResult); + assertThat(schwarzachResult.getLocations(), hasItem(new Location(LocationType.STATION, "60656614"))); + + final SuggestLocationsResult trimmelkamResult = suggestLocations("Trimmelkam"); + print(trimmelkamResult); + assertThat(trimmelkamResult.getLocations(), hasItem(new Location(LocationType.STATION, "60640776"))); + } + @Test public void shortTripFeldkirch() throws Exception { @@ -131,6 +168,36 @@ public class VaoProviderLiveTest extends AbstractProviderLiveTest print(earlierResult); } + @Test + public void shortTripSalzburg() throws Exception + { + final QueryTripsResult result = queryTrips( + new Location(LocationType.STATION, "455000900", 47808976, 13056409, "Salzburg", "Vogelweiderstraße"), null, + new Location(LocationType.STATION, "455084400", 47811556, 13050278, "Salzburg", "Merianstraße"), new Date(), true, Product.ALL, + WalkSpeed.NORMAL, Accessibility.NEUTRAL); + print(result); + assertEquals(QueryTripsResult.Status.OK, result.status); + assertTrue(result.trips.size() > 0); + + if (!result.context.canQueryLater()) + return; + + final QueryTripsResult laterResult = queryMoreTrips(result.context, true); + print(laterResult); + + if (!laterResult.context.canQueryLater()) + return; + + final QueryTripsResult later2Result = queryMoreTrips(laterResult.context, true); + print(later2Result); + + if (!later2Result.context.canQueryEarlier()) + return; + + final QueryTripsResult earlierResult = queryMoreTrips(later2Result.context, false); + print(earlierResult); + } + @Test public void tripAddressToStation() throws Exception {