From 9dd3ec7ff11839503e4d5ef6639d0faa21403095 Mon Sep 17 00:00:00 2001 From: Kostya Date: Thu, 13 Aug 2026 15:39:56 +0000 Subject: Move I/O provider abstraction to ui-console, add ledger/account/problem DTOs InputProvider/OutputProvider were api-layer types only ever implemented by the console UI; relocate them there. Drop the unused GuessMarketEngine/LocalGuessMarketService pair, flesh out LoadResultDTO with success/failure variants, and make LocalGuessMarketContext.LoadAsync report real outcomes instead of an empty placeholder. --- api/src/main/java/market/guess/InputProvider.java | 5 ----- api/src/main/java/market/guess/InputProviderFactory.java | 5 ----- api/src/main/java/market/guess/OutputProvider.java | 7 ------- api/src/main/java/market/guess/OutputProviderFactory.java | 5 ----- api/src/main/java/market/guess/api/AccountDTO.java | 6 ++++++ api/src/main/java/market/guess/api/GuessMarketContext.java | 3 +-- api/src/main/java/market/guess/api/GuessMarketEngine.java | 7 ------- api/src/main/java/market/guess/api/LedgerEntryDTO.java | 4 ++++ api/src/main/java/market/guess/api/LedgerType.java | 10 ++++++++++ api/src/main/java/market/guess/api/LoadResultDTO.java | 14 +++++++++++++- api/src/main/java/market/guess/api/ProblemDTO.java | 3 +++ 11 files changed, 37 insertions(+), 32 deletions(-) delete mode 100644 api/src/main/java/market/guess/InputProvider.java delete mode 100644 api/src/main/java/market/guess/InputProviderFactory.java delete mode 100644 api/src/main/java/market/guess/OutputProvider.java delete mode 100644 api/src/main/java/market/guess/OutputProviderFactory.java create mode 100644 api/src/main/java/market/guess/api/AccountDTO.java delete mode 100644 api/src/main/java/market/guess/api/GuessMarketEngine.java create mode 100644 api/src/main/java/market/guess/api/LedgerEntryDTO.java create mode 100644 api/src/main/java/market/guess/api/LedgerType.java create mode 100644 api/src/main/java/market/guess/api/ProblemDTO.java (limited to 'api/src/main/java') diff --git a/api/src/main/java/market/guess/InputProvider.java b/api/src/main/java/market/guess/InputProvider.java deleted file mode 100644 index be7372b..0000000 --- a/api/src/main/java/market/guess/InputProvider.java +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 6801103..0000000 --- a/api/src/main/java/market/guess/InputProviderFactory.java +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index 774408e..0000000 --- a/api/src/main/java/market/guess/OutputProvider.java +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index b4eb7f5..0000000 --- a/api/src/main/java/market/guess/OutputProviderFactory.java +++ /dev/null @@ -1,5 +0,0 @@ -package market.guess; - -public interface OutputProviderFactory { - OutputProvider create(); -} diff --git a/api/src/main/java/market/guess/api/AccountDTO.java b/api/src/main/java/market/guess/api/AccountDTO.java new file mode 100644 index 0000000..8e7123e --- /dev/null +++ b/api/src/main/java/market/guess/api/AccountDTO.java @@ -0,0 +1,6 @@ +package market.guess.api; + +import java.util.List; + +public record AccountDTO( + String owner, String balance, boolean blocked, List entries) {} diff --git a/api/src/main/java/market/guess/api/GuessMarketContext.java b/api/src/main/java/market/guess/api/GuessMarketContext.java index 12ffbeb..2d7af4c 100644 --- a/api/src/main/java/market/guess/api/GuessMarketContext.java +++ b/api/src/main/java/market/guess/api/GuessMarketContext.java @@ -1,10 +1,9 @@ package market.guess.api; import java.util.List; -import java.util.concurrent.CompletableFuture; public interface GuessMarketContext { - CompletableFuture LoadAsync(); + LoadResultDTO LoadAsync(); void SaveChangesAsync(); diff --git a/api/src/main/java/market/guess/api/GuessMarketEngine.java b/api/src/main/java/market/guess/api/GuessMarketEngine.java deleted file mode 100644 index b6d44a4..0000000 --- a/api/src/main/java/market/guess/api/GuessMarketEngine.java +++ /dev/null @@ -1,7 +0,0 @@ -package market.guess.api; - -import java.util.concurrent.CompletableFuture; - -public interface GuessMarketEngine { - CompletableFuture loadEvents(); -} diff --git a/api/src/main/java/market/guess/api/LedgerEntryDTO.java b/api/src/main/java/market/guess/api/LedgerEntryDTO.java new file mode 100644 index 0000000..b8f994c --- /dev/null +++ b/api/src/main/java/market/guess/api/LedgerEntryDTO.java @@ -0,0 +1,4 @@ +package market.guess.api; + +public record LedgerEntryDTO( + long seq, String at, LedgerType type, String amount, String balanceAfter, String note) {} diff --git a/api/src/main/java/market/guess/api/LedgerType.java b/api/src/main/java/market/guess/api/LedgerType.java new file mode 100644 index 0000000..3402b84 --- /dev/null +++ b/api/src/main/java/market/guess/api/LedgerType.java @@ -0,0 +1,10 @@ +package market.guess.api; + +public enum LedgerType { + SUBSIDY, + PURCHASE, + COMMISSION, + PAYOUT, + REFUND, + DEPOSIT +} diff --git a/api/src/main/java/market/guess/api/LoadResultDTO.java b/api/src/main/java/market/guess/api/LoadResultDTO.java index cf3630b..8cae3c0 100644 --- a/api/src/main/java/market/guess/api/LoadResultDTO.java +++ b/api/src/main/java/market/guess/api/LoadResultDTO.java @@ -1,3 +1,15 @@ package market.guess.api; -public record LoadResultDTO() {} +import java.util.List; + +public record LoadResultDTO( + boolean success, String source, int eventsLoaded, List issues) { + + public static LoadResultDTO success(String sourceLabel, int eventsLoaded) { + return new LoadResultDTO(true, sourceLabel, eventsLoaded, List.of()); + } + + public static LoadResultDTO failure(String sourceLabel, List problems) { + return new LoadResultDTO(false, sourceLabel, 0, List.copyOf(problems)); + } +} diff --git a/api/src/main/java/market/guess/api/ProblemDTO.java b/api/src/main/java/market/guess/api/ProblemDTO.java new file mode 100644 index 0000000..682372b --- /dev/null +++ b/api/src/main/java/market/guess/api/ProblemDTO.java @@ -0,0 +1,3 @@ +package market.guess.api; + +public record ProblemDTO(String code, String humanizedMessage, String location) {} -- cgit v1.2.3