wheelchair accessibility for connections

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@806 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach@gmail.com 2011-10-03 12:58:44 +00:00
parent 05bdc80e14
commit 6756794c66
2 changed files with 49 additions and 4 deletions

View file

@ -27,10 +27,12 @@ import java.util.Currency;
import java.util.Date; import java.util.Date;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.TimeZone; import java.util.TimeZone;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -1558,7 +1560,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
InputStream is = null; InputStream is = null;
try try
{ {
is = ParserUtils.scrapeInputStream(uri, null, "HASESSIONID", 3); is = ParserUtils.scrapeInputStream(uri, null, "NSC_", 3);
return queryConnections(uri, is); return queryConnections(uri, is);
} }
catch (final XmlPullParserException x) catch (final XmlPullParserException x)
@ -1577,7 +1579,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
InputStream is = null; InputStream is = null;
try try
{ {
is = ParserUtils.scrapeInputStream(uri, null, "HASESSIONID", 3); is = ParserUtils.scrapeInputStream(uri, null, "NSC_", 3);
return queryConnections(uri, is); return queryConnections(uri, is);
} }
catch (final XmlPullParserException x) catch (final XmlPullParserException x)
@ -1596,6 +1598,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
private QueryConnectionsResult queryConnections(final String uri, final InputStream is) throws XmlPullParserException, IOException private QueryConnectionsResult queryConnections(final String uri, final InputStream is) throws XmlPullParserException, IOException
{ {
// System.out.println(uri);
final XmlPullParser pp = parserFactory.newPullParser(); final XmlPullParser pp = parserFactory.newPullParser();
pp.setInput(is, null); pp.setInput(is, null);
final ResultHeader header = enterItdRequest(pp); final ResultHeader header = enterItdRequest(pp);
@ -1836,8 +1840,6 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
+ XmlPullUtil.attr(pp, "project"); + XmlPullUtil.attr(pp, "project");
XmlPullUtil.exit(pp, "itdMeansOfTransport"); XmlPullUtil.exit(pp, "itdMeansOfTransport");
final Line line = new Line(lineId, lineLabel, lineColors(lineLabel));
if (XmlPullUtil.test(pp, "itdRBLControlled")) if (XmlPullUtil.test(pp, "itdRBLControlled"))
XmlPullUtil.next(pp); XmlPullUtil.next(pp);
if (XmlPullUtil.test(pp, "itdInfoTextList")) if (XmlPullUtil.test(pp, "itdInfoTextList"))
@ -1886,6 +1888,31 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
if (XmlPullUtil.test(pp, "itdPathCoordinates")) if (XmlPullUtil.test(pp, "itdPathCoordinates"))
path = processItdPathCoordinates(pp); path = processItdPathCoordinates(pp);
final Set<Line.Attr> lineAttrs = new HashSet<Line.Attr>();
if (XmlPullUtil.test(pp, "genAttrList"))
{
XmlPullUtil.enter(pp, "genAttrList");
while (XmlPullUtil.test(pp, "genAttrElem"))
{
XmlPullUtil.enter(pp, "genAttrElem");
XmlPullUtil.enter(pp, "name");
final String name = pp.getText();
XmlPullUtil.exit(pp, "name");
XmlPullUtil.enter(pp, "value");
final String value = pp.getText();
XmlPullUtil.exit(pp, "value");
XmlPullUtil.exit(pp, "genAttrElem");
// System.out.println("genAttrElem: name='" + name + "' value='" + value + "'");
if ("PlanWheelChairAccess".equals(name) && "1".equals(value))
lineAttrs.add(Line.Attr.WHEEL_CHAIR_ACCESS);
}
XmlPullUtil.exit(pp, "genAttrList");
}
final Line line = new Line(lineId, lineLabel, lineColors(lineLabel), lineAttrs);
parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, arrivalPosition, parts.add(new Connection.Trip(line, destination, departureTime, departurePosition, departure, arrivalTime, arrivalPosition,
arrival, intermediateStops, path)); arrival, intermediateStops, path));
} }

View file

@ -18,30 +18,48 @@
package de.schildbach.pte.dto; package de.schildbach.pte.dto;
import java.io.Serializable; import java.io.Serializable;
import java.util.Set;
/** /**
* @author Andreas Schildbach * @author Andreas Schildbach
*/ */
public final class Line implements Serializable, Comparable<Line> public final class Line implements Serializable, Comparable<Line>
{ {
public enum Attr
{
WHEEL_CHAIR_ACCESS
}
private static final long serialVersionUID = -5642533805998375070L; private static final long serialVersionUID = -5642533805998375070L;
final public String id; final public String id;
final private transient char product; // TODO make true field final private transient char product; // TODO make true field
final public String label; final public String label;
final public int[] colors; final public int[] colors;
final private Set<Attr> attrs;
private static final String PRODUCT_ORDER = "IRSUTBPFC?"; private static final String PRODUCT_ORDER = "IRSUTBPFC?";
public Line(final String id, final String label, final int[] colors) public Line(final String id, final String label, final int[] colors)
{
this(id, label, colors, null);
}
public Line(final String id, final String label, final int[] colors, final Set<Attr> attrs)
{ {
this.id = id; this.id = id;
this.label = label; this.label = label;
this.colors = colors; this.colors = colors;
this.attrs = attrs;
product = label != null ? label.charAt(0) : '?'; product = label != null ? label.charAt(0) : '?';
} }
public boolean hasAttr(final Attr attr)
{
return attrs != null && attrs.contains(attr);
}
@Override @Override
public String toString() public String toString()
{ {