View Javadoc
1   package org.oxerr.okcoin.websocket.dto;
2   
3   import java.math.BigDecimal;
4   import java.time.Instant;
5   import java.util.stream.Collectors;
6   
7   import javax.json.JsonArray;
8   import javax.json.JsonObject;
9   import javax.json.JsonValue;
10  
11  public class Depth extends org.oxerr.okcoin.rest.dto.Depth {
12  
13  	private static final long serialVersionUID = 2015022801L;
14  
15  	private static final BigDecimal[][] EMPTY_DEPTH = new BigDecimal[2][];
16  
17  	private final Instant timestamp;
18  
19  	public Depth(JsonValue jsonValue) {
20  		this((JsonObject) jsonValue);
21  	}
22  
23  	public Depth(JsonObject jsonObject) {
24  		this(jsonObject.getJsonArray("asks"), jsonObject.getJsonArray("bids"),
25  			Instant.ofEpochMilli(Long.parseLong(jsonObject.getString("timestamp"))));
26  	}
27  
28  	public Depth(JsonArray asks, JsonArray bids, Instant timestamp) {
29  		super(asks.stream().map(v -> {
30  			JsonArray a = (JsonArray) v;
31  			BigDecimal px = a.getJsonNumber(0).bigDecimalValue();
32  			BigDecimal qty = a.getJsonNumber(1).bigDecimalValue();
33  			return new BigDecimal[] { px, qty };
34  		}).collect(Collectors.toList()).toArray(EMPTY_DEPTH),
35  
36  		bids.stream().map(v -> {
37  			JsonArray a = (JsonArray) v;
38  			BigDecimal px = a.getJsonNumber(0).bigDecimalValue();
39  			BigDecimal qty = a.getJsonNumber(1).bigDecimalValue();
40  			return new BigDecimal[] { px, qty };
41  		}).collect(Collectors.toList()).toArray(EMPTY_DEPTH));
42  
43  		this.timestamp = timestamp;
44  	}
45  
46  	public Instant getTimestamp() {
47  		return timestamp;
48  	}
49  
50  }