VSN-1990/ Add Kafka consumer for circuit activation & method to activate/desactivate tripCircuit and tripPlanning
Add Kafka consumer for circuit activation & Enhance activation/deactivation logic for TripCircuit and TripPlanning
Summary
This MR introduces a Kafka consumer to process circuit activation events and updates the business logic to activate or deactivate both TripCircuit and related TripPlanning entities accordingly.
It provides a full end-to-end flow: Kafka Event → Consumer → Service (activation/deactivation of circuits and associated trips).
Key Changes
🔹 1. Added Kafka Consumer for circuit activation
-
Implemented
CircuitTripConsumerServiceImpl.consumeActiveCircuit. -
Listens on topic
circuit-activationusing the listener container factorycircuitActivationKafkaListenerContainerFactory. -
Validates received
CircuitStatusEvent:- Checks for null event
- Validates circuitId
-
Delegates the activation or deactivation process to the
PlanningService.
🔹 2. Added unified activation/deactivation method in PlanningService
-
New method:
activationCircuit(String circuitId, boolean isActive) -
Retrieves all
TripCircuitentries linked to the givencircuitId. -
Throws a
FunctionalExceptionif no circuits exist.
🔹 3. Improved filtering of affected circuits
- Considers only
TripCircuitwhereisAssigned = true. - Extracts distinct
idTripCircuitvalues. - Automatically ignores null or duplicate IDs.
🔹 4. Activation/Deactivation of related TripPlanning
- All
TripPlanningentries tied to the retainedidTripCircuitlist are fetched. - Their
isActiveflag is updated to match the received event status. - Bulk persistence via
saveAll().
🔹 5. Activation/Deactivation of TripCircuit
- All retrieved
TripCircuitentities are updated with the newisActivestate. - Persisted using
saveAll().
Why this change?
- Enables remote activation/deactivation of circuits via Kafka events.
- Ensures consistency between
TripCircuitandTripPlanningstatuses. - Improves system reactivity and data integrity.
- Simplifies logic by using one unified method for both activation & deactivation.