diff options
| author | Kostya <mail@sartin.in> | 2026-08-14 13:29:40 +0000 |
|---|---|---|
| committer | Kostya <mail@sartin.in> | 2026-08-14 13:29:40 +0000 |
| commit | ec716e23ea8d827d4401ced8f34d533e30209d55 (patch) | |
| tree | 45fd5b7fcccaef04560835d077472dc25961b212 /service/src/main/java | |
| parent | f62600050e22532a3fe297b86eb22ca72d786698 (diff) | |
| download | guess-market-ec716e23ea8d827d4401ced8f34d533e30209d55.tar.gz guess-market-ec716e23ea8d827d4401ced8f34d533e30209d55.tar.xz guess-market-ec716e23ea8d827d4401ced8f34d533e30209d55.zip | |
Move mapper/provider infra into v1 packages, add repository write methods
Correct Mapper's generic parameter order to <TModel, TDomain> and stub
addEvent/addUser on the Event/User repositories.
Diffstat (limited to 'service/src/main/java')
| -rw-r--r-- | service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java | 2 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/infrastructure/mapper/v1/EventMapperV1.java (renamed from service/src/main/java/market/guess/service/infrastructure/mapper/EventMapperV1.java) | 5 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/infrastructure/provider/XMLLoader.java | 13 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/infrastructure/provider/v1/XMLLoader.java | 60 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/repository/EventRepository.java | 2 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java | 6 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java | 8 | ||||
| -rw-r--r-- | service/src/main/java/market/guess/service/repository/UserRepository.java | 3 |
8 files changed, 82 insertions, 17 deletions
diff --git a/service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java b/service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java index 44e192b..e3c77bf 100644 --- a/service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java +++ b/service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | package market.guess.service.infrastructure.mapper; | 1 | package market.guess.service.infrastructure.mapper; |
| 2 | 2 | ||
| 3 | public interface Mapper<TDomain, TModel> { | 3 | public interface Mapper<TModel, TDomain> { |
| 4 | TDomain toDomain(TModel source); | 4 | TDomain toDomain(TModel source); |
| 5 | } | 5 | } |
diff --git a/service/src/main/java/market/guess/service/infrastructure/mapper/EventMapperV1.java b/service/src/main/java/market/guess/service/infrastructure/mapper/v1/EventMapperV1.java index 33c38e3..f61820a 100644 --- a/service/src/main/java/market/guess/service/infrastructure/mapper/EventMapperV1.java +++ b/service/src/main/java/market/guess/service/infrastructure/mapper/v1/EventMapperV1.java | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | package market.guess.service.infrastructure.mapper; | 1 | package market.guess.service.infrastructure.mapper.v1; |
| 2 | 2 | ||
| 3 | import java.util.ArrayList; | 3 | import java.util.ArrayList; |
| 4 | import java.util.List; | 4 | import java.util.List; |
| @@ -6,10 +6,11 @@ import market.guess.api.CommissionTiming; | |||
| 6 | import market.guess.api.EventStatus; | 6 | import market.guess.api.EventStatus; |
| 7 | import market.guess.service.domain.Event; | 7 | import market.guess.service.domain.Event; |
| 8 | import market.guess.service.domain.Option; | 8 | import market.guess.service.domain.Option; |
| 9 | import market.guess.service.infrastructure.mapper.Mapper; | ||
| 9 | import market.guess.service.mechanism.LmsrTradingMechanism; | 10 | import market.guess.service.mechanism.LmsrTradingMechanism; |
| 10 | import market.guess.service.model.v1.GMEvent; | 11 | import market.guess.service.model.v1.GMEvent; |
| 11 | 12 | ||
| 12 | public final class EventMapperV1 implements Mapper<Event, GMEvent> { | 13 | public final class EventMapperV1 implements Mapper<GMEvent, Event> { |
| 13 | 14 | ||
| 14 | @Override | 15 | @Override |
| 15 | public Event toDomain(GMEvent source) { | 16 | public Event toDomain(GMEvent source) { |
diff --git a/service/src/main/java/market/guess/service/infrastructure/provider/XMLLoader.java b/service/src/main/java/market/guess/service/infrastructure/provider/XMLLoader.java deleted file mode 100644 index 443cd87..0000000 --- a/service/src/main/java/market/guess/service/infrastructure/provider/XMLLoader.java +++ /dev/null | |||
| @@ -1,13 +0,0 @@ | |||
| 1 | package market.guess.service.infrastructure.provider; | ||
| 2 | |||
| 3 | import java.nio.file.Path; | ||
| 4 | import market.guess.api.LoadResultDTO; | ||
| 5 | |||
| 6 | public final class XMLLoader implements Loader { | ||
| 7 | |||
| 8 | @Override | ||
| 9 | public LoadResultDTO load(Path path) { | ||
| 10 | // TODO Auto-generated method stub | ||
| 11 | throw new UnsupportedOperationException("Unimplemented method 'load'"); | ||
| 12 | } | ||
| 13 | } | ||
diff --git a/service/src/main/java/market/guess/service/infrastructure/provider/v1/XMLLoader.java b/service/src/main/java/market/guess/service/infrastructure/provider/v1/XMLLoader.java new file mode 100644 index 0000000..9333350 --- /dev/null +++ b/service/src/main/java/market/guess/service/infrastructure/provider/v1/XMLLoader.java | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | package market.guess.service.infrastructure.provider.v1; | ||
| 2 | |||
| 3 | import jakarta.xml.bind.JAXBContext; | ||
| 4 | import jakarta.xml.bind.JAXBException; | ||
| 5 | import java.nio.file.Files; | ||
| 6 | import java.nio.file.Path; | ||
| 7 | import java.util.List; | ||
| 8 | import market.guess.api.LoadResultDTO; | ||
| 9 | import market.guess.service.domain.BigDecimalOptions; | ||
| 10 | import market.guess.service.domain.Event; | ||
| 11 | import market.guess.service.infrastructure.mapper.Mapper; | ||
| 12 | import market.guess.service.infrastructure.provider.Loader; | ||
| 13 | import market.guess.service.model.v1.GMEvent; | ||
| 14 | import market.guess.service.model.v1.GuessMarket; | ||
| 15 | import market.guess.service.repository.EventRepository; | ||
| 16 | import market.guess.service.repository.UserRepository; | ||
| 17 | |||
| 18 | public final class XMLLoader implements Loader { | ||
| 19 | private final JAXBContext context; | ||
| 20 | |||
| 21 | private final EventRepository eventRepository; | ||
| 22 | private final UserRepository userRepository; | ||
| 23 | private final Mapper<GMEvent, Event> mapper; | ||
| 24 | |||
| 25 | public XMLLoader( | ||
| 26 | EventRepository eventRepository, | ||
| 27 | UserRepository userRepository, | ||
| 28 | Mapper<GMEvent, Event> mapper) { | ||
| 29 | super(); | ||
| 30 | this.eventRepository = eventRepository; | ||
| 31 | this.userRepository = userRepository; | ||
| 32 | this.mapper = mapper; | ||
| 33 | try { | ||
| 34 | context = JAXBContext.newInstance(GuessMarket.class); | ||
| 35 | } catch (JAXBException e) { | ||
| 36 | throw new IllegalStateException(); | ||
| 37 | } | ||
| 38 | } | ||
| 39 | |||
| 40 | @Override | ||
| 41 | public LoadResultDTO load(Path path) { | ||
| 42 | |||
| 43 | try (var stream = Files.newInputStream(path)) { | ||
| 44 | |||
| 45 | var doc = (GuessMarket) context.createUnmarshaller().unmarshal(stream); | ||
| 46 | |||
| 47 | for (var event : doc.getGMEvents().getGMEvent()) { | ||
| 48 | eventRepository.addEvent(mapper.toDomain(event)); | ||
| 49 | } | ||
| 50 | |||
| 51 | userRepository.addUser("Tester", BigDecimalOptions.toMoney(9_999_999)); | ||
| 52 | |||
| 53 | return LoadResultDTO.success("udk", 1); | ||
| 54 | } catch (Exception e) { | ||
| 55 | |||
| 56 | } | ||
| 57 | |||
| 58 | return LoadResultDTO.failure(path.toFile().getName(), List.of()); | ||
| 59 | } | ||
| 60 | } | ||
diff --git a/service/src/main/java/market/guess/service/repository/EventRepository.java b/service/src/main/java/market/guess/service/repository/EventRepository.java index f532793..94999cb 100644 --- a/service/src/main/java/market/guess/service/repository/EventRepository.java +++ b/service/src/main/java/market/guess/service/repository/EventRepository.java | |||
| @@ -7,4 +7,6 @@ public interface EventRepository { | |||
| 7 | Event getEvent(String id); | 7 | Event getEvent(String id); |
| 8 | 8 | ||
| 9 | List<Event> getAllEvents(); | 9 | List<Event> getAllEvents(); |
| 10 | |||
| 11 | void addEvent(Event event); | ||
| 10 | } | 12 | } |
diff --git a/service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java b/service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java index dad1055..81eba74 100644 --- a/service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java +++ b/service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java | |||
| @@ -16,4 +16,10 @@ public final class InMemoryEventRepository implements EventRepository { | |||
| 16 | // TODO Auto-generated method stub | 16 | // TODO Auto-generated method stub |
| 17 | throw new UnsupportedOperationException("Unimplemented method 'getAllEvents'"); | 17 | throw new UnsupportedOperationException("Unimplemented method 'getAllEvents'"); |
| 18 | } | 18 | } |
| 19 | |||
| 20 | @Override | ||
| 21 | public void addEvent(Event event) { | ||
| 22 | // TODO Auto-generated method stub | ||
| 23 | throw new UnsupportedOperationException("Unimplemented method 'addEvent'"); | ||
| 24 | } | ||
| 19 | } | 25 | } |
diff --git a/service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java b/service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java index e71c94c..951dea8 100644 --- a/service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java +++ b/service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package market.guess.service.repository; | 1 | package market.guess.service.repository; |
| 2 | 2 | ||
| 3 | 3 | import java.math.BigDecimal; | |
| 4 | import market.guess.service.domain.User; | 4 | import market.guess.service.domain.User; |
| 5 | 5 | ||
| 6 | public final class InMemoryUserRepository implements UserRepository { | 6 | public final class InMemoryUserRepository implements UserRepository { |
| @@ -10,4 +10,10 @@ public final class InMemoryUserRepository implements UserRepository { | |||
| 10 | // TODO Auto-generated method stub | 10 | // TODO Auto-generated method stub |
| 11 | throw new UnsupportedOperationException("Unimplemented method 'getUser'"); | 11 | throw new UnsupportedOperationException("Unimplemented method 'getUser'"); |
| 12 | } | 12 | } |
| 13 | |||
| 14 | @Override | ||
| 15 | public void addUser(String name, BigDecimal initialBalance) { | ||
| 16 | // TODO Auto-generated method stub | ||
| 17 | throw new UnsupportedOperationException("Unimplemented method 'addUser'"); | ||
| 18 | } | ||
| 13 | } | 19 | } |
diff --git a/service/src/main/java/market/guess/service/repository/UserRepository.java b/service/src/main/java/market/guess/service/repository/UserRepository.java index aafdc98..78d620d 100644 --- a/service/src/main/java/market/guess/service/repository/UserRepository.java +++ b/service/src/main/java/market/guess/service/repository/UserRepository.java | |||
| @@ -1,8 +1,11 @@ | |||
| 1 | package market.guess.service.repository; | 1 | package market.guess.service.repository; |
| 2 | 2 | ||
| 3 | import java.math.BigDecimal; | ||
| 3 | import market.guess.service.domain.User; | 4 | import market.guess.service.domain.User; |
| 4 | 5 | ||
| 5 | public interface UserRepository { | 6 | public interface UserRepository { |
| 6 | 7 | ||
| 7 | User getUser(String name); | 8 | User getUser(String name); |
| 9 | |||
| 10 | void addUser(String name, BigDecimal initialBalance); | ||
| 8 | } | 11 | } |