package org.cryptocoinpartners.schema;
import javax.annotation.Nullable;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import org.cryptocoinpartners.schema.dao.Dao;
import org.joda.time.Instant;
/**
* A Tick is a point-in-time snapshot of a Market's last price, volume and most recent Book
*
* @author Tim Olson
*/
@Entity
public class Tick extends PriceData implements Spread {
public Instant getStartInstant() {
return startInstant;
}
@Transient
public Instant getEndInstant() {
return getTime();
}
@ManyToOne
public Book getLastBook() {
return lastBook;
}
/** @return null if no book was found prior to the window */
@Override
@Transient
public @Nullable
Offer getBestBid() {
return lastBook == null ? null : lastBook.getBestBid();
}
/** @return null if no book was found prior to the window */
@Override
@Transient
public @Nullable
Offer getBestAsk() {
return lastBook == null ? null : lastBook.getBestAsk();
}
public Tick(Market market, Instant startInstant, Instant endInstant, @Nullable Long lastPriceCount, @Nullable Long volumeCount, Book lastBook) {
super(endInstant, null, market, lastPriceCount, volumeCount);
this.startInstant = startInstant;
this.lastBook = lastBook;
}
@Override
public String toString() {
return String.format("Tick{%s last:%g@%g bid:%s ask:%s}", getMarket(), getVolumeAsDouble(), getPriceAsDouble(), getBestBid(), getBestAsk());
}
// JPA
protected Tick() {
}
protected void setStartInstant(Instant startInstant) {
this.startInstant = startInstant;
}
protected void setLastBook(Book lastBook) {
this.lastBook = lastBook;
}
private Instant startInstant;
private Book lastBook;
@Override
public Offer getBestBidByVolume(DiscreteAmount volume) {
// TODO Auto-generated method stub
return null;
}
@Override
public Offer getBestAskByVolume(DiscreteAmount volume) {
// TODO Auto-generated method stub
return null;
}
@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() {
// TODO Auto-generated method stub
return null;
}
@Override
public void delete() {
// TODO Auto-generated method stub
}
@Override
public EntityBase refresh() {
// TODO Auto-generated method stub
return null;
}
}