summaryrefslogtreecommitdiffstats
path: root/service
diff options
context:
space:
mode:
Diffstat (limited to 'service')
-rw-r--r--service/src/main/java/market/guess/service/infrastructure/mapper/Mapper.java2
-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.java13
-rw-r--r--service/src/main/java/market/guess/service/infrastructure/provider/v1/XMLLoader.java60
-rw-r--r--service/src/main/java/market/guess/service/repository/EventRepository.java2
-rw-r--r--service/src/main/java/market/guess/service/repository/InMemoryEventRepository.java6
-rw-r--r--service/src/main/java/market/guess/service/repository/InMemoryUserRepository.java8
-rw-r--r--service/src/main/java/market/guess/service/repository/UserRepository.java3
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 @@
1package market.guess.service.infrastructure.mapper; 1package market.guess.service.infrastructure.mapper;
2 2
3public interface Mapper<TDomain, TModel> { 3public 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 @@
1package market.guess.service.infrastructure.mapper; 1package market.guess.service.infrastructure.mapper.v1;
2 2
3import java.util.ArrayList; 3import java.util.ArrayList;
4import java.util.List; 4import java.util.List;
@@ -6,10 +6,11 @@ import market.guess.api.CommissionTiming;
6import market.guess.api.EventStatus; 6import market.guess.api.EventStatus;
7import market.guess.service.domain.Event; 7import market.guess.service.domain.Event;
8import market.guess.service.domain.Option; 8import market.guess.service.domain.Option;
9import market.guess.service.infrastructure.mapper.Mapper;
9import market.guess.service.mechanism.LmsrTradingMechanism; 10import market.guess.service.mechanism.LmsrTradingMechanism;
10import market.guess.service.model.v1.GMEvent; 11import market.guess.service.model.v1.GMEvent;
11 12
12public final class EventMapperV1 implements Mapper<Event, GMEvent> { 13public 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 @@
1package market.guess.service.infrastructure.provider;
2
3import java.nio.file.Path;
4import market.guess.api.LoadResultDTO;
5
6public 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 @@
1package market.guess.service.infrastructure.provider.v1;
2
3import jakarta.xml.bind.JAXBContext;
4import jakarta.xml.bind.JAXBException;
5import java.nio.file.Files;
6import java.nio.file.Path;
7import java.util.List;
8import market.guess.api.LoadResultDTO;
9import market.guess.service.domain.BigDecimalOptions;
10import market.guess.service.domain.Event;
11import market.guess.service.infrastructure.mapper.Mapper;
12import market.guess.service.infrastructure.provider.Loader;
13import market.guess.service.model.v1.GMEvent;
14import market.guess.service.model.v1.GuessMarket;
15import market.guess.service.repository.EventRepository;
16import market.guess.service.repository.UserRepository;
17
18public 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 @@
1package market.guess.service.repository; 1package market.guess.service.repository;
2 2
3 3import java.math.BigDecimal;
4import market.guess.service.domain.User; 4import market.guess.service.domain.User;
5 5
6public final class InMemoryUserRepository implements UserRepository { 6public 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 @@
1package market.guess.service.repository; 1package market.guess.service.repository;
2 2
3import java.math.BigDecimal;
3import market.guess.service.domain.User; 4import market.guess.service.domain.User;
4 5
5public interface UserRepository { 6public interface UserRepository {
6 7
7 User getUser(String name); 8 User getUser(String name);
9
10 void addUser(String name, BigDecimal initialBalance);
8} 11}