From 19d53bab1fd72a393170b88c8bf2c883136f76f5 Mon Sep 17 00:00:00 2001 From: binh-dam-ibigroup <56846598+binh-dam-ibigroup@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:10:52 -0400 Subject: [PATCH] fix(UsRideGw*): Use OTP2 data for bus notifications, improve logging. --- .../busnotifiers/BusOperatorActions.java | 6 +++-- ...sRideGwinnettBusOpNotificationMessage.java | 18 ++++++------- .../UsRideGwinnettNotifyBusOperator.java | 8 +++--- .../middleware/utils/ItineraryUtils.java | 26 +++++++++---------- 4 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/BusOperatorActions.java b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/BusOperatorActions.java index 35502e54..aa4fed40 100644 --- a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/BusOperatorActions.java +++ b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/BusOperatorActions.java @@ -13,7 +13,7 @@ import java.io.InputStream; import java.util.List; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getAgencyIdFromLeg; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getAgencyGtfsIdFromLeg; import static org.opentripplanner.middleware.utils.ItineraryUtils.removeAgencyPrefix; /** Holds configured bus notification actions. */ @@ -49,7 +49,7 @@ public BusOperatorActions(List agencyActions) { * Get the action that matches the given agency id. */ public AgencyAction getAgencyAction(TravelerPosition travelerPosition) { - String agencyId = removeAgencyPrefix(getAgencyIdFromLeg(travelerPosition.nextLeg)); + String agencyId = removeAgencyPrefix(getAgencyGtfsIdFromLeg(travelerPosition.nextLeg)); if (agencyId != null) { for (AgencyAction agencyAction : agencyActions) { if (agencyAction.agencyId.equalsIgnoreCase(agencyId)) { @@ -73,6 +73,8 @@ public void handleSendNotificationAction(TripStatus tripStatus, TravelerPosition LOG.error("Could not trigger class {} for agency {}", action.trigger, action.agencyId, e); throw new RuntimeException(e); } + } else { + LOG.warn("No bus notification action was found for location {}.", travelerPosition.currentPosition); } } diff --git a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettBusOpNotificationMessage.java b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettBusOpNotificationMessage.java index b18059d0..adca3357 100644 --- a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettBusOpNotificationMessage.java +++ b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettBusOpNotificationMessage.java @@ -10,10 +10,10 @@ import java.util.Map; import static org.opentripplanner.middleware.utils.DateTimeUtils.getOtpZoneId; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getAgencyIdFromLeg; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getRouteIdFromLeg; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getStopIdFromPlace; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getTripIdFromLeg; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getAgencyGtfsIdFromLeg; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getRouteGtfsIdFromLeg; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getStopGtfsIdFromPlace; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getTripGtfsIdFromLeg; import static org.opentripplanner.middleware.utils.ItineraryUtils.removeAgencyPrefix; /** @@ -81,15 +81,15 @@ private static Map createMobilityCodesLookup() { public UsRideGwinnettBusOpNotificationMessage(Instant currentTime, TravelerPosition travelerPosition) { var nextLeg = travelerPosition.nextLeg; this.timestamp = BUS_OPERATOR_NOTIFIER_API_DATE_FORMAT.format(currentTime.atZone(ZoneOffset.UTC)); - this.agency_id = removeAgencyPrefix(getAgencyIdFromLeg(nextLeg)); - this.from_route_id = removeAgencyPrefix(getRouteIdFromLeg(nextLeg)); - this.from_trip_id = removeAgencyPrefix(getTripIdFromLeg(nextLeg)); - this.from_stop_id = removeAgencyPrefix(getStopIdFromPlace(nextLeg.from)); + this.agency_id = removeAgencyPrefix(getAgencyGtfsIdFromLeg(nextLeg)); + this.from_route_id = removeAgencyPrefix(getRouteGtfsIdFromLeg(nextLeg)); + this.from_trip_id = removeAgencyPrefix(getTripGtfsIdFromLeg(nextLeg)); + this.from_stop_id = removeAgencyPrefix(getStopGtfsIdFromPlace(nextLeg.from)); // For now, assume one notification request is made per transit leg. // TODO: Determine how interlined legs should be handled. this.to_route_id = this.from_route_id; this.to_trip_id = this.from_trip_id; - this.to_stop_id = removeAgencyPrefix(getStopIdFromPlace(nextLeg.to)); + this.to_stop_id = removeAgencyPrefix(getStopGtfsIdFromPlace(nextLeg.to)); this.from_arrival_time = BUS_OPERATOR_NOTIFIER_API_TIME_FORMAT.format( nextLeg.getScheduledStartTime() ); diff --git a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettNotifyBusOperator.java b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettNotifyBusOperator.java index dd1f1936..09b48a9c 100644 --- a/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettNotifyBusOperator.java +++ b/src/main/java/org/opentripplanner/middleware/triptracker/interactions/busnotifiers/UsRideGwinnettNotifyBusOperator.java @@ -18,7 +18,7 @@ import java.util.Map; import static org.opentripplanner.middleware.utils.ConfigUtils.getConfigPropertyAsText; -import static org.opentripplanner.middleware.utils.ItineraryUtils.getRouteIdFromLeg; +import static org.opentripplanner.middleware.utils.ItineraryUtils.getRouteGtfsIdFromLeg; import static org.opentripplanner.middleware.utils.ItineraryUtils.isBusLeg; /** @@ -80,7 +80,7 @@ private static List getBusOperatorNotifierQualifyingRoutes() { * Stage notification to bus operator by making sure all required conditions are met. */ public void sendNotification(TripStatus tripStatus, TravelerPosition travelerPosition) { - var routeId = getRouteIdFromLeg(travelerPosition.nextLeg); + var routeId = getRouteGtfsIdFromLeg(travelerPosition.nextLeg); try { if ( hasNotSentNotificationForRoute(travelerPosition.trackedJourney, routeId) && @@ -101,7 +101,7 @@ public void sendNotification(TripStatus tripStatus, TravelerPosition travelerPos * Cancel a previously sent notification for the next bus leg. */ public void cancelNotification(TravelerPosition travelerPosition) { - var routeId = getRouteIdFromLeg(travelerPosition.nextLeg); + var routeId = getRouteGtfsIdFromLeg(travelerPosition.nextLeg); try { if ( isBusLeg(travelerPosition.nextLeg) && routeId != null && @@ -128,6 +128,8 @@ public void cancelNotification(TravelerPosition travelerPosition) { * Makes a call to the bus driver notification API, followed by a call to the bus priority API. */ private static void makeApiRequests(TravelerPosition travelerPosition, String body, String routeId, String action) { + LOG.info("Sending bus operator/priority requests: {}", body); + var httpStatus = postBusDriverNotification(body); if (httpStatus == HttpStatus.OK_200) { travelerPosition.trackedJourney.updateNotificationMessage(routeId, body); diff --git a/src/main/java/org/opentripplanner/middleware/utils/ItineraryUtils.java b/src/main/java/org/opentripplanner/middleware/utils/ItineraryUtils.java index 79a4a4a6..eb42b126 100644 --- a/src/main/java/org/opentripplanner/middleware/utils/ItineraryUtils.java +++ b/src/main/java/org/opentripplanner/middleware/utils/ItineraryUtils.java @@ -327,37 +327,37 @@ public static String removeAgencyPrefix(String idParts) { } /** - * Get the route id from leg. + * Get the route GTFS id from leg. */ - public static String getRouteIdFromLeg(Leg leg) { - return (leg != null) ? leg.routeId : null; + public static String getRouteGtfsIdFromLeg(Leg leg) { + return (leg != null && leg.route != null) ? leg.route.gtfsId : null; } /** - * Get the agency id from leg. + * Get the agency GTFS id from leg. */ - public static String getAgencyIdFromLeg(Leg leg) { - return (leg != null) ? leg.agencyId : null; + public static String getAgencyGtfsIdFromLeg(Leg leg) { + return (leg != null && leg.agency != null) ? leg.agency.gtfsId : null; } /** - * Get the trip id from leg. + * Get the trip GTFS id from leg. */ - public static String getTripIdFromLeg(Leg leg) { - return (leg != null) ? leg.tripId : null; + public static String getTripGtfsIdFromLeg(Leg leg) { + return (leg != null && leg.trip != null) ? leg.trip.gtfsId : null; } /** - * Get the stop id from place. + * Get the stop GTFS id from place. */ - public static String getStopIdFromPlace(Place place) { - return (place != null) ? place.stopId : null; + public static String getStopGtfsIdFromPlace(Place place) { + return (place != null && place.stop != null) ? place.stop.gtfsId : null; } /** * Get the route short name from leg. */ public static String getRouteShortNameFromLeg(Leg leg) { - return leg.routeShortName; + return (leg != null && leg.route != null) ? leg.route.shortName : null; } }