View Javadoc
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 //    private List<Bid> toDTO(List<Bid> bids, AuctionItem item) {
171 //        List<Bid> dtos = new ArrayList<Bid>();
172 //        for(Bid bid : bids) {
173 //            dtos.add(toDTO(bid, item));    
174 //        }
175 //        return dtos;
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 //    private Person toDTO(Person bidder, Bid bid) {
188 //        Person dto = new Person(bidder.getId());
189 //        dto.setUserId(bidder.getUserId());
190 //        dto.setVersion(bidder.getVersion());
191 //        bid.setBidder(dto);
192 //        dto.getBids().add(bid);
193 //        return dto;
194 //    }
195 }