/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.tool.portfolio.xml.v1_0.jaxb;
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.joda.beans.BeanDefinition;
import org.joda.beans.PropertyDefinition;
import org.threeten.bp.LocalDate;
import org.threeten.bp.YearMonth;
import java.util.Map;
import org.joda.beans.BeanBuilder;
import org.joda.beans.JodaBeanUtils;
import org.joda.beans.MetaProperty;
import org.joda.beans.Property;
import org.joda.beans.impl.direct.DirectBeanBuilder;
import org.joda.beans.impl.direct.DirectMetaProperty;
import org.joda.beans.impl.direct.DirectMetaPropertyMap;
import com.opengamma.integration.tool.portfolio.xml.v1_0.conversion.ListedFutureSecurityExtractor;
import com.opengamma.integration.tool.portfolio.xml.v1_0.conversion.ListedSecurityExtractor;
@XmlRootElement(name = "futureSecurity")
@BeanDefinition
public class FutureSecurityDefinition extends ListedSecurityDefinition {
public enum ListedFutureType {
@XmlEnumValue(value = "equityIndexFuture")
EQUITY_INDEX_FUTURE,
@XmlEnumValue(value = "equityDividendFuture")
EQUITY_DIVIDEND_FUTURE
}
@XmlAttribute(name = "type", required = true)
@PropertyDefinition(validate = "notNull")
private ListedFutureType _futureType;
@XmlAttribute(name = "price", required = true)
@PropertyDefinition(validate = "notNull")
private BigDecimal _price;
@XmlAttribute(name = "futureExpiry", required = true)
@XmlJavaTypeAdapter(DerivativeExpiryDateAdapter.class)
@PropertyDefinition(validate = "notNull")
private YearMonth _futureExpiry;
@XmlAttribute(name = "settlementExchange")
@PropertyDefinition()
private String _settlementExchange;
@XmlAttribute(name = "settlemenDate")
@PropertyDefinition()
private LocalDate _settlementDate;
@XmlAttribute(name = "futureCategory")
@PropertyDefinition()
private String _futureCategory;
@Override
public ListedSecurityExtractor getSecurityExtractor() {
return new ListedFutureSecurityExtractor(this);
}
//------------------------- AUTOGENERATED START -------------------------
///CLOVER:OFF
/**
* The meta-bean for {@code FutureSecurityDefinition}.
* @return the meta-bean, not null
*/
public static FutureSecurityDefinition.Meta meta() {
return FutureSecurityDefinition.Meta.INSTANCE;
}
static {
JodaBeanUtils.registerMetaBean(FutureSecurityDefinition.Meta.INSTANCE);
}
@Override
public FutureSecurityDefinition.Meta metaBean() {
return FutureSecurityDefinition.Meta.INSTANCE;
}
@Override
protected Object propertyGet(String propertyName, boolean quiet) {
switch (propertyName.hashCode()) {
case 537589661: // futureType
return getFutureType();
case 106934601: // price
return getPrice();
case 797235414: // futureExpiry
return getFutureExpiry();
case 389497452: // settlementExchange
return getSettlementExchange();
case -295948169: // settlementDate
return getSettlementDate();
case -673825823: // futureCategory
return getFutureCategory();
}
return super.propertyGet(propertyName, quiet);
}
@Override
protected void propertySet(String propertyName, Object newValue, boolean quiet) {
switch (propertyName.hashCode()) {
case 537589661: // futureType
setFutureType((ListedFutureType) newValue);
return;
case 106934601: // price
setPrice((BigDecimal) newValue);
return;
case 797235414: // futureExpiry
setFutureExpiry((YearMonth) newValue);
return;
case 389497452: // settlementExchange
setSettlementExchange((String) newValue);
return;
case -295948169: // settlementDate
setSettlementDate((LocalDate) newValue);
return;
case -673825823: // futureCategory
setFutureCategory((String) newValue);
return;
}
super.propertySet(propertyName, newValue, quiet);
}
@Override
protected void validate() {
JodaBeanUtils.notNull(_futureType, "futureType");
JodaBeanUtils.notNull(_price, "price");
JodaBeanUtils.notNull(_futureExpiry, "futureExpiry");
super.validate();
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj != null && obj.getClass() == this.getClass()) {
FutureSecurityDefinition other = (FutureSecurityDefinition) obj;
return JodaBeanUtils.equal(getFutureType(), other.getFutureType()) &&
JodaBeanUtils.equal(getPrice(), other.getPrice()) &&
JodaBeanUtils.equal(getFutureExpiry(), other.getFutureExpiry()) &&
JodaBeanUtils.equal(getSettlementExchange(), other.getSettlementExchange()) &&
JodaBeanUtils.equal(getSettlementDate(), other.getSettlementDate()) &&
JodaBeanUtils.equal(getFutureCategory(), other.getFutureCategory()) &&
super.equals(obj);
}
return false;
}
@Override
public int hashCode() {
int hash = 7;
hash += hash * 31 + JodaBeanUtils.hashCode(getFutureType());
hash += hash * 31 + JodaBeanUtils.hashCode(getPrice());
hash += hash * 31 + JodaBeanUtils.hashCode(getFutureExpiry());
hash += hash * 31 + JodaBeanUtils.hashCode(getSettlementExchange());
hash += hash * 31 + JodaBeanUtils.hashCode(getSettlementDate());
hash += hash * 31 + JodaBeanUtils.hashCode(getFutureCategory());
return hash ^ super.hashCode();
}
//-----------------------------------------------------------------------
/**
* Gets the futureType.
* @return the value of the property, not null
*/
public ListedFutureType getFutureType() {
return _futureType;
}
/**
* Sets the futureType.
* @param futureType the new value of the property, not null
*/
public void setFutureType(ListedFutureType futureType) {
JodaBeanUtils.notNull(futureType, "futureType");
this._futureType = futureType;
}
/**
* Gets the the {@code futureType} property.
* @return the property, not null
*/
public final Property<ListedFutureType> futureType() {
return metaBean().futureType().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* Gets the price.
* @return the value of the property, not null
*/
public BigDecimal getPrice() {
return _price;
}
/**
* Sets the price.
* @param price the new value of the property, not null
*/
public void setPrice(BigDecimal price) {
JodaBeanUtils.notNull(price, "price");
this._price = price;
}
/**
* Gets the the {@code price} property.
* @return the property, not null
*/
public final Property<BigDecimal> price() {
return metaBean().price().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* Gets the futureExpiry.
* @return the value of the property, not null
*/
public YearMonth getFutureExpiry() {
return _futureExpiry;
}
/**
* Sets the futureExpiry.
* @param futureExpiry the new value of the property, not null
*/
public void setFutureExpiry(YearMonth futureExpiry) {
JodaBeanUtils.notNull(futureExpiry, "futureExpiry");
this._futureExpiry = futureExpiry;
}
/**
* Gets the the {@code futureExpiry} property.
* @return the property, not null
*/
public final Property<YearMonth> futureExpiry() {
return metaBean().futureExpiry().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* Gets the settlementExchange.
* @return the value of the property
*/
public String getSettlementExchange() {
return _settlementExchange;
}
/**
* Sets the settlementExchange.
* @param settlementExchange the new value of the property
*/
public void setSettlementExchange(String settlementExchange) {
this._settlementExchange = settlementExchange;
}
/**
* Gets the the {@code settlementExchange} property.
* @return the property, not null
*/
public final Property<String> settlementExchange() {
return metaBean().settlementExchange().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* Gets the settlementDate.
* @return the value of the property
*/
public LocalDate getSettlementDate() {
return _settlementDate;
}
/**
* Sets the settlementDate.
* @param settlementDate the new value of the property
*/
public void setSettlementDate(LocalDate settlementDate) {
this._settlementDate = settlementDate;
}
/**
* Gets the the {@code settlementDate} property.
* @return the property, not null
*/
public final Property<LocalDate> settlementDate() {
return metaBean().settlementDate().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* Gets the futureCategory.
* @return the value of the property
*/
public String getFutureCategory() {
return _futureCategory;
}
/**
* Sets the futureCategory.
* @param futureCategory the new value of the property
*/
public void setFutureCategory(String futureCategory) {
this._futureCategory = futureCategory;
}
/**
* Gets the the {@code futureCategory} property.
* @return the property, not null
*/
public final Property<String> futureCategory() {
return metaBean().futureCategory().createProperty(this);
}
//-----------------------------------------------------------------------
/**
* The meta-bean for {@code FutureSecurityDefinition}.
*/
public static class Meta extends ListedSecurityDefinition.Meta {
/**
* The singleton instance of the meta-bean.
*/
static final Meta INSTANCE = new Meta();
/**
* The meta-property for the {@code futureType} property.
*/
private final MetaProperty<ListedFutureType> _futureType = DirectMetaProperty.ofReadWrite(
this, "futureType", FutureSecurityDefinition.class, ListedFutureType.class);
/**
* The meta-property for the {@code price} property.
*/
private final MetaProperty<BigDecimal> _price = DirectMetaProperty.ofReadWrite(
this, "price", FutureSecurityDefinition.class, BigDecimal.class);
/**
* The meta-property for the {@code futureExpiry} property.
*/
private final MetaProperty<YearMonth> _futureExpiry = DirectMetaProperty.ofReadWrite(
this, "futureExpiry", FutureSecurityDefinition.class, YearMonth.class);
/**
* The meta-property for the {@code settlementExchange} property.
*/
private final MetaProperty<String> _settlementExchange = DirectMetaProperty.ofReadWrite(
this, "settlementExchange", FutureSecurityDefinition.class, String.class);
/**
* The meta-property for the {@code settlementDate} property.
*/
private final MetaProperty<LocalDate> _settlementDate = DirectMetaProperty.ofReadWrite(
this, "settlementDate", FutureSecurityDefinition.class, LocalDate.class);
/**
* The meta-property for the {@code futureCategory} property.
*/
private final MetaProperty<String> _futureCategory = DirectMetaProperty.ofReadWrite(
this, "futureCategory", FutureSecurityDefinition.class, String.class);
/**
* The meta-properties.
*/
private final Map<String, MetaProperty<?>> _metaPropertyMap$ = new DirectMetaPropertyMap(
this, (DirectMetaPropertyMap) super.metaPropertyMap(),
"futureType",
"price",
"futureExpiry",
"settlementExchange",
"settlementDate",
"futureCategory");
/**
* Restricted constructor.
*/
protected Meta() {
}
@Override
protected MetaProperty<?> metaPropertyGet(String propertyName) {
switch (propertyName.hashCode()) {
case 537589661: // futureType
return _futureType;
case 106934601: // price
return _price;
case 797235414: // futureExpiry
return _futureExpiry;
case 389497452: // settlementExchange
return _settlementExchange;
case -295948169: // settlementDate
return _settlementDate;
case -673825823: // futureCategory
return _futureCategory;
}
return super.metaPropertyGet(propertyName);
}
@Override
public BeanBuilder<? extends FutureSecurityDefinition> builder() {
return new DirectBeanBuilder<FutureSecurityDefinition>(new FutureSecurityDefinition());
}
@Override
public Class<? extends FutureSecurityDefinition> beanType() {
return FutureSecurityDefinition.class;
}
@Override
public Map<String, MetaProperty<?>> metaPropertyMap() {
return _metaPropertyMap$;
}
//-----------------------------------------------------------------------
/**
* The meta-property for the {@code futureType} property.
* @return the meta-property, not null
*/
public final MetaProperty<ListedFutureType> futureType() {
return _futureType;
}
/**
* The meta-property for the {@code price} property.
* @return the meta-property, not null
*/
public final MetaProperty<BigDecimal> price() {
return _price;
}
/**
* The meta-property for the {@code futureExpiry} property.
* @return the meta-property, not null
*/
public final MetaProperty<YearMonth> futureExpiry() {
return _futureExpiry;
}
/**
* The meta-property for the {@code settlementExchange} property.
* @return the meta-property, not null
*/
public final MetaProperty<String> settlementExchange() {
return _settlementExchange;
}
/**
* The meta-property for the {@code settlementDate} property.
* @return the meta-property, not null
*/
public final MetaProperty<LocalDate> settlementDate() {
return _settlementDate;
}
/**
* The meta-property for the {@code futureCategory} property.
* @return the meta-property, not null
*/
public final MetaProperty<String> futureCategory() {
return _futureCategory;
}
}
///CLOVER:ON
//-------------------------- AUTOGENERATED END --------------------------
}