/* ===========================================================
* TradeManager : a application to trade strategies for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Project Info: org.trade
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Oracle, Inc.
* in the United States and other countries.]
*
* (C) Copyright 2011-2011, by Simon Allen and Contributors.
*
* Original Author: Simon Allen;
* Contributor(s): -;
*
* Changes
* -------
*
*/
package org.trade.persistent.dao;
// Generated Feb 21, 2011 12:43:33 PM by Hibernate Tools 3.4.0.CR1
import static javax.persistence.GenerationType.IDENTITY;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;
import org.trade.core.dao.Aspect;
/**
* Contract generated by hbm2java
*
* @author Simon Allen
* @version $Revision: 1.0 $
*/
@Entity
@Table(name = "contract")
public class Contract extends Aspect implements Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = 5691902477608387034L;
/*
* Contract
*/
@NotNull
private String currency;
private String comboLegDescription;
@NotNull
private String exchange;
private ZonedDateTime expiry;
private Integer idContractIB;
private Boolean includeExpired;
private String localSymbol;
private BigDecimal priceMultiplier;
private String primaryExchange; // pick a non-aggregate (ie not the SMART
// exchange) exchange that the contract
// trades on. DO NOT SET TO SMART.
private String optionType; // P=Put, C=CALL
@NotNull
private String symbol;
private String secId;
private String secIdType; // CUSIP;SEDOL;ISIN;RIC
@NotNull
private String secType;
private BigDecimal strike;
private String tradingClass;
/*
* Contract Details
*/
private String category;
private String contractMonth;
private String longName;
private String industry;
private String liquidHours;
private String marketName;
private String orderTypes;
private BigDecimal minTick;
private BigDecimal priceMagnifier;
private String subCategory;
private String timeZoneId;
private String tradingHours;
private Integer underConId;
private String validExchanges;
private String evRule;
private BigDecimal evMultiplier;
private BigDecimal lastAskPrice = new BigDecimal(0);
private BigDecimal lastBidPrice = new BigDecimal(0);
private BigDecimal lastPrice = new BigDecimal(0);
private TradePosition tradePosition;
private List<Tradestrategy> tradestrategies = Collections.synchronizedList(new ArrayList<Tradestrategy>(0));
private List<TradePosition> tradePositions = new ArrayList<TradePosition>(0);
private List<Candle> candles = new ArrayList<Candle>(0);
public Contract() {
}
/**
* Constructor for Contract.
*
* @param secType
* String
* @param symbol
* String
* @param exchange
* String
* @param currency
* String
* @param expiry
* Date
*/
public Contract(String secType, String symbol, String exchange, String currency, ZonedDateTime expiry,
BigDecimal priceMultiplier) {
this.currency = currency;
this.exchange = exchange;
this.symbol = symbol;
this.secType = secType;
this.expiry = expiry;
this.priceMultiplier = priceMultiplier;
}
/**
* Method getIdContract.
*
* @return Integer
*/
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idContract", unique = true, nullable = false)
public Integer getIdContract() {
return this.id;
}
/**
* Method setIdContract.
*
* @param idContract
* Integer
*/
public void setIdContract(Integer idContract) {
this.id = idContract;
}
/**
* Method getCategory.
*
* @return String
*/
@Column(name = "category", length = 80)
public String getCategory() {
return this.category;
}
/**
* Method setCategory.
*
* @param category
* String
*/
public void setCategory(String category) {
this.category = category;
}
/**
* Method getCurrency.
*
* @return String
*/
@Column(name = "currency", nullable = false, length = 3)
public String getCurrency() {
return this.currency;
}
/**
* Method setCurrency.
*
* @param currency
* String
*/
public void setCurrency(String currency) {
this.currency = currency;
}
/**
* Method getComboLegDescription.
*
* @return String
*/
@Column(name = "comboLegDescription", nullable = false, length = 30)
public String getComboLegDescription() {
return this.comboLegDescription;
}
/**
* Method setComboLegDescription.
*
* @param comboLegDescription
* String
*/
public void setComboLegDescription(String comboLegDescription) {
this.comboLegDescription = comboLegDescription;
}
/**
* Method getContractMonth.
*
* @return String
*/
@Column(name = "contractMonth", length = 6)
public String getContractMonth() {
return this.contractMonth;
}
/**
* Method setContractMonth.
*
* @param contractMonth
* String
*/
public void setContractMonth(String contractMonth) {
this.contractMonth = contractMonth;
}
/**
* Method getLongName.
*
* @return String
*/
@Column(name = "longName", length = 80)
public String getLongName() {
return this.longName;
}
/**
* Method setLongName.
*
* @param longName
* String
*/
public void setLongName(String longName) {
this.longName = longName;
}
/**
* Method getEvMultiplier.
*
* @return BigDecimal
*/
@Column(name = "evMultiplier", precision = 10)
public BigDecimal getEvMultiplier() {
return this.evMultiplier;
}
/**
* Method setEvMultiplier.
*
* @param evMultiplier
* BigDecimal
*/
public void setEvMultiplier(BigDecimal evMultiplier) {
this.evMultiplier = evMultiplier;
}
/**
* Method getEvRule.
*
* @return String
*/
@Column(name = "evRule", length = 80)
public String getEvRule() {
return this.evRule;
}
/**
* Method setEvRule.
*
* @param evRule
* String
*/
public void setEvRule(String evRule) {
this.evRule = evRule;
}
/**
* Method getExchange.
*
* @return String
*/
@Column(name = "exchange", nullable = false, length = 30)
public String getExchange() {
return this.exchange;
}
/**
* Method setExchange.
*
* @param exchange
* String
*/
public void setExchange(String exchange) {
this.exchange = exchange;
}
/**
* Method getExpiry.
*
* @return ZonedDateTime
*/
@Column(name = "expiry", unique = true, nullable = false)
public ZonedDateTime getExpiry() {
return this.expiry;
}
/**
* Method setExpiry.
*
* @param expiry
* ZonedDateTime
*/
public void setExpiry(ZonedDateTime expiry) {
this.expiry = expiry;
}
/**
* Method getIdContractIB.
*
* @return Integer
*/
@Column(name = "idContractIB")
public Integer getIdContractIB() {
return this.idContractIB;
}
/**
* Method setIdContractIB.
*
* @param idContractIB
* Integer
*/
public void setIdContractIB(Integer idContractIB) {
this.idContractIB = idContractIB;
}
/**
* Method getIncludeExpired.
*
* @return Boolean
*/
@Column(name = "includeExpired")
public Boolean getIncludeExpired() {
return this.includeExpired;
}
/**
* Method setIncludeExpired.
*
* @param includeExpired
* Boolean
*/
public void setIncludeExpired(Boolean includeExpired) {
this.includeExpired = includeExpired;
}
/**
* Method getIndustry.
*
* @return String
*/
@Column(name = "industry", length = 80)
public String getIndustry() {
return this.industry;
}
/**
* Method setIndustry.
*
* @param industry
* String
*/
public void setIndustry(String industry) {
this.industry = industry;
}
/**
* Method getLiquidHours.
*
* @return String
*/
@Column(name = "liquidHours", length = 50)
public String getLiquidHours() {
return this.liquidHours;
}
/**
* Method setLiquidHours.
*
* @param liquidHours
* String
*/
public void setLiquidHours(String liquidHours) {
this.liquidHours = liquidHours;
}
/**
* Method getLastPrice.
*
* @return BigDecimal
*/
@Transient
public BigDecimal getLastPrice() {
return this.lastPrice;
}
/**
* Method setLastPrice.
*
* @param lastPrice
* BigDecimal
*/
public void setLastPrice(BigDecimal lastPrice) {
this.lastPrice = lastPrice;
}
/**
* Method getLastAskPrice.
*
* @return BigDecimal
*/
@Transient
public BigDecimal getLastAskPrice() {
return this.lastAskPrice;
}
/**
* Method setLastAskPrice.
*
* @param lastAskPrice
* BigDecimal
*/
public void setLastAskPrice(BigDecimal lastAskPrice) {
this.lastAskPrice = lastAskPrice;
}
/**
* Method getLastBidPrice.
*
* @return BigDecimal
*/
@Transient
public BigDecimal getLastBidPrice() {
return this.lastBidPrice;
}
/**
* Method setLastBidPrice.
*
* @param lastBidPrice
* BigDecimal
*/
public void setLastBidPrice(BigDecimal lastBidPrice) {
this.lastBidPrice = lastBidPrice;
}
/**
* Method getLocalSymbol.
*
* @return String
*/
@Column(name = "localSymbol", length = 20)
public String getLocalSymbol() {
return this.localSymbol;
}
/**
* Method setLocalSymbol.
*
* @param localSymbol
* String
*/
public void setLocalSymbol(String localSymbol) {
this.localSymbol = localSymbol;
}
/**
* Method getMarketName.
*
* @return String
*/
@Column(name = "marketName", length = 80)
public String getMarketName() {
return this.marketName;
}
/**
* Method setMarketName.
*
* @param marketName
* String
*/
public void setMarketName(String marketName) {
this.marketName = marketName;
}
/**
* Method getMinTick.
*
* @return BigDecimal
*/
@Column(name = "minTick", precision = 10)
public BigDecimal getMinTick() {
return this.minTick;
}
/**
* Method setMinTick.
*
* @param minTick
* BigDecimal
*/
public void setMinTick(BigDecimal minTick) {
this.minTick = minTick;
}
/**
* Method getOrderTypes.
*
* @return String
*/
@Column(name = "orderTypes", length = 50)
public String getOrderTypes() {
return this.orderTypes;
}
/**
* Method setOrderTypes.
*
* @param orderTypes
* String
*/
public void setOrderTypes(String orderTypes) {
this.orderTypes = orderTypes;
}
/**
* Method getPriceMagnifier.
*
* @return BigDecimal
*/
@Column(name = "priceMagnifier", precision = 10)
public BigDecimal getPriceMagnifier() {
return this.priceMagnifier;
}
/**
* Method setPriceMagnifier.
*
* @param priceMagnifier
* BigDecimal
*/
public void setPriceMagnifier(BigDecimal priceMagnifier) {
this.priceMagnifier = priceMagnifier;
}
/**
* Method getPriceMultiplier.
*
* @return BigDecimal
*/
@Column(name = "priceMultiplier", precision = 10)
public BigDecimal getPriceMultiplier() {
return this.priceMultiplier;
}
/**
* Method setPriceMultiplier.
*
* @param priceMultiplier
* BigDecimal
*/
public void setPriceMultiplier(BigDecimal priceMultiplier) {
this.priceMultiplier = priceMultiplier;
}
/**
* Method getPrimaryExchange.
*
* @return String
*/
@Column(name = "primaryExchange", length = 10)
public String getPrimaryExchange() {
return this.primaryExchange;
}
/**
* Method setPrimaryExchange.
*
* @param primaryExchange
* String
*/
public void setPrimaryExchange(String primaryExchange) {
this.primaryExchange = primaryExchange;
}
/**
* Method getOptionType .
*
* @return optionType
*/
@Column(name = "optionType ", length = 1)
public String getOptionType() {
return this.optionType;
}
/**
* Method setOptionType.
*
* @param optionType
* String
*/
public void setOptionType(String optionType) {
this.optionType = optionType;
}
/**
* Method getSymbol.
*
* @return String
*/
@Column(name = "symbol", unique = true, nullable = false, length = 20)
public String getSymbol() {
return this.symbol;
}
/**
* Method setSymbol.
*
* @param symbol
* String
*/
public void setSymbol(String symbol) {
this.symbol = symbol;
}
/**
* Method getSecId.
*
* @return String
*/
@Column(name = "secId", length = 10)
public String getSecId() {
return this.secId;
}
/**
* Method setSecId.
*
* @param secId
* String
*/
public void setSecId(String secId) {
this.secId = secId;
}
/**
* Method getSecIdType.
*
* @return String
*/
@Column(name = "secIdType", length = 5)
public String getSecIdType() {
return this.secIdType;
}
/**
* Method setSecIdType.
*
* @param secIdType
* String
*/
public void setSecIdType(String secIdType) {
this.secIdType = secIdType;
}
/**
* Method getSecType.
*
* @return String
*/
@Column(name = "secType", nullable = false, length = 4)
public String getSecType() {
return this.secType;
}
/**
* Method setSecType.
*
* @param secType
* String
*/
public void setSecType(String secType) {
this.secType = secType;
}
/**
* Method getStrike.
*
* @return BigDecimal
*/
@Column(name = "strike", precision = 10)
public BigDecimal getStrike() {
return this.strike;
}
/**
* Method setStrike.
*
* @param strike
* BigDecimal
*/
public void setStrike(BigDecimal strike) {
this.strike = strike;
}
/**
* Method getSubCategory.
*
* @return String
*/
@Column(name = "subCategory", length = 80)
public String getSubCategory() {
return this.subCategory;
}
/**
* Method setSubCategory.
*
* @param subCategory
* String
*/
public void setSubCategory(String subCategory) {
this.subCategory = subCategory;
}
/**
* Method getTradingClass.
*
* @return String
*/
@Column(name = "tradingClass", length = 80)
public String getTradingClass() {
return this.tradingClass;
}
/**
* Method setTradingClass.
*
* @param tradingClass
* String
*/
public void setTradingClass(String tradingClass) {
this.tradingClass = tradingClass;
}
/**
* Method getTradingHours.
*
* @return String
*/
@Column(name = "tradingHours", length = 100)
public String getTradingHours() {
return this.tradingHours;
}
/**
* Method setTradingHours.
*
* @param tradingHours
* String
*/
public void setTradingHours(String tradingHours) {
this.tradingHours = tradingHours;
}
/**
* Method setTimeZoneId.
*
* @param timeZoneId
* String
*/
public void setTimeZoneId(String timeZoneId) {
this.timeZoneId = timeZoneId;
}
/**
* Method getTimeZoneId.
*
* @return String
*/
@Column(name = "timeZoneId", length = 7)
public String getTimeZoneId() {
return this.timeZoneId;
}
/**
* Method setUnderConId.
*
* @param underConId
* Integer
*/
public void setUnderConId(Integer underConId) {
this.underConId = underConId;
}
/**
* Method getUnderConId.
*
* @return Integer
*/
@Column(name = "underConId", length = 3)
public Integer getUnderConId() {
return this.underConId;
}
/**
* Method setValidExchanges.
*
* @param validExchanges
* String
*/
public void setValidExchanges(String validExchanges) {
this.validExchanges = validExchanges;
}
/**
* Method getValidExchanges.
*
* @return String
*/
@Column(name = "validExchanges", length = 200)
public String getValidExchanges() {
return this.validExchanges;
}
/**
* Method getVersion.
*
* @return Integer
*/
@Version
@Column(name = "version")
public Integer getVersion() {
return this.version;
}
/**
* Method setVersion.
*
* @param version
* Integer
*/
public void setVersion(Integer version) {
this.version = version;
}
/**
* Method addTradestrategy.
*
* @param tradestrategy
* Tradestrategy
*/
public void addTradestrategy(Tradestrategy tradestrategy) {
this.tradestrategies.add(tradestrategy);
}
/**
* Method removeTradestrategies.
*
* @param tradestrategy
* Tradestrategy
*/
public boolean removeTradestrategy(Tradestrategy tradestrategy) {
for (ListIterator<Tradestrategy> itemIter = this.tradestrategies.listIterator(); itemIter.hasNext();) {
Tradestrategy item = itemIter.next();
if (item.equals(tradestrategy)) {
itemIter.remove();
return true;
}
}
return false;
}
/**
* Method getTradestrategies.
*
* Note this relationship is not used except in a local way to monitor
* tradestrategies that are submitted via the broker interface hence the use
* of Transient. This allows us to add to the collection.
*
* @return List<Tradestrategy>
*/
// @OneToMany(mappedBy = "contract", fetch = FetchType.LAZY)
@Transient
public List<Tradestrategy> getTradestrategies() {
return this.tradestrategies;
}
/**
* Method setTradestrategies.
*
* @param tradestrategies
* List<Tradestrategy>
*/
public void setTradestrategies(List<Tradestrategy> tradestrategies) {
this.tradestrategies = tradestrategies;
}
/**
* Method getTradePosition.
*
* @return TradePosition
*/
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idTradePosition", insertable = false, updatable = true, nullable = true)
public TradePosition getTradePosition() {
return this.tradePosition;
}
/**
* Method setTradePosition.
*
* @param tradePosition
* TradePosition
*/
public void setTradePosition(TradePosition tradePosition) {
this.tradePosition = tradePosition;
}
/**
* Method getTradePositions.
*
* @return List<TradePosition>
*/
@OneToMany(mappedBy = "contract", fetch = FetchType.LAZY)
public List<TradePosition> getTradePositions() {
return this.tradePositions;
}
/**
* Method setTradePositions.
*
* @param tradePositions
* List<TradePosition>
*/
public void setTradePositions(List<TradePosition> tradePositions) {
this.tradePositions = tradePositions;
}
/**
* Method getCandles.
*
* @return List<Candle>
*/
@OneToMany(mappedBy = "contract", fetch = FetchType.LAZY, cascade = { CascadeType.REFRESH, CascadeType.REMOVE })
public List<Candle> getCandles() {
return this.candles;
}
/**
* Method setCandles.
*
* @param candles
* List<Candle>
*/
public void setCandles(List<Candle> candles) {
this.candles = candles;
}
/**
* Method addTradePosition.
*
* @param tradePosition
* TradePosition
*/
public void addTradePosition(TradePosition tradePosition) {
int index = 0;
for (TradePosition currTradePosition : this.tradePositions) {
if (currTradePosition.getIdTradePosition().equals(tradePosition.getIdTradePosition())) {
index = this.tradePositions.indexOf(currTradePosition);
break;
}
}
if (index > 0)
this.tradePositions.remove(index);
this.tradePositions.add(tradePosition);
}
/**
* Method equals.
*
* @param objectToCompare
* Object
* @return boolean
*/
public boolean equals(Object objectToCompare) {
if (super.equals(objectToCompare))
return true;
if (objectToCompare instanceof Contract) {
Contract contract = (Contract) objectToCompare;
if (this.getSymbol().equals(contract.getSymbol())) {
if (this.getSecType().equals(contract.getSecType())) {
if (this.getExchange().equals(contract.getExchange())) {
if (this.getCurrency().equals(contract.getCurrency())) {
return true;
}
}
}
}
}
return false;
}
/**
* Method clone.
*
* @return Object
* @throws CloneNotSupportedException
*/
public Object clone() throws CloneNotSupportedException {
Contract contract = (Contract) super.clone();
List<Tradestrategy> tradestrategies = new ArrayList<Tradestrategy>(0);
contract.setTradestrategies(tradestrategies);
List<TradePosition> tradePositions = new ArrayList<TradePosition>(0);
contract.setTradePositions(tradePositions);
return contract;
}
/**
* Method hashCode.
*
* For every field tested in the equals-Method, calculate a hash code c by:
*
* If the field f is a boolean: calculate * (f ? 0 : 1);
*
* If the field f is a byte, char, short or int: calculate (int)f;
*
* If the field f is a long: calculate (int)(f ^ (f >>> 32));
*
* If the field f is a float: calculate Float.floatToIntBits(f);
*
* If the field f is a double: calculate Double.doubleToLongBits(f) and
* handle the return value like every long value;
*
* If the field f is an object: Use the result of the hashCode() method or 0
* if f == null;
*
* If the field f is an array: See every field as separate element and
* calculate the hash value in a recursive fashion and combine the values as
* described next.
*
* @return int
*/
public int hashCode() {
int hash = super.hashCode();
hash = hash + (this.getCurrency() == null ? 0 : this.getCurrency().hashCode());
hash = hash + (this.getExchange() == null ? 0 : this.getExchange().hashCode());
hash = hash + (this.getSecType() == null ? 0 : this.getSecType().hashCode());
hash = hash + (this.getSymbol() == null ? 0 : this.getSymbol().hashCode());
return hash;
}
/**
* Method toString.
*
* @return String
*/
public String toString() {
return getSymbol().toUpperCase();
}
}