graphenej/graphenej/src/main/java/cy/agorise/graphenej/models/BucketObject.java

85 lines
3.7 KiB
Java

package cy.agorise.graphenej.models;
import com.google.gson.*;
import cy.agorise.graphenej.Asset;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by nelson on 12/22/16.
*/
public class BucketObject {
public static final String KEY_HIGH_BASE = "high_base";
public static final String KEY_HIGH_QUOTE = "high_quote";
public static final String KEY_LOW_BASE = "low_base";
public static final String KEY_LOW_QUOTE = "low_quote";
public static final String KEY_OPEN_BASE = "open_base";
public static final String KEY_OPEN_QUOTE = "open_quote";
public static final String KEY_CLOSE_BASE = "close_base";
public static final String KEY_CLOSE_QUOTE = "close_quote";
public static final String KEY_BASE_VOLUME = "base_volume";
public static final String KEY_QUOTE_VOLUME = "quote_volume";
public static final String KEY_BASE = "base";
public static final String KEY_QUOTE = "quote";
public static final String KEY_SECONDS = "seconds";
public static final String KEY_OPEN = "open";
public static final String KEY_KEY = "key";
public String id;
public Key key;
public BigDecimal high_base;
public BigDecimal high_quote;
public BigDecimal low_base;
public BigDecimal low_quote;
public BigDecimal open_base;
public BigDecimal open_quote;
public BigDecimal close_base;
public BigDecimal close_quote;
public BigDecimal base_volume;
public BigDecimal quote_volume;
public static class Key {
public Asset base;
public Asset quote;
public long seconds;
public Date open;
}
public static class BucketDeserializer implements JsonDeserializer<BucketObject> {
@Override
public BucketObject deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonBucket = json.getAsJsonObject();
BucketObject bucket = new BucketObject();
bucket.high_base = jsonBucket.get(KEY_HIGH_BASE).getAsBigDecimal();
bucket.high_quote = jsonBucket.get(KEY_HIGH_QUOTE).getAsBigDecimal();
bucket.low_base = jsonBucket.get(KEY_LOW_BASE).getAsBigDecimal();
bucket.low_quote = jsonBucket.get(KEY_LOW_QUOTE).getAsBigDecimal();
bucket.open_base = jsonBucket.get(KEY_OPEN_BASE).getAsBigDecimal();
bucket.open_quote = jsonBucket.get(KEY_OPEN_QUOTE).getAsBigDecimal();
bucket.close_base = jsonBucket.get(KEY_CLOSE_BASE).getAsBigDecimal();
bucket.close_quote = jsonBucket.get(KEY_CLOSE_QUOTE).getAsBigDecimal();
bucket.base_volume = jsonBucket.get(KEY_BASE_VOLUME).getAsBigDecimal();
bucket.quote_volume = jsonBucket.get(KEY_QUOTE_VOLUME).getAsBigDecimal();
bucket.key = new Key();
String baseId = jsonBucket.get(KEY_KEY).getAsJsonObject().get(KEY_BASE).getAsString();
String quoteId = jsonBucket.get(KEY_KEY).getAsJsonObject().get(KEY_QUOTE).getAsString();
bucket.key.base = new Asset(baseId);
bucket.key.quote = new Asset(quoteId);
bucket.key.seconds = jsonBucket.get(KEY_KEY).getAsJsonObject().get(KEY_SECONDS).getAsLong();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
bucket.key.open = dateFormat.parse(jsonBucket.get(KEY_KEY).getAsJsonObject().get(KEY_OPEN).getAsString());
} catch (ParseException e) {
System.out.println("ParseException while deserializing BucketObject. Msg: "+e.getMessage());
}
return bucket;
}
}
}