Class Queries

java.lang.Object
eds.database.Queries
All Implemented Interfaces:
IQueries

public class Queries extends Object implements IQueries
Queries — Implementation of IQueries. Responsibilities: - Persist simulation run records (statistics_and_metrics table) - Persist trade records linked to a run (trades table) - Retrieve run records and trades for the results view All database access goes through Database.getInstance().getConnection(). Integration: - StatisticsCollector.Snapshot -> buildRecord() -> save() -> DB - findById(runId) -> StatisticsAndMetricsRecord -> PerformanceDescriber
  • Constructor Details

    • Queries

      public Queries()
  • Method Details

    • buildRecord

      public Records.StatisticsAndMetricsRecord buildRecord(StatisticsCollector.Snapshot snap, String runName, long seed, double meanValidation, double meanMarket, double meanLimit, double meanExecution, double meanArrival, double simulationTime)
      Converts a StatisticsCollector.Snapshot and engine config parameters into a StatisticsAndMetricsRecord ready for persistence. This is the single mapping point between the model layer and database layer. Called by Controller after simulation completes.
      Specified by:
      buildRecord in interface IQueries
    • saveStatisticsAndMetrics

      public int saveStatisticsAndMetrics(Records.StatisticsAndMetricsRecord record)
      Persists a completed simulation run to statistics_and_metrics table.
      Specified by:
      saveStatisticsAndMetrics in interface IQueries
      Parameters:
      record - fully populated record (id field ignored — generated by DB)
      Returns:
      the generated run id, or -1 if insert failed
    • saveAllTrades

      public int saveAllTrades(List<Records.TradeRecord> trades, int runId)
      Persists all trades in a single transaction linked to runId. Rolls back entirely on failure — no partial saves.
      Specified by:
      saveAllTrades in interface IQueries
      Returns:
      number of trades saved, or -1 if transaction failed
    • findAll

      Returns all simulation runs, most recent first. Returns empty list if none found.
      Specified by:
      findAll in interface IQueries
    • findById

      public Optional<Records.StatisticsAndMetricsRecord> findById(int id)
      Returns a single run by id. Returns Optional.empty() if not found — callers must handle absence. Used by ResultsView to load the just-completed run: queries.findById(runId).ifPresent(record -> describer = new PerformanceDescriber(record))
      Specified by:
      findById in interface IQueries
    • findTradesByRunId

      public List<Records.TradeRecord> findTradesByRunId(int runId)
      Returns all trades for a run ordered by conclusion time. Returns empty list if none found.
      Specified by:
      findTradesByRunId in interface IQueries