/*
* Copyright 2014 http://Bither.net
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.bither.model;
import net.bither.bitherj.BitherjSettings.MarketType;
import net.bither.utils.ExchangeUtil;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Ticker implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
// key of
private final static String VOLUME = "volume";
private final static String LAST = "last";
private final static String HIGH = "high";
private final static String LOW = "low";
private final static String ASK = "ask";
private final static String BID = "bid";
/**
* total of btc
*/
private double mAmount;
private double mLevel;
private double pHigh;
private double pLow;
private double pNew;
private double mAmp;
private double pOpen;
private double pSell;
private double pBuy;
/**
* total of money
*/
private double mTotal;
private Date mDate;
private MarketType marketType;
public double getAmount() {
return mAmount;
}
public void setAmount(double mAmount) {
this.mAmount = mAmount;
}
public double getLevel() {
return mLevel;
}
public void setLevel(double mLevel) {
this.mLevel = mLevel;
}
public double getHigh() {
return pHigh;
}
public double getDefaultExchangeHigh() {
return pHigh * ExchangeUtil.getRate(getMarketType());
}
public void setHigh(double pHigh) {
this.pHigh = pHigh;
}
public double getLow() {
return pLow;
}
public double getDefaultExchangeLow() {
return pLow * ExchangeUtil.getRate(getMarketType());
}
public void setLow(double pLow) {
this.pLow = pLow;
}
public double getDefaultExchangePrice() {
return pNew * ExchangeUtil.getRate(getMarketType());
}
public double getPrice() {
return pNew;
}
public void setNew(double pNew) {
this.pNew = pNew;
}
public double getTotal() {
return mTotal;
}
public void setTotal(double mTotal) {
this.mTotal = mTotal;
}
public double getAmp() {
return mAmp;
}
public void setAmp(double mAmp) {
this.mAmp = mAmp;
}
public double getOpen() {
return pOpen;
}
public void setOpen(double pOpen) {
this.pOpen = pOpen;
}
public Date getDate() {
return mDate;
}
public void setDate(Date mDate) {
this.mDate = mDate;
}
public MarketType getMarketType() {
return marketType;
}
public void setMarketType(MarketType marketType) {
this.marketType = marketType;
}
public double getSell() {
return pSell;
}
public double getDefaultExchangeSell() {
return pSell * ExchangeUtil.getRate(getMarketType());
}
public void setSell(double pSell) {
this.pSell = pSell;
}
public double getBuy() {
return pBuy;
}
public double getDefaultExchangeBuy() {
return pBuy * ExchangeUtil.getRate(getMarketType());
}
public void setBuy(double pBuy) {
this.pBuy = pBuy;
}
private static Ticker formatTicker(JSONObject json, MarketType marketType)
throws JSONException {
Ticker ticker = new Ticker();
if (!json.isNull(VOLUME)) {
ticker.setAmount(json.getDouble(VOLUME) / Math.pow(10, 8));
}
if (!json.isNull(HIGH)) {
ticker.setHigh(json.getDouble(HIGH) / 100);
}
if (!json.isNull(LOW)) {
ticker.setLow(json.getDouble(LOW) / 100);
}
if (!json.isNull(LAST)) {
ticker.setNew(json.getDouble(LAST) / 100);
}
if (!json.isNull(BID)) {
ticker.setBuy(json.getDouble(BID) / 100);
}
if (!json.isNull(ASK)) {
ticker.setSell(json.getDouble(ASK) / 100);
}
ticker.setAmp(-1);
ticker.setTotal(-1);
ticker.setLevel(-1);
ticker.setOpen(-1);
ticker.setMarketType(marketType);
return ticker;
}
public static List<Ticker> formatList(JSONObject json) throws JSONException {
List<Ticker> tickers = new ArrayList<Ticker>();
for (int i = 0; i < MarketType.values().length; i++) {
String key = Integer.toString(i + 1);
if (!json.isNull(key)) {
JSONObject tickerJson = json.getJSONObject(key);
Ticker ticker = formatTicker(tickerJson, MarketType.values()[i]);
tickers.add(ticker);
}
}
return tickers;
}
}