From e60d05ec12be685965cfe5e5742bd51d7a90d40d Mon Sep 17 00:00:00 2001 From: John-Wiens Date: Mon, 29 Apr 2024 17:30:49 -0600 Subject: [PATCH] Adding Event Count Endpoints --- .../ode/api/controllers/EventController.java | 263 +++++++++++++++++- 1 file changed, 261 insertions(+), 2 deletions(-) diff --git a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/EventController.java b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/EventController.java index 30788531b..88f987905 100644 --- a/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/EventController.java +++ b/jpo-conflictvisualizer-api/src/main/java/us/dot/its/jpo/ode/api/controllers/EventController.java @@ -56,7 +56,6 @@ import us.dot.its.jpo.ode.api.models.MinuteCount; import us.dot.its.jpo.ode.mockdata.MockEventGenerator; import us.dot.its.jpo.ode.mockdata.MockIDCountGenerator; -import us.dot.its.jpo.ode.model.OdeBsmPayload; import us.dot.its.jpo.ode.plugin.j2735.J2735Bsm; @RestController @@ -137,6 +136,26 @@ public ResponseEntity> findIntersectio } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/intersection_reference_alignment/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countIntersectionReferenceAlignmentEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = intersectionReferenceAlignmentEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = intersectionReferenceAlignmentEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Intersection Reference Alignment Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/connection_of_travel", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -159,6 +178,26 @@ public ResponseEntity> findConnectionOfTravelEvent } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/connection_of_travel/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countConnectionOfTravelEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = connectionOfTravelEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = connectionOfTravelEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Connection of Travel Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/connection_of_travel/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -197,6 +236,26 @@ public ResponseEntity> findLaneDirectionOfTrave } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/lane_direction_of_travel/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countLaneDirectionOfTravelEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = laneDirectionOfTravelEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = laneDirectionOfTravelEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Lane Direction of Travel Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/lane_direction_of_travel/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -235,6 +294,26 @@ public ResponseEntity> findSignalGroupAlignmentE } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/signal_group_alignment/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSignalGroupAlignmentEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = signalGroupAlignmentEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = signalGroupAlignmentEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Signal Group Alignment Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/signal_group_alignment/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -273,6 +352,26 @@ public ResponseEntity> findSignalStateConflictEve } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/signal_state_conflict/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSignalStateConflictEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = signalStateConflictEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = signalStateConflictEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Signal Group Alignment Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/signal_state_conflict/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -311,6 +410,26 @@ public ResponseEntity> findSignalStateEvent( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/signal_state/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSignalStateEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = signalStateEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = signalStateEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Signal State Count"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/signal_state/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -351,6 +470,26 @@ public ResponseEntity> findSignalStateStopEvent( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/signal_state_stop/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSignalStateStopEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = signalStateStopEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = signalStateStopEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Signal State Stop Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/signal_state_stop/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -389,6 +528,26 @@ public ResponseEntity> findTimeChangeDetailsEvent( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/time_change_details/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countTimeChangeDetailsEvent( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = timeChangeDetailsEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = timeChangeDetailsEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Time Change Detail Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/time_change_details/daily_counts", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -426,6 +585,26 @@ public ResponseEntity> findSpatMinimumDataEvents( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/spat_minimum_data/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSpatMinimumDataEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = spatMinimumDataEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = spatMinimumDataEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Spat Minimum Data Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/map_minimum_data", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -447,6 +626,26 @@ public ResponseEntity> findMapMinimumDataEvents( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/map_minimum_data/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countMapMinimumDataEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = mapMinimumDataEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = mapMinimumDataEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Map Minimum Data Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/map_broadcast_rate", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -470,6 +669,27 @@ public ResponseEntity> findMapBroadcastRateEvents( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/map_broadcast_rate/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countMapBroadcastRateEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = mapBroadcastRateEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = mapBroadcastRateEventRepo.getQueryResultCount(query); + System.out.println("Map Broadcast Rate Event"); + logger.info("Found: " + count + " Map Broadcast Rates"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/spat_broadcast_rate", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -493,6 +713,26 @@ public ResponseEntity> findSpatBroadcastRateEvents( } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/spat_broadcast_rate/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countSpatBroadcastRateEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = spatBroadcastRateEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = spatBroadcastRateEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " Spat Broadcast Rate Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/bsm_events", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") @@ -511,11 +751,30 @@ public ResponseEntity> findBsmEvents( Query query = bsmEventRepo.getQuery(intersectionID, startTime, endTime, latest); long count = bsmEventRepo.getQueryResultCount(query); logger.info("Returning Bsm Event Repo Response with Size: " + count); - System.out.println("Spat Broadcast Data Event"); return ResponseEntity.ok(bsmEventRepo.find(query)); } } + @CrossOrigin(origins = "http://localhost:3000") + @RequestMapping(value = "/events/bsm_events/count", method = RequestMethod.GET, produces = "application/json") + @PreAuthorize("hasRole('USER') || hasRole('ADMIN')") + public ResponseEntity countBsmEvents( + @RequestParam(name = "intersection_id", required = false) Integer intersectionID, + @RequestParam(name = "start_time_utc_millis", required = false) Long startTime, + @RequestParam(name = "end_time_utc_millis", required = false) Long endTime, + @RequestParam(name = "latest", required = false, defaultValue = "false") boolean latest, + @RequestParam(name = "test", required = false, defaultValue = "false") boolean testData) { + + if (testData) { + return ResponseEntity.ok(1L); + } else { + Query query = bsmEventRepo.getQuery(intersectionID, startTime, endTime, latest); + long count = bsmEventRepo.getQueryResultCount(query); + logger.info("Found: " + count + " BSM Events"); + return ResponseEntity.ok(count); + } + } + @CrossOrigin(origins = "http://localhost:3000") @RequestMapping(value = "/events/bsm_events_by_minute", method = RequestMethod.GET, produces = "application/json") @PreAuthorize("hasRole('USER') || hasRole('ADMIN')")