Philadelphia directions

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@602 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-05-04 14:53:53 +00:00
parent 194a2738f0
commit a8f006821f
3 changed files with 36 additions and 11 deletions

View file

@ -587,7 +587,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
{ {
final String id = XmlPullUtil.attr(pp, "id"); final String id = XmlPullUtil.attr(pp, "id");
XmlPullUtil.enter(pp); XmlPullUtil.enter(pp, "Connection");
while (pp.getName().equals("RtStateList")) while (pp.getName().equals("RtStateList"))
XmlPullUtil.next(pp); XmlPullUtil.next(pp);
XmlPullUtil.enter(pp, "Overview"); XmlPullUtil.enter(pp, "Overview");
@ -614,12 +614,12 @@ public abstract class AbstractHafasProvider implements NetworkProvider
XmlPullUtil.exit(pp, "Overview"); XmlPullUtil.exit(pp, "Overview");
XmlPullUtil.enter(pp, "ConSectionList");
final List<Connection.Part> parts = new ArrayList<Connection.Part>(4); final List<Connection.Part> parts = new ArrayList<Connection.Part>(4);
Date firstDepartureTime = null; Date firstDepartureTime = null;
Date lastArrivalTime = null; Date lastArrivalTime = null;
XmlPullUtil.enter(pp, "ConSectionList");
while (XmlPullUtil.test(pp, "ConSection")) while (XmlPullUtil.test(pp, "ConSection"))
{ {
XmlPullUtil.enter(pp, "ConSection"); XmlPullUtil.enter(pp, "ConSection");
@ -736,7 +736,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
XmlPullUtil.exit(pp, "BasicStop"); XmlPullUtil.exit(pp, "BasicStop");
XmlPullUtil.exit(pp, "Arrival"); XmlPullUtil.exit(pp, "Arrival");
XmlPullUtil.exit(pp); XmlPullUtil.exit(pp, "ConSection");
if (min == 0 || line != null) if (min == 0 || line != null)
{ {
@ -761,9 +761,9 @@ public abstract class AbstractHafasProvider implements NetworkProvider
lastArrivalTime = arrivalTime.getTime(); lastArrivalTime = arrivalTime.getTime();
} }
XmlPullUtil.exit(pp); XmlPullUtil.exit(pp, "ConSectionList");
XmlPullUtil.exit(pp); XmlPullUtil.exit(pp, "Connection");
connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null)); connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, departure, arrival, parts, null));
} }

View file

@ -42,13 +42,12 @@ public class SeptaProvider extends AbstractHafasProvider
{ {
public static final NetworkId NETWORK_ID = NetworkId.SEPTA; public static final NetworkId NETWORK_ID = NetworkId.SEPTA;
private static final String API_BASE = "http://airs1.septa.org/bin/"; private static final String API_BASE = "http://airs1.septa.org/bin/";
private static final String API_URI = "http://airs1.septa.org/bin/extxml.exe";
private static final long PARSER_DAY_ROLLOVER_THRESHOLD_MS = 12 * 60 * 60 * 1000; private static final long PARSER_DAY_ROLLOVER_THRESHOLD_MS = 12 * 60 * 60 * 1000;
public SeptaProvider() public SeptaProvider()
{ {
super(API_URI, null); super(API_BASE + "query.exe/en", null);
} }
public NetworkId id() public NetworkId id()
@ -65,7 +64,7 @@ public class SeptaProvider extends AbstractHafasProvider
public boolean hasCapabilities(final Capability... capabilities) public boolean hasCapabilities(final Capability... capabilities)
{ {
for (final Capability capability : capabilities) for (final Capability capability : capabilities)
if (capability == Capability.DEPARTURES) if (capability == Capability.AUTOCOMPLETE_ONE_LINE || capability == Capability.DEPARTURES || capability == Capability.CONNECTIONS)
return true; return true;
return false; return false;
@ -113,6 +112,17 @@ public class SeptaProvider extends AbstractHafasProvider
if (ucType.equals("TRO")) if (ucType.equals("TRO"))
return 'B'; return 'B';
// from Connections:
if (ucType.equals("RAIL"))
return 'R';
if (ucType.equals("SUBWAY"))
return 'U';
if (ucType.equals("TROLLEY"))
return 'B';
return 0; return 0;
} }

View file

@ -17,13 +17,17 @@
package de.schildbach.pte.live; package de.schildbach.pte.live;
import java.util.Date;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.Test;
import de.schildbach.pte.NetworkProvider.WalkSpeed;
import de.schildbach.pte.SeptaProvider; import de.schildbach.pte.SeptaProvider;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
import de.schildbach.pte.dto.LocationType;
import de.schildbach.pte.dto.NearbyStationsResult; import de.schildbach.pte.dto.NearbyStationsResult;
import de.schildbach.pte.dto.QueryConnectionsResult;
import de.schildbach.pte.dto.QueryDeparturesResult; import de.schildbach.pte.dto.QueryDeparturesResult;
/** /**
@ -32,6 +36,7 @@ import de.schildbach.pte.dto.QueryDeparturesResult;
public class SeptaProviderLiveTest public class SeptaProviderLiveTest
{ {
private final SeptaProvider provider = new SeptaProvider(); private final SeptaProvider provider = new SeptaProvider();
private static final String ALL_PRODUCTS = "IRSUTBFC";
@Test @Test
public void autocomplete() throws Exception public void autocomplete() throws Exception
@ -52,7 +57,7 @@ public class SeptaProviderLiveTest
@Test @Test
public void nearbyStation() throws Exception public void nearbyStation() throws Exception
{ {
final NearbyStationsResult result = provider.nearbyStations("1000001", 0, 0, 0, 0); final NearbyStationsResult result = provider.nearbyStations("2090227", 0, 0, 0, 0);
System.out.println(result.stations.size() + " " + result.stations); System.out.println(result.stations.size() + " " + result.stations);
} }
@ -60,8 +65,18 @@ public class SeptaProviderLiveTest
@Test @Test
public void queryDepartures() throws Exception public void queryDepartures() throws Exception
{ {
final QueryDeparturesResult result = provider.queryDepartures("1000002", 0, false); final QueryDeparturesResult result = provider.queryDepartures("2090227", 0, false);
System.out.println(result.stationDepartures); System.out.println(result.stationDepartures);
} }
@Test
public void shortConnection() throws Exception
{
final QueryConnectionsResult result = provider.queryConnections(new Location(LocationType.STATION, 2090227, null, "Main Street"), null,
new Location(LocationType.STATION, 1015755, null, "Harbison Av + Unruh Av"), new Date(), true, ALL_PRODUCTS, WalkSpeed.NORMAL);
System.out.println(result);
final QueryConnectionsResult moreResult = provider.queryMoreConnections(result.context);
System.out.println(moreResult);
}
} }