EFA: Fix handling of another broken empty <itdSingleTicket>.

This commit is contained in:
Andreas Schildbach 2017-02-05 21:01:53 +01:00
parent e92aa098a0
commit 82f09b16d8

View file

@ -2386,7 +2386,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
if (!pp.isEmptyElementTag()) { if (!pp.isEmptyElementTag()) {
XmlPullUtil.enter(pp, "itdFare"); XmlPullUtil.enter(pp, "itdFare");
if (XmlPullUtil.test(pp, "itdSingleTicket")) { if (XmlPullUtil.test(pp, "itdSingleTicket")) {
final String net = XmlPullUtil.attr(pp, "net").toUpperCase(); final String net = XmlPullUtil.optAttr(pp, "net", null);
if (net != null) {
final Currency currency = parseCurrency(XmlPullUtil.attr(pp, "currency")); final Currency currency = parseCurrency(XmlPullUtil.attr(pp, "currency"));
final String fareAdult = XmlPullUtil.optAttr(pp, "fareAdult", null); final String fareAdult = XmlPullUtil.optAttr(pp, "fareAdult", null);
final String fareChild = XmlPullUtil.optAttr(pp, "fareChild", null); final String fareChild = XmlPullUtil.optAttr(pp, "fareChild", null);
@ -2396,12 +2397,12 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
final String levelAdult = XmlPullUtil.optAttr(pp, "levelAdult", null); final String levelAdult = XmlPullUtil.optAttr(pp, "levelAdult", null);
final String levelChild = XmlPullUtil.optAttr(pp, "levelChild", null); final String levelChild = XmlPullUtil.optAttr(pp, "levelChild", null);
if (fareAdult != null) if (fareAdult != null)
fares.add(new Fare(net, Type.ADULT, currency, fares.add(new Fare(net.toUpperCase(), Type.ADULT, currency,
Float.parseFloat(fareAdult) * fareCorrectionFactor, Float.parseFloat(fareAdult) * fareCorrectionFactor,
levelAdult != null ? null : unitName, levelAdult != null ? null : unitName,
levelAdult != null ? levelAdult : unitsAdult)); levelAdult != null ? levelAdult : unitsAdult));
if (fareChild != null) if (fareChild != null)
fares.add(new Fare(net, Type.CHILD, currency, fares.add(new Fare(net.toUpperCase(), Type.CHILD, currency,
Float.parseFloat(fareChild) * fareCorrectionFactor, Float.parseFloat(fareChild) * fareCorrectionFactor,
levelChild != null ? null : unitName, levelChild != null ? null : unitName,
levelChild != null ? levelChild : unitsChild)); levelChild != null ? levelChild : unitsChild));
@ -2411,7 +2412,8 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
if (XmlPullUtil.test(pp, "itdGenericTicketList")) { if (XmlPullUtil.test(pp, "itdGenericTicketList")) {
XmlPullUtil.enter(pp, "itdGenericTicketList"); XmlPullUtil.enter(pp, "itdGenericTicketList");
while (XmlPullUtil.test(pp, "itdGenericTicketGroup")) { while (XmlPullUtil.test(pp, "itdGenericTicketGroup")) {
final Fare fare = processItdGenericTicketGroup(pp, net, currency); final Fare fare = processItdGenericTicketGroup(pp, net.toUpperCase(),
currency);
if (fare != null) if (fare != null)
fares.add(fare); fares.add(fare);
} }
@ -2422,6 +2424,7 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
XmlPullUtil.next(pp); XmlPullUtil.next(pp);
} }
} }
}
XmlPullUtil.skipExit(pp, "itdFare"); XmlPullUtil.skipExit(pp, "itdFare");
} else { } else {
XmlPullUtil.next(pp); XmlPullUtil.next(pp);