package org.cryptocoinpartners.schema; import javax.persistence.Basic; import javax.persistence.Cacheable; import javax.persistence.Entity; import javax.persistence.Transient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Represents anything valuable and tradable, like currency or stock * * @author Tim Olson */ @Entity @Cacheable public abstract class Asset extends EntityBase { public static Asset forSymbol(String symbol) { // only Currency is supported return Currency.forSymbol(symbol); } @Basic(optional = false) public String getSymbol() { return symbol; } @Basic(optional = false) public double getBasis() { return basis; } @Transient public int getScale() { int length = (int) (Math.log10(Math.round(1 / basis))); return length; } @Override public String toString() { return symbol; } protected Asset(String symbol, double basis) { this.symbol = symbol; this.basis = basis; } // JPA protected Asset() { } protected void setSymbol(String symbol) { this.symbol = symbol; } protected void setBasis(double basis) { this.basis = basis; } private String symbol; private double basis; protected static Logger log = LoggerFactory.getLogger(Asset.class); }