mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-06 15:18:49 +00:00
AbstractHafasClientInterfaceProvider: support fare references of type FS (fare set)
This commit is contained in:
parent
f2617c20a6
commit
11b3908135
2 changed files with 40 additions and 15 deletions
|
@ -781,13 +781,11 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
|
|||
for (int i = 0; i < ovwTrfRefList.length(); i++) {
|
||||
final JSONObject ovwTrfRef = ovwTrfRefList.getJSONObject(i);
|
||||
final String type = ovwTrfRef.getString("type");
|
||||
final int fareSetX = ovwTrfRef.getInt("fareSetX");
|
||||
final int fareX = ovwTrfRef.getInt("fareX");
|
||||
final JSONObject jsonFareSet = fareSetList.getJSONObject(fareSetX);
|
||||
final JSONObject jsonFare = jsonFareSet.getJSONArray("fareL").getJSONObject(fareX);
|
||||
final String fareName = jsonFare.getString("name");
|
||||
final Fare fare;
|
||||
final JSONObject jsonFareSet = fareSetList.getJSONObject(ovwTrfRef.getInt("fareSetX"));
|
||||
if (type.equals("T")) { // ticket
|
||||
final JSONObject jsonFare =
|
||||
jsonFareSet.getJSONArray("fareL").getJSONObject(ovwTrfRef.getInt("fareX"));
|
||||
final String fareName = jsonFare.getString("name");
|
||||
final int ticketX = ovwTrfRef.getInt("ticketX");
|
||||
final JSONObject jsonTicket = jsonFare.getJSONArray("ticketL").getJSONObject(ticketX);
|
||||
final String ticketName = jsonTicket.getString("name");
|
||||
|
@ -795,26 +793,41 @@ public abstract class AbstractHafasClientInterfaceProvider extends AbstractHafas
|
|||
if (!Strings.isNullOrEmpty(currencyStr)) {
|
||||
final Currency currency = Currency.getInstance(currencyStr);
|
||||
final float price = jsonTicket.getInt("prc") / 100f;
|
||||
fare = new Fare(normalizeFareName(fareName) + '\n' + ticketName,
|
||||
final Fare fare = new Fare(normalizeFareName(fareName) + '\n' + ticketName,
|
||||
normalizeFareType(ticketName), currency, price, null, null);
|
||||
} else {
|
||||
fare = null;
|
||||
if (!hideFare(fare))
|
||||
fares.add(fare);
|
||||
}
|
||||
} else if (type.equals("F")) { // fare
|
||||
final JSONObject jsonFare =
|
||||
jsonFareSet.getJSONArray("fareL").getJSONObject(ovwTrfRef.getInt("fareX"));
|
||||
final String fareName = jsonFare.getString("name");
|
||||
final String currencyStr = jsonFare.optString("cur");
|
||||
if (!Strings.isNullOrEmpty(currencyStr)) {
|
||||
final Currency currency = ParserUtils.getCurrency(currencyStr);
|
||||
final float price = jsonFare.getInt("prc") / 100f;
|
||||
fare = new Fare(normalizeFareName(fareName), normalizeFareType(fareName), currency,
|
||||
price, null, null);
|
||||
} else {
|
||||
fare = null;
|
||||
final Fare fare = new Fare(normalizeFareName(fareName), normalizeFareType(fareName),
|
||||
currency, price, null, null);
|
||||
if (!hideFare(fare))
|
||||
fares.add(fare);
|
||||
}
|
||||
} else if (type.equals("FS")) { // fare set
|
||||
final String fareSetName = jsonFareSet.getString("name");
|
||||
final JSONArray fareList = jsonFareSet.getJSONArray("fareL");
|
||||
for (int iFare = 0; iFare < fareList.length(); iFare++) {
|
||||
final JSONObject jsonFare = fareList.getJSONObject(iFare);
|
||||
final String fareName = jsonFare.getString("name");
|
||||
final String currencyStr = jsonFare.optString("cur");
|
||||
final Currency currency = ParserUtils.getCurrency(currencyStr);
|
||||
final float price = jsonFare.getInt("prc") / 100f;
|
||||
final Fare fare = new Fare(normalizeFareName(fareSetName), normalizeFareType(fareName),
|
||||
currency, price, null, null);
|
||||
if (!hideFare(fare))
|
||||
fares.add(fare);
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("cannot handle type: " + type);
|
||||
}
|
||||
if (fare != null && !hideFare(fare))
|
||||
fares.add(fare);
|
||||
}
|
||||
} else {
|
||||
fares = null;
|
||||
|
|
|
@ -149,6 +149,18 @@ public class VbbProviderLiveTest extends AbstractProviderLiveTest {
|
|||
print(earlierResult);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tripBeelitzPotsdam() throws Exception {
|
||||
final Location from = new Location(LocationType.STATION, "900220005", "Beelitz", "Bahnhof");
|
||||
final Location to = new Location(LocationType.STATION, "900220010", "Potsdam", "Golm");
|
||||
final QueryTripsResult result = queryTrips(from, null, to, new Date(), true, null);
|
||||
print(result);
|
||||
final QueryTripsResult laterResult = queryMoreTrips(result.context, true);
|
||||
print(laterResult);
|
||||
final QueryTripsResult earlierResult = queryMoreTrips(laterResult.context, false);
|
||||
print(earlierResult);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shortFootwayTrip() throws Exception {
|
||||
final Location from = new Location(LocationType.ADDRESS, null, Point.from1E6(52435193, 13473409),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue