From 2eef86c9a9ca18a6080388f5d95cc304f2302a6a Mon Sep 17 00:00:00 2001 From: JustCris Date: Fri, 22 Nov 2024 16:34:03 +0100 Subject: [PATCH] add currentRangeMeters to VehicleRentalVehicle and gtfs graphql API --- .../apis/gtfs/datafetchers/RentalVehicleImpl.java | 5 +++++ .../apis/gtfs/generated/GraphQLDataFetchers.java | 2 ++ .../service/vehiclerental/model/VehicleRentalVehicle.java | 4 ++++ .../datasources/GbfsFreeVehicleStatusMapper.java | 2 +- .../org/opentripplanner/apis/gtfs/schema.graphqls | 4 +++- .../model/TestFreeFloatingRentalVehicleBuilder.java | 8 ++++++++ .../apis/gtfs/expectations/rental-vehicle.json | 3 ++- .../apis/gtfs/queries/rental-vehicle.graphql | 1 + 8 files changed, 26 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/RentalVehicleImpl.java b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/RentalVehicleImpl.java index 5dec579e2e9..64cff3b44fb 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/RentalVehicleImpl.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/datafetchers/RentalVehicleImpl.java @@ -21,6 +21,11 @@ public DataFetcher currentFuelPercent() { return environment -> getSource(environment).getCurrentFuelPercent(); } + @Override + public DataFetcher currentRangeMeters() { + return environment -> getSource(environment).getCurrentRangeMeters(); + } + @Override public DataFetcher id() { return environment -> diff --git a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLDataFetchers.java b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLDataFetchers.java index 8ae6e64e92e..ab8391b68c7 100644 --- a/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLDataFetchers.java +++ b/application/src/main/java/org/opentripplanner/apis/gtfs/generated/GraphQLDataFetchers.java @@ -855,6 +855,8 @@ public interface GraphQLRentalVehicle { public DataFetcher currentFuelPercent(); + public DataFetcher currentRangeMeters(); + public DataFetcher id(); public DataFetcher lat(); diff --git a/application/src/main/java/org/opentripplanner/service/vehiclerental/model/VehicleRentalVehicle.java b/application/src/main/java/org/opentripplanner/service/vehiclerental/model/VehicleRentalVehicle.java index 2838ec43ea1..ee5316f0526 100644 --- a/application/src/main/java/org/opentripplanner/service/vehiclerental/model/VehicleRentalVehicle.java +++ b/application/src/main/java/org/opentripplanner/service/vehiclerental/model/VehicleRentalVehicle.java @@ -138,4 +138,8 @@ public VehicleRentalSystem getVehicleRentalSystem() { public Double getCurrentFuelPercent() { return currentFuelPercent; } + + public Double getCurrentRangeMeters() { + return currentRangeMeters; + } } diff --git a/application/src/main/java/org/opentripplanner/updater/vehicle_rental/datasources/GbfsFreeVehicleStatusMapper.java b/application/src/main/java/org/opentripplanner/updater/vehicle_rental/datasources/GbfsFreeVehicleStatusMapper.java index 873bff1f8ff..f3c60307ef9 100644 --- a/application/src/main/java/org/opentripplanner/updater/vehicle_rental/datasources/GbfsFreeVehicleStatusMapper.java +++ b/application/src/main/java/org/opentripplanner/updater/vehicle_rental/datasources/GbfsFreeVehicleStatusMapper.java @@ -53,6 +53,7 @@ public VehicleRentalVehicle mapFreeVehicleStatus(GBFSBike vehicle) { ? Instant.ofEpochSecond((long) (double) vehicle.getLastReported()) : null; rentalVehicle.currentRangeMeters = vehicle.getCurrentRangeMeters(); + rentalVehicle.currentFuelPercent = vehicle.getCurrentFuelPercent(); rentalVehicle.pricingPlanId = vehicle.getPricingPlanId(); GBFSRentalUris rentalUris = vehicle.getRentalUris(); if (rentalUris != null) { @@ -61,7 +62,6 @@ public VehicleRentalVehicle mapFreeVehicleStatus(GBFSBike vehicle) { String webUri = rentalUris.getWeb(); rentalVehicle.rentalUris = new VehicleRentalStationUris(androidUri, iosUri, webUri); } - rentalVehicle.currentFuelPercent = vehicle.getCurrentFuelPercent(); return rentalVehicle; } else { diff --git a/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls b/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls index c0019771124..84587771209 100644 --- a/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls +++ b/application/src/main/resources/org/opentripplanner/apis/gtfs/schema.graphqls @@ -1801,8 +1801,10 @@ type RealTimeEstimate { type RentalVehicle implements Node & PlaceInterface { "If true, vehicle is currently available for renting." allowPickupNow: Boolean - "Current fuel percentage of the free floating vehicle. Value expressed from 0 to 1" + "Fuel or battery power remaining in the vehicle. Expressed from 0 to 1." currentFuelPercent: Float + "Range in meters that the vehicle can travel with the vehicle's current charge or fuel." + currentRangeMeters: Float "Global object ID provided by Relay. This value can be used to refetch this object using **node** query." id: ID! "Latitude of the vehicle (WGS 84)" diff --git a/application/src/test/java/org/opentripplanner/service/vehiclerental/model/TestFreeFloatingRentalVehicleBuilder.java b/application/src/test/java/org/opentripplanner/service/vehiclerental/model/TestFreeFloatingRentalVehicleBuilder.java index c0787b73493..1a54b24bcf2 100644 --- a/application/src/test/java/org/opentripplanner/service/vehiclerental/model/TestFreeFloatingRentalVehicleBuilder.java +++ b/application/src/test/java/org/opentripplanner/service/vehiclerental/model/TestFreeFloatingRentalVehicleBuilder.java @@ -10,10 +10,12 @@ public class TestFreeFloatingRentalVehicleBuilder { public static final double DEFAULT_LATITUDE = 47.520; public static final double DEFAULT_LONGITUDE = 19.01; public static final double DEFAULT_CURRENT_FUEL_PERCENT = 0.5; + public static final double DEFAULT_CURRENT_RANGE_METERS = 5500; private double latitude = DEFAULT_LATITUDE; private double longitude = DEFAULT_LONGITUDE; private double currentFuelPercent = DEFAULT_CURRENT_FUEL_PERCENT; + private double currentRangeMeters = DEFAULT_CURRENT_RANGE_METERS; private VehicleRentalSystem system = null; private RentalVehicleType vehicleType = RentalVehicleType.getDefaultType(NETWORK_1); @@ -37,6 +39,11 @@ public TestFreeFloatingRentalVehicleBuilder withCurrentFuelPercent(double curren return this; } + public TestFreeFloatingRentalVehicleBuilder withCurrentRangeMeters(double currentRangeMeters) { + this.currentRangeMeters = currentRangeMeters; + return this; + } + public TestFreeFloatingRentalVehicleBuilder withSystem(String id, String url) { this.system = new VehicleRentalSystem( @@ -93,6 +100,7 @@ public VehicleRentalVehicle build() { vehicle.vehicleType = vehicleType; vehicle.system = system; vehicle.currentFuelPercent = currentFuelPercent; + vehicle.currentRangeMeters = currentRangeMeters; return vehicle; } } diff --git a/application/src/test/resources/org/opentripplanner/apis/gtfs/expectations/rental-vehicle.json b/application/src/test/resources/org/opentripplanner/apis/gtfs/expectations/rental-vehicle.json index fc92ea94ed7..fab58831371 100644 --- a/application/src/test/resources/org/opentripplanner/apis/gtfs/expectations/rental-vehicle.json +++ b/application/src/test/resources/org/opentripplanner/apis/gtfs/expectations/rental-vehicle.json @@ -16,7 +16,8 @@ "networkId":"Network-1", "url":"https://foo.bar" }, - "currentFuelPercent": 0.5 + "currentFuelPercent": 0.5, + "currentRangeMeters": 5500.0 } } } diff --git a/application/src/test/resources/org/opentripplanner/apis/gtfs/queries/rental-vehicle.graphql b/application/src/test/resources/org/opentripplanner/apis/gtfs/queries/rental-vehicle.graphql index 6460a11d801..5fd8da8c5fd 100644 --- a/application/src/test/resources/org/opentripplanner/apis/gtfs/queries/rental-vehicle.graphql +++ b/application/src/test/resources/org/opentripplanner/apis/gtfs/queries/rental-vehicle.graphql @@ -20,5 +20,6 @@ url } currentFuelPercent + currentRangeMeters } }