2.0 KiB

Architecture

High-Level Overview

The application is a Java Swing desktop client that:

  1. subscribes to MQTT prediction events,
  2. stores accepted events in SQLite,
  3. computes risk ratios,
  4. updates UI state and visualization,
  5. exports animation state for Unreal integration.

Layers

  • bootstrap
  • builds and wires all services in ApplicationInitializer
  • handles orderly shutdown in ApplicationShutdownManager
  • service
  • integration and business logic (MQTT, DB, stats, evaluation, external processes)
  • model
  • simple state and value objects (AppState, ProblemLevel, DatabaseEntry, RatioPoint)
  • controller
  • UI orchestration between state/services and Swing views
  • ui
  • window and visual components (tabs, chart, browser, status widgets)
  • util
  • shared helpers for config and logging

Runtime Data Flow

  1. App.main initializes look-and-feel and context.
  2. MqttClientService connects to tcp://localhost:1883.
  3. Subscription on configured topic routes payloads into BinaryEventService.
  4. BinaryEventService validates JSON and stores prediction values.
  5. EvaluationService gets ratio from StatisticsService.
  6. AppState is updated with the new ProblemLevel.
  7. Controllers listen to AppState and refresh UI (DashboardView, status bar).
  8. AnimationFileService writes the animation JSON consumed by Unreal side logic.

Main Components

  • vassistent.App
  • process entry point and shutdown hook registration
  • ApplicationContext
  • in-memory service container
  • DataPersistenceService
  • SQLite schema init and data access
  • MqttClientService
  • MQTT connect/subscribe/publish callbacks
  • StatisticsService
  • ratio and rolling-average computations
  • EvaluationService
  • ratio-to-level mapping
  • ProcessManagerService
  • optional startup/shutdown of simulator/Unreal helper processes

UI Structure

  • Main window: AppWindow
  • Tab 1: PixelStreamingView (JCEF browser)
  • Tab 2: DashboardView (JFreeChart + ProblemLevelBar)
  • Footer status bar: MQTT status + current level