1 package org.oxerr.peatio.websocket.dto;
2
3 import java.math.BigDecimal;
4 import java.time.Instant;
5 import java.util.Date;
6
7 import javax.json.JsonObject;
8
9 public class Trade extends org.oxerr.peatio.rest.dto.Trade {
10
11 private final Order bid, ask;
12
13 public Trade(long id, BigDecimal price, BigDecimal volume,
14 BigDecimal funds, String market, Date createdAt, String side,
15 Order bid, Order ask) {
16 super(id, price, volume, funds, market, createdAt, side, getOrderId(side, bid, ask));
17 this.bid = bid;
18 this.ask = ask;
19 }
20
21 public Trade (JsonObject jsonObject) {
22 this(
23 jsonObject.getJsonNumber("id").longValue(),
24 new BigDecimal(jsonObject.getString("price")),
25 new BigDecimal(jsonObject.getString("volume")),
26 new BigDecimal(jsonObject.getString("funds")),
27 jsonObject.getString("market"),
28 Date.from(Instant.parse(jsonObject.getString("created_at"))),
29 jsonObject.getString("side"),
30 Order.from(jsonObject.getJsonObject("bid")),
31 Order.from(jsonObject.getJsonObject("ask"))
32 );
33 }
34
35 private static Long getOrderId(String side, Order bid, Order ask) {
36 return side.equals("bid") ? bid.getId() : ask.getId();
37 }
38
39 public Order getOrder() {
40 return getSide().equals("bid") ? bid : ask;
41 }
42
43 }