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

81 lines
3.0 KiB
Java

package cy.agorise.graphenej.models;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import cy.agorise.graphenej.Price;
/**
* Price feed of a given asset.
*/
public class AssetFeed {
public static final String KEY_SETTLEMENT_PRICE = "settlement_price";
public static final String KEY_MAINTENANCE_COLLATERAL_RATIO = "maintenance_collateral_ratio";
public static final String KEY_MAXIMUM_SHORT_SQUEEZE_RATIO = "maximum_short_squeeze_ratio";
public static final String KEY_CORE_EXCHANGE_RATE = "core_exchange_rate";
private Price settlement_price;
private long maintenance_collateral_ratio;
private long maximum_short_squeeze_ratio;
private Price core_exchange_rate;
public AssetFeed(Price settlementPrice, long maintenanceCollateralRatio, long maximumShortSqueezeRatio, Price coreExchangeRate){
this.settlement_price = settlementPrice;
this.maintenance_collateral_ratio = maintenanceCollateralRatio;
this.maximum_short_squeeze_ratio = maximumShortSqueezeRatio;
this.core_exchange_rate = coreExchangeRate;
}
public Price getSettlementPrice() {
return settlement_price;
}
public void setSettlementPrice(Price settlement_price) {
this.settlement_price = settlement_price;
}
public long getMaintenanceCollateralRatio() {
return maintenance_collateral_ratio;
}
public void setMaintenanceCollateralRatio(long maintenance_collateral_ratio) {
this.maintenance_collateral_ratio = maintenance_collateral_ratio;
}
public long getMaximumShortSqueezeRatio() {
return maximum_short_squeeze_ratio;
}
public void setMaximumShortSqueezeRatio(long maximum_short_squeeze_ratio) {
this.maximum_short_squeeze_ratio = maximum_short_squeeze_ratio;
}
public Price getCoreExchangeRate() {
return core_exchange_rate;
}
public void setCoreExchangeRate(Price core_exchange_rate) {
this.core_exchange_rate = core_exchange_rate;
}
public static class AssetFeedDeserializer implements JsonDeserializer<AssetFeed> {
@Override
public AssetFeed deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
Price settlementPrice = context.deserialize(jsonObject.get(KEY_SETTLEMENT_PRICE).getAsJsonObject(), Price.class);
long collateralRatio = jsonObject.get(KEY_MAINTENANCE_COLLATERAL_RATIO).getAsLong();
long maximumShortSqueezeRatio = jsonObject.get(KEY_MAXIMUM_SHORT_SQUEEZE_RATIO).getAsLong();
Price coreExchangeRate = context.deserialize(jsonObject.get(KEY_CORE_EXCHANGE_RATE), Price.class);
AssetFeed assetFeed = new AssetFeed(settlementPrice, collateralRatio, maximumShortSqueezeRatio, coreExchangeRate);
return assetFeed;
}
}
}