AbstractEfaProvider: handle missing currency in <itdSingleTicket>

This commit is contained in:
Andreas Schildbach 2024-05-03 09:59:31 +02:00
parent 64defb58ad
commit 295cbdc3c8

View file

@ -2405,36 +2405,39 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider {
if (XmlPullUtil.test(pp, "itdSingleTicket")) { if (XmlPullUtil.test(pp, "itdSingleTicket")) {
final String net = XmlPullUtil.optAttr(pp, "net", null); final String net = XmlPullUtil.optAttr(pp, "net", null);
if (net != null) { if (net != null) {
final Currency currency = parseCurrency(XmlPullUtil.attr(pp, "currency")); final String currencyStr = Strings.emptyToNull(XmlPullUtil.optAttr(pp, "currency", null));
final String fareAdult = XmlPullUtil.optAttr(pp, "fareAdult", null); if (currencyStr != null) {
final String fareChild = XmlPullUtil.optAttr(pp, "fareChild", null); final Currency currency = parseCurrency(currencyStr);
final String unitName = XmlPullUtil.optAttr(pp, "unitName", null); final String fareAdult = XmlPullUtil.optAttr(pp, "fareAdult", null);
final String unitsAdult = XmlPullUtil.optAttr(pp, "unitsAdult", null); final String fareChild = XmlPullUtil.optAttr(pp, "fareChild", null);
final String unitsChild = XmlPullUtil.optAttr(pp, "unitsChild", null); final String unitName = XmlPullUtil.optAttr(pp, "unitName", null);
final String levelAdult = XmlPullUtil.optAttr(pp, "levelAdult", null); final String unitsAdult = XmlPullUtil.optAttr(pp, "unitsAdult", null);
final String levelChild = XmlPullUtil.optAttr(pp, "levelChild", null); final String unitsChild = XmlPullUtil.optAttr(pp, "unitsChild", null);
if (fareAdult != null) final String levelAdult = XmlPullUtil.optAttr(pp, "levelAdult", null);
fares.add(new Fare(net.toUpperCase(), Type.ADULT, currency, final String levelChild = XmlPullUtil.optAttr(pp, "levelChild", null);
Float.parseFloat(fareAdult) * fareCorrectionFactor, if (fareAdult != null)
levelAdult != null ? null : unitName, fares.add(new Fare(net.toUpperCase(), Type.ADULT, currency,
levelAdult != null ? levelAdult : unitsAdult)); Float.parseFloat(fareAdult) * fareCorrectionFactor,
if (fareChild != null) levelAdult != null ? null : unitName,
fares.add(new Fare(net.toUpperCase(), Type.CHILD, currency, levelAdult != null ? levelAdult : unitsAdult));
Float.parseFloat(fareChild) * fareCorrectionFactor, if (fareChild != null)
levelChild != null ? null : unitName, fares.add(new Fare(net.toUpperCase(), Type.CHILD, currency,
levelChild != null ? levelChild : unitsChild)); Float.parseFloat(fareChild) * fareCorrectionFactor,
levelChild != null ? null : unitName,
levelChild != null ? levelChild : unitsChild));
if (XmlPullUtil.optEnter(pp, "itdSingleTicket")) { if (XmlPullUtil.optEnter(pp, "itdSingleTicket")) {
if (XmlPullUtil.optEnter(pp, "itdGenericTicketList")) { if (XmlPullUtil.optEnter(pp, "itdGenericTicketList")) {
while (XmlPullUtil.test(pp, "itdGenericTicketGroup")) { while (XmlPullUtil.test(pp, "itdGenericTicketGroup")) {
final Fare fare = processItdGenericTicketGroup(pp, net.toUpperCase(), final Fare fare = processItdGenericTicketGroup(pp, net.toUpperCase(),
currency); currency);
if (fare != null) if (fare != null)
fares.add(fare); fares.add(fare);
}
XmlPullUtil.skipExit(pp, "itdGenericTicketList");
} }
XmlPullUtil.skipExit(pp, "itdGenericTicketList"); XmlPullUtil.skipExit(pp, "itdSingleTicket");
} }
XmlPullUtil.skipExit(pp, "itdSingleTicket");
} }
} }
} }