package org.cryptocoinpartners.schema;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.persistence.ManyToOne;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToOne;
import javax.persistence.Transient;
import org.cryptocoinpartners.schema.dao.Dao;
import org.cryptocoinpartners.schema.dao.HoldingDao;
import com.google.inject.Inject;
/**
* A Holding represents an Asset on an Exchange. It does not specify how much of the asset is held. See Position
*
* @author Tim Olson
*/
@MappedSuperclass
public class Holding extends EntityBase {
@Inject
protected HoldingDao holdingDao;
public static Holding forSymbol(String symbol) {
Matcher matcher = Pattern.compile("(\\w+):(\\w+)").matcher(symbol);
if (!matcher.matches())
throw new IllegalArgumentException("Could not parse Holding symbol " + symbol);
return new Holding(Exchange.forSymbol(matcher.group(1)), Asset.forSymbol(matcher.group(2)));
}
public Holding(Exchange exchange, Asset asset) {
this.exchange = exchange;
this.asset = asset;
}
@ManyToOne(optional = true)
public Exchange getExchange() {
return exchange;
}
@OneToOne(optional = true)
public Asset getAsset() {
return asset;
}
@Override
public String toString() {
return exchange.getSymbol() + asset.getSymbol();
}
// JPA
protected Holding() {
}
protected void setExchange(Exchange exchange) {
this.exchange = exchange;
}
protected void setAsset(Asset asset) {
this.asset = asset;
}
protected Exchange exchange;
protected Asset asset;
@Override
public void persit() {
// TODO Auto-generated method stub
}
@Override
public void detach() {
// TODO Auto-generated method stub
}
@Override
public void merge() {
// TODO Auto-generated method stub
}
@Override
@Transient
public Dao getDao() {
return holdingDao;
}
@Override
public void delete() {
// TODO Auto-generated method stub
}
@Override
public EntityBase refresh() {
// TODO Auto-generated method stub
return null;
}
}