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.util.ArrayList;
import java.util.Calendar;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
@ -38,6 +39,7 @@ import org.xmlpull.v1.XmlPullParserFactory;
import de.schildbach.pte.dto.Connection;
import de.schildbach.pte.dto.Departure;
import de.schildbach.pte.dto.Fare;
import de.schildbach.pte.dto.GetConnectionDetailsResult;
import de.schildbach.pte.dto.Line;
import de.schildbach.pte.dto.Location;
@ -1151,8 +1153,25 @@ public abstract class AbstractEfaProvider implements NetworkProvider
XmlPullUtil.exit(pp, "itdPartialRouteList");
connections
.add(new Connection(id, uri, firstDepartureTime, lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts));
Fare fare = null;
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");
}

View file

@ -453,7 +453,7 @@ public abstract class AbstractHafasProvider implements NetworkProvider
XmlPullUtil.exit(pp);
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);

View file

@ -276,7 +276,7 @@ public final class BahnProvider extends AbstractHafasProvider
else
line = null;
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);
}
else
@ -424,7 +424,7 @@ public final class BahnProvider extends AbstractHafasProvider
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,
lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts));
lastArrivalTime, null, null, 0, firstDeparture, 0, lastArrival, parts, null));
}
else
{

View file

@ -282,7 +282,7 @@ public final class BvgProvider implements NetworkProvider
arrivalTime = ParserUtils.addDays(arrivalTime, 1);
final String line = normalizeLine(ParserUtils.resolveEntities(mConFine.group(4)));
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);
}
else
@ -429,7 +429,7 @@ public final class BvgProvider implements NetworkProvider
if (firstDepartureTime != null && lastArrivalTime != null)
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
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 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);
final Matcher mDetCoarse = P_CONNECTION_DETAILS_COARSE.matcher(details);

View file

@ -273,7 +273,7 @@ public class RmvProvider extends AbstractHafasProvider
else
line = null;
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);
}
else
@ -387,7 +387,7 @@ public class RmvProvider extends AbstractHafasProvider
}
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
{

View file

@ -38,9 +38,10 @@ public final class Connection implements Serializable
public final int toId;
public final String to;
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,
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.link = link;
@ -53,6 +54,7 @@ public final class Connection implements Serializable
this.toId = toId;
this.to = to;
this.parts = parts;
this.fare = fare;
}
@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)
{
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)