From 9d19a3187789f01d6dbbc73d14c7f90df3e67560 Mon Sep 17 00:00:00 2001 From: Kostya Date: Mon, 10 Aug 2026 20:21:55 +0000 Subject: Move engine contracts to api module, add I/O provider abstraction and PicoContainer wiring Relocates GuessMarketEngine/GuessMarketContext into market.guess.api so engine and ui-console depend on a shared contract instead of engine internals, and makes context loading async (CompletableFuture). Adds InputProvider/OutputProvider interfaces with console implementations, wires the console app's Menu through a PicoContainer, and adds the generated model classes plus vendored picocontainer jar needed to build it. --- api/src/main/java/market/guess/InputProvider.java | 5 +++++ .../main/java/market/guess/InputProviderFactory.java | 5 +++++ api/src/main/java/market/guess/OutputProvider.java | 7 +++++++ .../main/java/market/guess/OutputProviderFactory.java | 5 +++++ api/src/main/java/market/guess/api/EventDTO.java | 8 ++++++++ .../main/java/market/guess/api/GuessMarketContext.java | 18 ++++++++++++++++++ .../main/java/market/guess/api/GuessMarketEngine.java | 7 +++++++ 7 files changed, 55 insertions(+) create mode 100644 api/src/main/java/market/guess/InputProvider.java create mode 100644 api/src/main/java/market/guess/InputProviderFactory.java create mode 100644 api/src/main/java/market/guess/OutputProvider.java create mode 100644 api/src/main/java/market/guess/OutputProviderFactory.java create mode 100644 api/src/main/java/market/guess/api/GuessMarketContext.java create mode 100644 api/src/main/java/market/guess/api/GuessMarketEngine.java (limited to 'api/src/main/java/market') diff --git a/api/src/main/java/market/guess/InputProvider.java b/api/src/main/java/market/guess/InputProvider.java new file mode 100644 index 0000000..be7372b --- /dev/null +++ b/api/src/main/java/market/guess/InputProvider.java @@ -0,0 +1,5 @@ +package market.guess; + +public interface InputProvider extends AutoCloseable { + int nextInt(); +} diff --git a/api/src/main/java/market/guess/InputProviderFactory.java b/api/src/main/java/market/guess/InputProviderFactory.java new file mode 100644 index 0000000..6801103 --- /dev/null +++ b/api/src/main/java/market/guess/InputProviderFactory.java @@ -0,0 +1,5 @@ +package market.guess; + +public interface InputProviderFactory { + InputProvider create(); +} diff --git a/api/src/main/java/market/guess/OutputProvider.java b/api/src/main/java/market/guess/OutputProvider.java new file mode 100644 index 0000000..774408e --- /dev/null +++ b/api/src/main/java/market/guess/OutputProvider.java @@ -0,0 +1,7 @@ +package market.guess; + +public interface OutputProvider { + void print(Object object); + + void println(Object object); +} diff --git a/api/src/main/java/market/guess/OutputProviderFactory.java b/api/src/main/java/market/guess/OutputProviderFactory.java new file mode 100644 index 0000000..b4eb7f5 --- /dev/null +++ b/api/src/main/java/market/guess/OutputProviderFactory.java @@ -0,0 +1,5 @@ +package market.guess; + +public interface OutputProviderFactory { + OutputProvider create(); +} diff --git a/api/src/main/java/market/guess/api/EventDTO.java b/api/src/main/java/market/guess/api/EventDTO.java index 66b2312..2b2bc63 100644 --- a/api/src/main/java/market/guess/api/EventDTO.java +++ b/api/src/main/java/market/guess/api/EventDTO.java @@ -1 +1,9 @@ package market.guess.api; + +public record EventDTO( + int id, + String name, + String description, + int commission, + CommissionChargeType commissionChargeType, + EventStatus status) {} diff --git a/api/src/main/java/market/guess/api/GuessMarketContext.java b/api/src/main/java/market/guess/api/GuessMarketContext.java new file mode 100644 index 0000000..12ffbeb --- /dev/null +++ b/api/src/main/java/market/guess/api/GuessMarketContext.java @@ -0,0 +1,18 @@ +package market.guess.api; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + +public interface GuessMarketContext { + CompletableFuture LoadAsync(); + + void SaveChangesAsync(); + + List GetAllEventsAsync(); + + void GetEventInfoByIdAsync(); + + void CreateEventAsync(); + + void UpdateEventAsync(); +} diff --git a/api/src/main/java/market/guess/api/GuessMarketEngine.java b/api/src/main/java/market/guess/api/GuessMarketEngine.java new file mode 100644 index 0000000..b6d44a4 --- /dev/null +++ b/api/src/main/java/market/guess/api/GuessMarketEngine.java @@ -0,0 +1,7 @@ +package market.guess.api; + +import java.util.concurrent.CompletableFuture; + +public interface GuessMarketEngine { + CompletableFuture loadEvents(); +} -- cgit v1.2.3