1 package ejava.examples.asyncmarket.ejb;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.List;
6 import java.util.stream.Collectors;
7
8 import ejava.examples.asyncmarket.bo.AuctionItem;
9 import ejava.examples.asyncmarket.bo.Bid;
10 import ejava.examples.asyncmarket.bo.Order;
11 import ejava.examples.asyncmarket.bo.Person;
12
13 public class DtoMapper {
14
15 public Bid toDTO(Bid bid) {
16 if (bid==null) { return null; }
17 Bid dto = new Bid(bid.getId());
18 dto.setAmount(bid.getAmount());
19 dto.setBidder(toDTO(bid.getBidder(), dto));
20 dto.setItem(toDTO(bid.getItem(), dto));
21 return dto;
22 }
23
24 public Person toDTO(Person person, Bid bid) {
25 if (person==null) { return null; }
26 Person dto = new Person(person.getId());
27 dto.setUserId(person.getUserId());
28 if (bid!=null) {
29 dto.getBids().add(bid);
30 }
31 bid.setBidder(dto);
32 dto.setVersion(person.getVersion());
33 return dto;
34 }
35
36 public AuctionItem toDTO(AuctionItem item, Bid bid) {
37 if (item==null) { return null; }
38 AuctionItem dto = new AuctionItem(item.getId());
39 dto.setName(item.getName());
40 dto.setVersion(item.getVersion());
41 dto.setStartDate(item.getStartDate());
42 dto.setEndDate(item.getEndDate());
43 dto.setMinBid(item.getMinBid());
44 if (bid!=null) {
45 dto.setWinningBid(bid);
46 }
47 dto.setClosed(item.isClosed());
48 return dto;
49 }
50
51
52 public List<AuctionItem> toDTO(List<AuctionItem> items) {
53 if (items==null) { return null; }
54 return items.stream()
55 .map(item->toDTO(item))
56 .collect(Collectors.toList());
57 }
58
59 public AuctionItem toDTO(AuctionItem item) {
60 if (item==null) { return null; }
61 AuctionItem dto = new AuctionItem(item.getId());
62 dto.setVersion(item.getVersion());
63 dto.setName(item.getName());
64 dto.setStartDate(item.getStartDate());
65 dto.setEndDate(item.getEndDate());
66 dto.setMinBid(item.getMinBid());
67 dto.setBids(toDTO(item.getBids(), dto));
68 dto.setWinningBid(null);
69 dto.setClosed(item.isClosed());
70 return dto;
71 }
72
73 public List<Bid> toDTO(List<Bid> bids, AuctionItem item) {
74 if (bids==null) { return null; }
75 List<Bid> dtos = new ArrayList<Bid>();
76 for (Bid bid : bids) {
77 Bid dto = new Bid(bid.getId());
78 dto.setAmount(bid.getAmount());
79 dto.setItem(item);
80 item.getBids().add(dto);
81 dto.setBidder(toDTO(bid.getBidder(),dto));
82 dtos.add(dto);
83 }
84 return dtos;
85 }
86
87 public Order toDTO(Order order) {
88 Order dto = new Order(order.getId());
89 dto.setVersion(order.getVersion());
90 dto.setMaxBid(order.getMaxBid());
91 dto.setBuyer(toDTO(order.getBuyer(), dto));
92 dto.setItem(toDTO(order.getItem(), dto));
93 return dto;
94 }
95
96 public Person toDTO(Person buyer, Order order) {
97 Person dto = new Person(buyer.getId());
98 dto.setVersion(buyer.getVersion());
99 dto.setUserId(buyer.getUserId());
100 order.setBuyer(dto);
101 return dto;
102 }
103
104 private AuctionItem toDTO(AuctionItem item, Order order) {
105 AuctionItem dto = new AuctionItem(item.getId());
106 dto.setVersion(item.getVersion());
107 dto.setMinBid(item.getMinBid());
108 dto.setStartDate(item.getStartDate());
109 dto.setEndDate(item.getEndDate());
110 dto.setName(item.getName());
111 dto.setOwner(toDTO(item.getOwner(), dto));
112 dto.setBids(toDTO(item.getBids(), dto));
113 dto.setClosed(item.isClosed());
114 return dto;
115 }
116
117 public Person toDTO(Person owner, AuctionItem item) {
118 Person dto = new Person(owner.getId());
119 dto.setVersion(owner.getVersion());
120 dto.setUserId(owner.getUserId());
121 dto.getItems().add(item);
122 item.setOwner(dto);
123 return dto;
124 }
125
126 public List<Person> toDTOPeople(List<Person> people) {
127 List<Person> dtos = new ArrayList<Person>();
128 for (Person person : people) {
129 dtos.add(toDTO(person));
130 }
131 return dtos;
132 }
133
134 public Person toDTO(Person user) {
135 Person dto = new Person(user.getId());
136 dto.setUserId(user.getUserId());
137 dto.setName(user.getName());
138 dto.setVersion(user.getVersion());
139 dto.setItems(toDTO(user.getItems(), dto));
140 return dto;
141 }
142
143 public Collection<AuctionItem> toDTO(
144 Collection<AuctionItem> items, Person owner) {
145 Collection<AuctionItem> dtos = new ArrayList<AuctionItem>();
146 for(AuctionItem item : items) {
147 AuctionItem dto = new AuctionItem(item.getId());
148 dto.setVersion(item.getVersion());
149 dto.setName(item.getName());
150 dto.setOwner(owner);
151 owner.getItems().add(dto);
152 dto.setMinBid(item.getMinBid());
153 dto.setProductId(item.getProductId());
154 dto.setStartDate(item.getStartDate());
155 dto.setEndDate(item.getEndDate());
156 dto.setBids(toDTO(item.getBids(), dto));
157 if (item.getWinningBid() != null) {
158 for(Bid bid : dto.getBids()) {
159 if (bid.getId() == item.getWinningBid().getId()) {
160 dto.setWinningBid(bid);
161 }
162 }
163 }
164 dto.setClosed(item.isClosed());
165 dtos.add(dto);
166 }
167 return dtos;
168 }
169
170
171
172
173
174
175
176
177
178 public Bid toDTO(Bid bid, AuctionItem item) {
179 Bid dto = new Bid(bid.getId());
180 dto.setAmount(bid.getAmount());
181 dto.setItem(item);
182 item.getBids().add(dto);
183 dto.setBidder(toDTO(bid.getBidder(), dto));
184 return dto;
185 }
186
187
188
189
190
191
192
193
194
195 }