fare info in connection details

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@371 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-12-01 21:59:23 +00:00
parent 2cd371a3f2
commit 23da0f645e
9 changed files with 85 additions and 12 deletions

View file

@ -21,6 +21,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
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;
@ -38,6 +39,7 @@ import org.xmlpull.v1.XmlPullParserFactory;
import de.schildbach.pte.dto.Connection; import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure; import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Fare;
import de.schildbach.pte.dto.GetConnectionDetailsResult; import de.schildbach.pte.dto.GetConnectionDetailsResult;
import de.schildbach.pte.dto.Line; import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Location; import de.schildbach.pte.dto.Location;
@ -1151,8 +1153,25 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.exit(pp, "itdPartialRouteList"); XmlPullUtil.exit(pp, "itdPartialRouteList");
connections Fare fare = null;
.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts)); if (XmlPullUtil.test(pp, "itdFare") && !pp.isEmptyElementTag())
{
XmlPullUtil.enter(pp, "itdFare");
if (XmlPullUtil.test(pp, "itdSingleTicket"))
{
final String net = XmlPullUtil.attr(pp, "net");
final Currency currency = Currency.getInstance(XmlPullUtil.attr(pp, "currency"));
final float fareAdult = XmlPullUtil.floatAttr(pp, "fareAdult");
final float fareChild = XmlPullUtil.floatAttr(pp, "fareChild");
final String unitName = XmlPullUtil.attr(pp, "unitName");
final int unitsAdult = XmlPullUtil.intAttr(pp, "unitsAdult");
final int unitsChild = XmlPullUtil.intAttr(pp, "unitsChild");
fare = new Fare(net, currency, unitName, fareAdult, fareChild, unitsAdult, unitsChild);
}
XmlPullUtil.exit(pp, "itdFare");
}
connections.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival,
parts, fare));
XmlPullUtil.exit(pp, "itdRoute"); XmlPullUtil.exit(pp, "itdRoute");
} }

View file

@ -453,7 +453,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
XmlPullUtil.exit(pp); XmlPullUtil.exit(pp);
connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, null, null, departure.id, departure.name, arrival.id, connections.add(new Connection(id, null, firstDepartureTime, lastArrivalTime, null, null, departure.id, departure.name, arrival.id,
arrival.name, parts)); arrival.name, parts, null));
} }
XmlPullUtil.exit(pp); XmlPullUtil.exit(pp);

View file

@ -276,7 +276,7 @@ public final class BahnProvider extends AbstractHafasProvider
else else
line = null; line = null;
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime, final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
line, line != null ? lineColors(line) : null, 0, from.name, 0, to.name, null); line, line != null ? lineColors(line) : null, 0, from.name, 0, to.name, null, null);
connections.add(connection); connections.add(connection);
} }
else else
@ -424,7 +424,7 @@ public final class BahnProvider extends AbstractHafasProvider
throw new IllegalStateException("could not parse all parts of:\n" + page + "\n" + parts); throw new IllegalStateException("could not parse all parts of:\n" + page + "\n" + parts);
return new GetConnectionDetailsResult(new Date(), new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime, return new GetConnectionDetailsResult(new Date(), new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, firstDepartureTime,
lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts)); lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts, null));
} }
else else
{ {

View file

@ -282,7 +282,7 @@ public final class BvgProvider implements NetworkProvider
arrivalTime = ParserUtils.addDays(arrivalTime, 1); arrivalTime = ParserUtils.addDays(arrivalTime, 1);
final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4))); final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4)));
final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime, final Connection connection = new Connection(AbstractHafasProvider.extractConnectionId(link), link, departureTime, arrivalTime,
line, line != null ? LINES.get(line.charAt(0)) : null, 0, from.name, 0, to.name, null); line, line != null ? LINES.get(line.charAt(0)) : null, 0, from.name, 0, to.name, null, null);
connections.add(connection); connections.add(connection);
} }
else else
@ -429,7 +429,7 @@ public final class BvgProvider implements NetworkProvider
if (firstDepartureTime != null && lastArrivalTime != null) if (firstDepartureTime != null && lastArrivalTime != null)
return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri, return new GetConnectionDetailsResult(currentDate, new Connection(AbstractHafasProvider.extractConnectionId(uri), uri,
firstDepartureTime, lastArrivalTime, null, null, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts)); firstDepartureTime, lastArrivalTime, null, null, firstDepartureId, firstDeparture, lastArrivalId, lastArrival, parts, null));
else else
return new GetConnectionDetailsResult(currentDate, null); return new GetConnectionDetailsResult(currentDate, null);
} }

View file

@ -373,7 +373,7 @@ public class OebbProvider extends AbstractHafasProvider
final String link = allDetailsUri; // TODO use print link? final String link = allDetailsUri; // TODO use print link?
final Connection connection = new Connection(id, link, overviewDepartureTime, overviewArrivalTime, null, null, 0, from.name, 0, final Connection connection = new Connection(id, link, overviewDepartureTime, overviewArrivalTime, null, null, 0, from.name, 0,
to.name, new ArrayList<Connection.Part>(1)); to.name, new ArrayList<Connection.Part>(1), null);
connections.add(connection); connections.add(connection);
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(details); final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(details);

View file

@ -273,7 +273,7 @@ public class RmvProvider extends AbstractHafasProvider
else else
line = null; line = null;
final Connection connection = new Connection(extractConnectionId(link), link, departureTime, arrivalTime, line, final Connection connection = new Connection(extractConnectionId(link), link, departureTime, arrivalTime, line,
line != null ? lineColors(line) : null, 0, from.name, 0, to.name, null); line != null ? lineColors(line) : null, 0, from.name, 0, to.name, null, null);
connections.add(connection); connections.add(connection);
} }
else else
@ -387,7 +387,7 @@ public class RmvProvider extends AbstractHafasProvider
} }
return new GetConnectionDetailsResult(currentDate, new Connection(extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime, return new GetConnectionDetailsResult(currentDate, new Connection(extractConnectionId(uri), uri, firstDepartureTime, lastArrivalTime,
null, null, 0, firstDeparture, 0, lastArrival, parts)); null, null, 0, firstDeparture, 0, lastArrival, parts, null));
} }
else else
{ {

View file

@ -38,9 +38,10 @@ public final class Connection implements Serializable
public final int toId; public final int toId;
public final String to; public final String to;
public final List<Part> parts; public final List<Part> parts;
public final Fare fare;
public Connection(final String id, final String link, final Date departureTime, final Date arrivalTime, final String line, public Connection(final String id, final String link, final Date departureTime, final Date arrivalTime, final String line,
final int[] lineColors, final int fromId, final String from, final int toId, final String to, final List<Part> parts) final int[] lineColors, final int fromId, final String from, final int toId, final String to, final List<Part> parts, final Fare fare)
{ {
this.id = id; this.id = id;
this.link = link; this.link = link;
@ -53,6 +54,7 @@ public final class Connection implements Serializable
this.toId = toId; this.toId = toId;
this.to = to; this.to = to;
this.parts = parts; this.parts = parts;
this.fare = fare;
} }
@Override @Override

View file

@ -0,0 +1,47 @@
/*
* Copyright 2010 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 <http://www.gnu.org/licenses/>.
*/
package de.schildbach.pte.dto;
import java.io.Serializable;
import java.util.Currency;
/**
* @author Andreas Schildbach
*/
public final class Fare implements Serializable
{
public final String network;
public final Currency currency;
public final String unitName;
public final float fareAdult;
public final float fareChild;
public final int unitsAdult;
public final int unitsChild;
public Fare(final String network, final Currency currency, final String unitName, final float fareAdult, final float fareChild,
final int unitsAdult, final int unitsChild)
{
this.network = network;
this.currency = currency;
this.unitName = unitName;
this.fareAdult = fareAdult;
this.fareChild = fareChild;
this.unitsAdult = unitsAdult;
this.unitsChild = unitsChild;
}
}

View file

@ -104,7 +104,12 @@ public final class XmlPullUtil
public static int intAttr(final XmlPullParser pp, final String attrName) public static int intAttr(final XmlPullParser pp, final String attrName)
{ {
return Integer.parseInt(pp.getAttributeValue(null, attrName)); return Integer.parseInt(pp.getAttributeValue(null, attrName).trim());
}
public static float floatAttr(final XmlPullParser pp, final String attrName)
{
return Float.parseFloat(pp.getAttributeValue(null, attrName).trim());
} }
public static void requireAttr(final XmlPullParser pp, final String attrName, final String requiredValue) public static void requireAttr(final XmlPullParser pp, final String attrName, final String requiredValue)