/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.model.fixedincome; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; import org.joda.beans.Bean; import org.joda.beans.BeanBuilder; import org.joda.beans.BeanDefinition; import org.joda.beans.DerivedProperty; import org.joda.beans.JodaBeanUtils; import org.joda.beans.MetaProperty; import org.joda.beans.Property; import org.joda.beans.PropertyDefinition; import org.joda.beans.impl.direct.DirectBean; import org.joda.beans.impl.direct.DirectBeanBuilder; import org.joda.beans.impl.direct.DirectMetaBean; import org.joda.beans.impl.direct.DirectMetaProperty; import org.joda.beans.impl.direct.DirectMetaPropertyMap; import org.threeten.bp.LocalDate; import com.opengamma.util.ArgumentChecker; import com.opengamma.util.money.CurrencyAmount; import com.opengamma.util.time.Tenor; /** * Container for the relevant details for pricing a floating swap leg, with the * entries * <p> * <li></li> * @deprecated Use FloatingLegCashFlows */ @Deprecated @BeanDefinition public class FloatingSwapLegDetails extends DirectBean implements Serializable { /** * The start accrual dates label. */ public static final String START_ACCRUAL_DATES = "Start Accrual Date"; /** * The end accrual dates label. */ public static final String END_ACCRUAL_DATES = "End Accrual Date"; /** * The accrual fraction label. */ public static final String ACCRUAL_YEAR_FRACTION = "Accrual Year Fraction"; /** * The start fixing date label. */ public static final String START_FIXING_DATES = "Start Fixing Date"; /** * The end fixing date label. */ public static final String END_FIXING_DATES = "End Fixing Date"; /** * The fixing fraction label. */ public static final String FIXING_FRACTIONS = "Fixing Year Fraction"; /** * The forward rate. Used when the fixing is in the future. */ public static final String FORWARD_RATE = "Forward Rate"; /** * The fixed rate. Used when the fixing is known. */ public static final String FIXED_RATE = "Fixed Rate"; /** * The payment date. */ public static final String PAYMENT_DATE = "Payment Date"; /** * The payment time. */ public static final String PAYMENT_TIME = "Payment Time"; /** * The payment amount. */ public static final String PAYMENT_AMOUNT = "Payment Amount"; /** * The notional. */ public static final String NOTIONAL = "Notional"; /** * The spread. */ public static final String SPREAD = "Spread"; /** * The gearing. */ public static final String GEARING = "Gearing"; /** * The payment discount factor. Used when the fixing is known */ public static final String PAYMENT_DISCOUNT_FACTOR = "Payment Discount Factor"; /** * The projected amount. */ public static final String PROJECTED_AMOUNT = "Projected Amount"; /** * The index tenor. */ public static final String INDEX_TERM = "Index Tenor"; /** Serialization version. */ private static final long serialVersionUID = 1L; /** * An array of accrual start dates. */ @PropertyDefinition(validate = "notNull") private LocalDate[] _accrualStart; /** * An array of accrual end dates. */ @PropertyDefinition(validate = "notNull") private LocalDate[] _accrualEnd; /** * An array of accrual year fractions. */ @PropertyDefinition(validate = "notNull") private double[] _accrualYearFractions; /** * An array of fixing start dates. */ @PropertyDefinition(validate = "notNull") private LocalDate[] _fixingStart; /** * An array of fixing end dates. */ @PropertyDefinition(validate = "notNull") private LocalDate[] _fixingEnd; /** * An array of fixing year fractions. May contain null values if there have been fixings as of the valuation date. */ @PropertyDefinition(validate = "notNull") private Double[] _fixingYearFractions; /** * An array of forward rates. */ @PropertyDefinition(validate = "notNull") private Double[] _forwardRates; /** * An array of fixed rates. May contain null values if there have been no fixings as of the valuation date. */ @PropertyDefinition(validate = "notNull") private Double[] _fixedRates; /** * An array of payment dates. */ @PropertyDefinition(validate = "notNull") private LocalDate[] _paymentDates; /** * An array of payment times. */ @PropertyDefinition(validate = "notNull") private double[] _paymentTimes; /** * An array of payment amounts. May contain nulls if there have been no fixings as of the valuation date. */ @PropertyDefinition(validate = "notNull") private CurrencyAmount[] _paymentAmounts; /** * An array of notionals. */ @PropertyDefinition(validate = "notNull") private CurrencyAmount[] _notionals; /** * An array of spreads. */ @PropertyDefinition(validate = "notNull") private double[] _spreads; /** * An array of gearings. */ @PropertyDefinition(validate = "notNull") private double[] _gearings; /** * An array of payment discount factors. */ @PropertyDefinition(validate = "notNull") private double[] _paymentDiscountFactors; /** * An array of projected amounts. May contain nulls if there has been a fixing as of the valuation date. */ @PropertyDefinition(validate = "notNull") private CurrencyAmount[] _projectedAmounts; /** * An array of index tenors. May contain nulls if there has been a fixing as of the valuation date. */ @PropertyDefinition(validate = "notNull") private List<Set<Tenor>> _indexTenors; /** * The discounted payment amount */ public static final String DISCOUNTED_PAYMENT_AMOUNT = "Discounted Payment Amount"; /** * The discounted projected amount */ public static final String DISCOUNTED_PROJECTED_PAYMENT = "Discounted Projected Payment"; /** * For the builder. */ /* package */FloatingSwapLegDetails() { super(); } /** * @param accrualStartDates The start accrual dates, not null * @param accrualEndDates The end accrual dates, not null * @param accrualYearFractions The accrual year fractions, not null * @param fixingStart The fixing start dates, not null * @param fixingEnd The fixing end dates, not null * @param fixingYearFractions The fixing year fractions, not null * @param forwardRates The forward rates, not null * @param fixedRates The fixed rates, not null * @param paymentDates The payment dates, not null * @param paymentTimes The payment times, not null * @param paymentDiscountFactors The payment discount factors, not null * @param paymentAmounts The payment amounts, not null * @param projectedAmounts The projected amounts, not null * @param notionals The notionals, not null * @param spreads The spreads, not null * @param gearings The gearings, not null * @param indexTenors The index tenors, not null */ public FloatingSwapLegDetails(final LocalDate[] accrualStartDates, final LocalDate[] accrualEndDates, final double[] accrualYearFractions, final LocalDate[] fixingStart, final LocalDate[] fixingEnd, final Double[] fixingYearFractions, final Double[] forwardRates, final Double[] fixedRates, final LocalDate[] paymentDates, final double[] paymentTimes, final double[] paymentDiscountFactors, final CurrencyAmount[] paymentAmounts, final CurrencyAmount[] projectedAmounts, final CurrencyAmount[] notionals, final double[] spreads, final double[] gearings, final List<Set<Tenor>> indexTenors) { setAccrualStart(accrualStartDates); setAccrualEnd(accrualEndDates); setAccrualYearFractions(accrualYearFractions); setFixingStart(fixingStart); setFixingEnd(fixingEnd); setFixingYearFractions(fixingYearFractions); setForwardRates(forwardRates); setFixedRates(fixedRates); setPaymentDates(paymentDates); setPaymentTimes(paymentTimes); setPaymentDiscountFactors(paymentDiscountFactors); setPaymentAmounts(paymentAmounts); setProjectedAmounts(projectedAmounts); setNotionals(notionals); setSpreads(spreads); setGearings(gearings); setIndexTenors(indexTenors); final int n = notionals.length; ArgumentChecker.isTrue(n == accrualStartDates.length, "number of accrual start dates must equal number of notionals"); ArgumentChecker.isTrue(n == accrualEndDates.length, "number of accrual end dates must equal number of notionals"); ArgumentChecker.isTrue(n == accrualYearFractions.length, "number of accrual year fractions must equal number of notionals"); ArgumentChecker.isTrue(n == fixingStart.length, "number of fixing start dates must equal number of notionals"); ArgumentChecker.isTrue(n == fixingEnd.length, "number of fixing end dates must equal number of notionals"); ArgumentChecker.isTrue(n == fixingYearFractions.length, "number of fixing year fractions must equal number of notionals"); ArgumentChecker.isTrue(n == forwardRates.length, "number of forward rates must equal number of notionals"); ArgumentChecker.isTrue(n == fixedRates.length, "number of fixed rates must equal number of notionals"); ArgumentChecker.isTrue(n == paymentDates.length, "number of payment dates must equal number of notionals"); ArgumentChecker.isTrue(n == paymentDiscountFactors.length, "number of payment discount factors must equal number of notionals"); ArgumentChecker.isTrue(n == paymentAmounts.length, "number of payment amounts must equal number of notionals"); ArgumentChecker.isTrue(n == projectedAmounts.length, "number of projected amounts must equal number of notionals"); ArgumentChecker.isTrue(n == spreads.length, "number of spreads must equal number of notionals"); ArgumentChecker.isTrue(n == gearings.length, "number of gearings must equal number of notionals"); ArgumentChecker.isTrue(n == indexTenors.size(), "number of index tenors must equal number of notionals"); } /** * Gets the total number of cash-flows. * @return The total number of cash-flows */ @DerivedProperty public int getNumberOfCashFlows() { return getNotionals().length; } /** * Gets the number of fixed cash-flows. * @return The number of fixed cash-flows */ @DerivedProperty public int getNumberOfFixedCashFlows() { return getFixedRates().length; } /** * Gets the number of floating cash-flows. * @return The number of floating cash-flows */ @DerivedProperty public int getNumberOfFloatingCashFlows() { return getForwardRates().length; } /** * Gets the discounted payment amounts. * @return the discounted cashflows */ @DerivedProperty public CurrencyAmount[] getDiscountedPaymentAmounts() { final CurrencyAmount[] cashflows = new CurrencyAmount[getNumberOfCashFlows()]; for (int i = 0; i < getNumberOfCashFlows(); i++) { final CurrencyAmount payment = getPaymentAmounts()[i]; if (payment == null) { continue; } final double df = getPaymentDiscountFactors()[i]; cashflows[i] = CurrencyAmount.of(payment.getCurrency(), payment.getAmount() * df); } return cashflows; } /** * Gets the discounted projected payment amounts. * @return the discounted cashflows */ @DerivedProperty public CurrencyAmount[] getDiscountedProjectedAmounts() { final CurrencyAmount[] cashflows = new CurrencyAmount[getNumberOfCashFlows()]; for (int i = 0; i < getNumberOfCashFlows(); i++) { final CurrencyAmount payment = getProjectedAmounts()[i]; if (payment == null) { continue; } final double df = getPaymentDiscountFactors()[i]; cashflows[i] = CurrencyAmount.of(payment.getCurrency(), payment.getAmount() * df); } return cashflows; } //------------------------- AUTOGENERATED START ------------------------- ///CLOVER:OFF /** * The meta-bean for {@code FloatingSwapLegDetails}. * @return the meta-bean, not null */ public static FloatingSwapLegDetails.Meta meta() { return FloatingSwapLegDetails.Meta.INSTANCE; } static { JodaBeanUtils.registerMetaBean(FloatingSwapLegDetails.Meta.INSTANCE); } @Override public FloatingSwapLegDetails.Meta metaBean() { return FloatingSwapLegDetails.Meta.INSTANCE; } //----------------------------------------------------------------------- /** * Gets an array of accrual start dates. * @return the value of the property, not null */ public LocalDate[] getAccrualStart() { return _accrualStart; } /** * Sets an array of accrual start dates. * @param accrualStart the new value of the property, not null */ public void setAccrualStart(LocalDate[] accrualStart) { JodaBeanUtils.notNull(accrualStart, "accrualStart"); this._accrualStart = accrualStart; } /** * Gets the the {@code accrualStart} property. * @return the property, not null */ public final Property<LocalDate[]> accrualStart() { return metaBean().accrualStart().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of accrual end dates. * @return the value of the property, not null */ public LocalDate[] getAccrualEnd() { return _accrualEnd; } /** * Sets an array of accrual end dates. * @param accrualEnd the new value of the property, not null */ public void setAccrualEnd(LocalDate[] accrualEnd) { JodaBeanUtils.notNull(accrualEnd, "accrualEnd"); this._accrualEnd = accrualEnd; } /** * Gets the the {@code accrualEnd} property. * @return the property, not null */ public final Property<LocalDate[]> accrualEnd() { return metaBean().accrualEnd().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of accrual year fractions. * @return the value of the property, not null */ public double[] getAccrualYearFractions() { return _accrualYearFractions; } /** * Sets an array of accrual year fractions. * @param accrualYearFractions the new value of the property, not null */ public void setAccrualYearFractions(double[] accrualYearFractions) { JodaBeanUtils.notNull(accrualYearFractions, "accrualYearFractions"); this._accrualYearFractions = accrualYearFractions; } /** * Gets the the {@code accrualYearFractions} property. * @return the property, not null */ public final Property<double[]> accrualYearFractions() { return metaBean().accrualYearFractions().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of fixing start dates. * @return the value of the property, not null */ public LocalDate[] getFixingStart() { return _fixingStart; } /** * Sets an array of fixing start dates. * @param fixingStart the new value of the property, not null */ public void setFixingStart(LocalDate[] fixingStart) { JodaBeanUtils.notNull(fixingStart, "fixingStart"); this._fixingStart = fixingStart; } /** * Gets the the {@code fixingStart} property. * @return the property, not null */ public final Property<LocalDate[]> fixingStart() { return metaBean().fixingStart().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of fixing end dates. * @return the value of the property, not null */ public LocalDate[] getFixingEnd() { return _fixingEnd; } /** * Sets an array of fixing end dates. * @param fixingEnd the new value of the property, not null */ public void setFixingEnd(LocalDate[] fixingEnd) { JodaBeanUtils.notNull(fixingEnd, "fixingEnd"); this._fixingEnd = fixingEnd; } /** * Gets the the {@code fixingEnd} property. * @return the property, not null */ public final Property<LocalDate[]> fixingEnd() { return metaBean().fixingEnd().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of fixing year fractions. May contain null values if there have been fixings as of the valuation date. * @return the value of the property, not null */ public Double[] getFixingYearFractions() { return _fixingYearFractions; } /** * Sets an array of fixing year fractions. May contain null values if there have been fixings as of the valuation date. * @param fixingYearFractions the new value of the property, not null */ public void setFixingYearFractions(Double[] fixingYearFractions) { JodaBeanUtils.notNull(fixingYearFractions, "fixingYearFractions"); this._fixingYearFractions = fixingYearFractions; } /** * Gets the the {@code fixingYearFractions} property. * @return the property, not null */ public final Property<Double[]> fixingYearFractions() { return metaBean().fixingYearFractions().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of forward rates. * @return the value of the property, not null */ public Double[] getForwardRates() { return _forwardRates; } /** * Sets an array of forward rates. * @param forwardRates the new value of the property, not null */ public void setForwardRates(Double[] forwardRates) { JodaBeanUtils.notNull(forwardRates, "forwardRates"); this._forwardRates = forwardRates; } /** * Gets the the {@code forwardRates} property. * @return the property, not null */ public final Property<Double[]> forwardRates() { return metaBean().forwardRates().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of fixed rates. May contain null values if there have been no fixings as of the valuation date. * @return the value of the property, not null */ public Double[] getFixedRates() { return _fixedRates; } /** * Sets an array of fixed rates. May contain null values if there have been no fixings as of the valuation date. * @param fixedRates the new value of the property, not null */ public void setFixedRates(Double[] fixedRates) { JodaBeanUtils.notNull(fixedRates, "fixedRates"); this._fixedRates = fixedRates; } /** * Gets the the {@code fixedRates} property. * @return the property, not null */ public final Property<Double[]> fixedRates() { return metaBean().fixedRates().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of payment dates. * @return the value of the property, not null */ public LocalDate[] getPaymentDates() { return _paymentDates; } /** * Sets an array of payment dates. * @param paymentDates the new value of the property, not null */ public void setPaymentDates(LocalDate[] paymentDates) { JodaBeanUtils.notNull(paymentDates, "paymentDates"); this._paymentDates = paymentDates; } /** * Gets the the {@code paymentDates} property. * @return the property, not null */ public final Property<LocalDate[]> paymentDates() { return metaBean().paymentDates().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of payment times. * @return the value of the property, not null */ public double[] getPaymentTimes() { return _paymentTimes; } /** * Sets an array of payment times. * @param paymentTimes the new value of the property, not null */ public void setPaymentTimes(double[] paymentTimes) { JodaBeanUtils.notNull(paymentTimes, "paymentTimes"); this._paymentTimes = paymentTimes; } /** * Gets the the {@code paymentTimes} property. * @return the property, not null */ public final Property<double[]> paymentTimes() { return metaBean().paymentTimes().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of payment amounts. May contain nulls if there have been no fixings as of the valuation date. * @return the value of the property, not null */ public CurrencyAmount[] getPaymentAmounts() { return _paymentAmounts; } /** * Sets an array of payment amounts. May contain nulls if there have been no fixings as of the valuation date. * @param paymentAmounts the new value of the property, not null */ public void setPaymentAmounts(CurrencyAmount[] paymentAmounts) { JodaBeanUtils.notNull(paymentAmounts, "paymentAmounts"); this._paymentAmounts = paymentAmounts; } /** * Gets the the {@code paymentAmounts} property. * @return the property, not null */ public final Property<CurrencyAmount[]> paymentAmounts() { return metaBean().paymentAmounts().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of notionals. * @return the value of the property, not null */ public CurrencyAmount[] getNotionals() { return _notionals; } /** * Sets an array of notionals. * @param notionals the new value of the property, not null */ public void setNotionals(CurrencyAmount[] notionals) { JodaBeanUtils.notNull(notionals, "notionals"); this._notionals = notionals; } /** * Gets the the {@code notionals} property. * @return the property, not null */ public final Property<CurrencyAmount[]> notionals() { return metaBean().notionals().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of spreads. * @return the value of the property, not null */ public double[] getSpreads() { return _spreads; } /** * Sets an array of spreads. * @param spreads the new value of the property, not null */ public void setSpreads(double[] spreads) { JodaBeanUtils.notNull(spreads, "spreads"); this._spreads = spreads; } /** * Gets the the {@code spreads} property. * @return the property, not null */ public final Property<double[]> spreads() { return metaBean().spreads().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of gearings. * @return the value of the property, not null */ public double[] getGearings() { return _gearings; } /** * Sets an array of gearings. * @param gearings the new value of the property, not null */ public void setGearings(double[] gearings) { JodaBeanUtils.notNull(gearings, "gearings"); this._gearings = gearings; } /** * Gets the the {@code gearings} property. * @return the property, not null */ public final Property<double[]> gearings() { return metaBean().gearings().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of payment discount factors. * @return the value of the property, not null */ public double[] getPaymentDiscountFactors() { return _paymentDiscountFactors; } /** * Sets an array of payment discount factors. * @param paymentDiscountFactors the new value of the property, not null */ public void setPaymentDiscountFactors(double[] paymentDiscountFactors) { JodaBeanUtils.notNull(paymentDiscountFactors, "paymentDiscountFactors"); this._paymentDiscountFactors = paymentDiscountFactors; } /** * Gets the the {@code paymentDiscountFactors} property. * @return the property, not null */ public final Property<double[]> paymentDiscountFactors() { return metaBean().paymentDiscountFactors().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of projected amounts. May contain nulls if there has been a fixing as of the valuation date. * @return the value of the property, not null */ public CurrencyAmount[] getProjectedAmounts() { return _projectedAmounts; } /** * Sets an array of projected amounts. May contain nulls if there has been a fixing as of the valuation date. * @param projectedAmounts the new value of the property, not null */ public void setProjectedAmounts(CurrencyAmount[] projectedAmounts) { JodaBeanUtils.notNull(projectedAmounts, "projectedAmounts"); this._projectedAmounts = projectedAmounts; } /** * Gets the the {@code projectedAmounts} property. * @return the property, not null */ public final Property<CurrencyAmount[]> projectedAmounts() { return metaBean().projectedAmounts().createProperty(this); } //----------------------------------------------------------------------- /** * Gets an array of index tenors. May contain nulls if there has been a fixing as of the valuation date. * @return the value of the property, not null */ public List<Set<Tenor>> getIndexTenors() { return _indexTenors; } /** * Sets an array of index tenors. May contain nulls if there has been a fixing as of the valuation date. * @param indexTenors the new value of the property, not null */ public void setIndexTenors(List<Set<Tenor>> indexTenors) { JodaBeanUtils.notNull(indexTenors, "indexTenors"); this._indexTenors = indexTenors; } /** * Gets the the {@code indexTenors} property. * @return the property, not null */ public final Property<List<Set<Tenor>>> indexTenors() { return metaBean().indexTenors().createProperty(this); } //----------------------------------------------------------------------- /** * Gets the the {@code numberOfCashFlows} property. * @return the property, not null */ public final Property<Integer> numberOfCashFlows() { return metaBean().numberOfCashFlows().createProperty(this); } //----------------------------------------------------------------------- /** * Gets the the {@code numberOfFixedCashFlows} property. * @return the property, not null */ public final Property<Integer> numberOfFixedCashFlows() { return metaBean().numberOfFixedCashFlows().createProperty(this); } //----------------------------------------------------------------------- /** * Gets the the {@code numberOfFloatingCashFlows} property. * @return the property, not null */ public final Property<Integer> numberOfFloatingCashFlows() { return metaBean().numberOfFloatingCashFlows().createProperty(this); } //----------------------------------------------------------------------- /** * Gets the the {@code discountedPaymentAmounts} property. * @return the property, not null */ public final Property<CurrencyAmount[]> discountedPaymentAmounts() { return metaBean().discountedPaymentAmounts().createProperty(this); } //----------------------------------------------------------------------- /** * Gets the the {@code discountedProjectedAmounts} property. * @return the property, not null */ public final Property<CurrencyAmount[]> discountedProjectedAmounts() { return metaBean().discountedProjectedAmounts().createProperty(this); } //----------------------------------------------------------------------- @Override public FloatingSwapLegDetails clone() { return JodaBeanUtils.cloneAlways(this); } @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj != null && obj.getClass() == this.getClass()) { FloatingSwapLegDetails other = (FloatingSwapLegDetails) obj; return JodaBeanUtils.equal(getAccrualStart(), other.getAccrualStart()) && JodaBeanUtils.equal(getAccrualEnd(), other.getAccrualEnd()) && JodaBeanUtils.equal(getAccrualYearFractions(), other.getAccrualYearFractions()) && JodaBeanUtils.equal(getFixingStart(), other.getFixingStart()) && JodaBeanUtils.equal(getFixingEnd(), other.getFixingEnd()) && JodaBeanUtils.equal(getFixingYearFractions(), other.getFixingYearFractions()) && JodaBeanUtils.equal(getForwardRates(), other.getForwardRates()) && JodaBeanUtils.equal(getFixedRates(), other.getFixedRates()) && JodaBeanUtils.equal(getPaymentDates(), other.getPaymentDates()) && JodaBeanUtils.equal(getPaymentTimes(), other.getPaymentTimes()) && JodaBeanUtils.equal(getPaymentAmounts(), other.getPaymentAmounts()) && JodaBeanUtils.equal(getNotionals(), other.getNotionals()) && JodaBeanUtils.equal(getSpreads(), other.getSpreads()) && JodaBeanUtils.equal(getGearings(), other.getGearings()) && JodaBeanUtils.equal(getPaymentDiscountFactors(), other.getPaymentDiscountFactors()) && JodaBeanUtils.equal(getProjectedAmounts(), other.getProjectedAmounts()) && JodaBeanUtils.equal(getIndexTenors(), other.getIndexTenors()); } return false; } @Override public int hashCode() { int hash = getClass().hashCode(); hash = hash * 31 + JodaBeanUtils.hashCode(getAccrualStart()); hash = hash * 31 + JodaBeanUtils.hashCode(getAccrualEnd()); hash = hash * 31 + JodaBeanUtils.hashCode(getAccrualYearFractions()); hash = hash * 31 + JodaBeanUtils.hashCode(getFixingStart()); hash = hash * 31 + JodaBeanUtils.hashCode(getFixingEnd()); hash = hash * 31 + JodaBeanUtils.hashCode(getFixingYearFractions()); hash = hash * 31 + JodaBeanUtils.hashCode(getForwardRates()); hash = hash * 31 + JodaBeanUtils.hashCode(getFixedRates()); hash = hash * 31 + JodaBeanUtils.hashCode(getPaymentDates()); hash = hash * 31 + JodaBeanUtils.hashCode(getPaymentTimes()); hash = hash * 31 + JodaBeanUtils.hashCode(getPaymentAmounts()); hash = hash * 31 + JodaBeanUtils.hashCode(getNotionals()); hash = hash * 31 + JodaBeanUtils.hashCode(getSpreads()); hash = hash * 31 + JodaBeanUtils.hashCode(getGearings()); hash = hash * 31 + JodaBeanUtils.hashCode(getPaymentDiscountFactors()); hash = hash * 31 + JodaBeanUtils.hashCode(getProjectedAmounts()); hash = hash * 31 + JodaBeanUtils.hashCode(getIndexTenors()); return hash; } @Override public String toString() { StringBuilder buf = new StringBuilder(736); buf.append("FloatingSwapLegDetails{"); int len = buf.length(); toString(buf); if (buf.length() > len) { buf.setLength(buf.length() - 2); } buf.append('}'); return buf.toString(); } protected void toString(StringBuilder buf) { buf.append("accrualStart").append('=').append(JodaBeanUtils.toString(getAccrualStart())).append(',').append(' '); buf.append("accrualEnd").append('=').append(JodaBeanUtils.toString(getAccrualEnd())).append(',').append(' '); buf.append("accrualYearFractions").append('=').append(JodaBeanUtils.toString(getAccrualYearFractions())).append(',').append(' '); buf.append("fixingStart").append('=').append(JodaBeanUtils.toString(getFixingStart())).append(',').append(' '); buf.append("fixingEnd").append('=').append(JodaBeanUtils.toString(getFixingEnd())).append(',').append(' '); buf.append("fixingYearFractions").append('=').append(JodaBeanUtils.toString(getFixingYearFractions())).append(',').append(' '); buf.append("forwardRates").append('=').append(JodaBeanUtils.toString(getForwardRates())).append(',').append(' '); buf.append("fixedRates").append('=').append(JodaBeanUtils.toString(getFixedRates())).append(',').append(' '); buf.append("paymentDates").append('=').append(JodaBeanUtils.toString(getPaymentDates())).append(',').append(' '); buf.append("paymentTimes").append('=').append(JodaBeanUtils.toString(getPaymentTimes())).append(',').append(' '); buf.append("paymentAmounts").append('=').append(JodaBeanUtils.toString(getPaymentAmounts())).append(',').append(' '); buf.append("notionals").append('=').append(JodaBeanUtils.toString(getNotionals())).append(',').append(' '); buf.append("spreads").append('=').append(JodaBeanUtils.toString(getSpreads())).append(',').append(' '); buf.append("gearings").append('=').append(JodaBeanUtils.toString(getGearings())).append(',').append(' '); buf.append("paymentDiscountFactors").append('=').append(JodaBeanUtils.toString(getPaymentDiscountFactors())).append(',').append(' '); buf.append("projectedAmounts").append('=').append(JodaBeanUtils.toString(getProjectedAmounts())).append(',').append(' '); buf.append("indexTenors").append('=').append(JodaBeanUtils.toString(getIndexTenors())).append(',').append(' '); buf.append("numberOfCashFlows").append('=').append(JodaBeanUtils.toString(getNumberOfCashFlows())).append(',').append(' '); buf.append("numberOfFixedCashFlows").append('=').append(JodaBeanUtils.toString(getNumberOfFixedCashFlows())).append(',').append(' '); buf.append("numberOfFloatingCashFlows").append('=').append(JodaBeanUtils.toString(getNumberOfFloatingCashFlows())).append(',').append(' '); buf.append("discountedPaymentAmounts").append('=').append(JodaBeanUtils.toString(getDiscountedPaymentAmounts())).append(',').append(' '); buf.append("discountedProjectedAmounts").append('=').append(JodaBeanUtils.toString(getDiscountedProjectedAmounts())).append(',').append(' '); } //----------------------------------------------------------------------- /** * The meta-bean for {@code FloatingSwapLegDetails}. */ public static class Meta extends DirectMetaBean { /** * The singleton instance of the meta-bean. */ static final Meta INSTANCE = new Meta(); /** * The meta-property for the {@code accrualStart} property. */ private final MetaProperty<LocalDate[]> _accrualStart = DirectMetaProperty.ofReadWrite( this, "accrualStart", FloatingSwapLegDetails.class, LocalDate[].class); /** * The meta-property for the {@code accrualEnd} property. */ private final MetaProperty<LocalDate[]> _accrualEnd = DirectMetaProperty.ofReadWrite( this, "accrualEnd", FloatingSwapLegDetails.class, LocalDate[].class); /** * The meta-property for the {@code accrualYearFractions} property. */ private final MetaProperty<double[]> _accrualYearFractions = DirectMetaProperty.ofReadWrite( this, "accrualYearFractions", FloatingSwapLegDetails.class, double[].class); /** * The meta-property for the {@code fixingStart} property. */ private final MetaProperty<LocalDate[]> _fixingStart = DirectMetaProperty.ofReadWrite( this, "fixingStart", FloatingSwapLegDetails.class, LocalDate[].class); /** * The meta-property for the {@code fixingEnd} property. */ private final MetaProperty<LocalDate[]> _fixingEnd = DirectMetaProperty.ofReadWrite( this, "fixingEnd", FloatingSwapLegDetails.class, LocalDate[].class); /** * The meta-property for the {@code fixingYearFractions} property. */ private final MetaProperty<Double[]> _fixingYearFractions = DirectMetaProperty.ofReadWrite( this, "fixingYearFractions", FloatingSwapLegDetails.class, Double[].class); /** * The meta-property for the {@code forwardRates} property. */ private final MetaProperty<Double[]> _forwardRates = DirectMetaProperty.ofReadWrite( this, "forwardRates", FloatingSwapLegDetails.class, Double[].class); /** * The meta-property for the {@code fixedRates} property. */ private final MetaProperty<Double[]> _fixedRates = DirectMetaProperty.ofReadWrite( this, "fixedRates", FloatingSwapLegDetails.class, Double[].class); /** * The meta-property for the {@code paymentDates} property. */ private final MetaProperty<LocalDate[]> _paymentDates = DirectMetaProperty.ofReadWrite( this, "paymentDates", FloatingSwapLegDetails.class, LocalDate[].class); /** * The meta-property for the {@code paymentTimes} property. */ private final MetaProperty<double[]> _paymentTimes = DirectMetaProperty.ofReadWrite( this, "paymentTimes", FloatingSwapLegDetails.class, double[].class); /** * The meta-property for the {@code paymentAmounts} property. */ private final MetaProperty<CurrencyAmount[]> _paymentAmounts = DirectMetaProperty.ofReadWrite( this, "paymentAmounts", FloatingSwapLegDetails.class, CurrencyAmount[].class); /** * The meta-property for the {@code notionals} property. */ private final MetaProperty<CurrencyAmount[]> _notionals = DirectMetaProperty.ofReadWrite( this, "notionals", FloatingSwapLegDetails.class, CurrencyAmount[].class); /** * The meta-property for the {@code spreads} property. */ private final MetaProperty<double[]> _spreads = DirectMetaProperty.ofReadWrite( this, "spreads", FloatingSwapLegDetails.class, double[].class); /** * The meta-property for the {@code gearings} property. */ private final MetaProperty<double[]> _gearings = DirectMetaProperty.ofReadWrite( this, "gearings", FloatingSwapLegDetails.class, double[].class); /** * The meta-property for the {@code paymentDiscountFactors} property. */ private final MetaProperty<double[]> _paymentDiscountFactors = DirectMetaProperty.ofReadWrite( this, "paymentDiscountFactors", FloatingSwapLegDetails.class, double[].class); /** * The meta-property for the {@code projectedAmounts} property. */ private final MetaProperty<CurrencyAmount[]> _projectedAmounts = DirectMetaProperty.ofReadWrite( this, "projectedAmounts", FloatingSwapLegDetails.class, CurrencyAmount[].class); /** * The meta-property for the {@code indexTenors} property. */ @SuppressWarnings({"unchecked", "rawtypes" }) private final MetaProperty<List<Set<Tenor>>> _indexTenors = DirectMetaProperty.ofReadWrite( this, "indexTenors", FloatingSwapLegDetails.class, (Class) List.class); /** * The meta-property for the {@code numberOfCashFlows} property. */ private final MetaProperty<Integer> _numberOfCashFlows = DirectMetaProperty.ofDerived( this, "numberOfCashFlows", FloatingSwapLegDetails.class, Integer.TYPE); /** * The meta-property for the {@code numberOfFixedCashFlows} property. */ private final MetaProperty<Integer> _numberOfFixedCashFlows = DirectMetaProperty.ofDerived( this, "numberOfFixedCashFlows", FloatingSwapLegDetails.class, Integer.TYPE); /** * The meta-property for the {@code numberOfFloatingCashFlows} property. */ private final MetaProperty<Integer> _numberOfFloatingCashFlows = DirectMetaProperty.ofDerived( this, "numberOfFloatingCashFlows", FloatingSwapLegDetails.class, Integer.TYPE); /** * The meta-property for the {@code discountedPaymentAmounts} property. */ private final MetaProperty<CurrencyAmount[]> _discountedPaymentAmounts = DirectMetaProperty.ofDerived( this, "discountedPaymentAmounts", FloatingSwapLegDetails.class, CurrencyAmount[].class); /** * The meta-property for the {@code discountedProjectedAmounts} property. */ private final MetaProperty<CurrencyAmount[]> _discountedProjectedAmounts = DirectMetaProperty.ofDerived( this, "discountedProjectedAmounts", FloatingSwapLegDetails.class, CurrencyAmount[].class); /** * The meta-properties. */ private final Map<String, MetaProperty<?>> _metaPropertyMap$ = new DirectMetaPropertyMap( this, null, "accrualStart", "accrualEnd", "accrualYearFractions", "fixingStart", "fixingEnd", "fixingYearFractions", "forwardRates", "fixedRates", "paymentDates", "paymentTimes", "paymentAmounts", "notionals", "spreads", "gearings", "paymentDiscountFactors", "projectedAmounts", "indexTenors", "numberOfCashFlows", "numberOfFixedCashFlows", "numberOfFloatingCashFlows", "discountedPaymentAmounts", "discountedProjectedAmounts"); /** * Restricted constructor. */ protected Meta() { } @Override protected MetaProperty<?> metaPropertyGet(String propertyName) { switch (propertyName.hashCode()) { case 1071260659: // accrualStart return _accrualStart; case 1846909100: // accrualEnd return _accrualEnd; case 1516259717: // accrualYearFractions return _accrualYearFractions; case 270958773: // fixingStart return _fixingStart; case 871775726: // fixingEnd return _fixingEnd; case 309118023: // fixingYearFractions return _fixingYearFractions; case -291258418: // forwardRates return _forwardRates; case 1695350911: // fixedRates return _fixedRates; case -522438625: // paymentDates return _paymentDates; case -507430688: // paymentTimes return _paymentTimes; case -1875448267: // paymentAmounts return _paymentAmounts; case 1910080819: // notionals return _notionals; case -1996407456: // spreads return _spreads; case 1449942752: // gearings return _gearings; case -650014307: // paymentDiscountFactors return _paymentDiscountFactors; case -176306557: // projectedAmounts return _projectedAmounts; case 1358155045: // indexTenors return _indexTenors; case -338982286: // numberOfCashFlows return _numberOfCashFlows; case -857546850: // numberOfFixedCashFlows return _numberOfFixedCashFlows; case -582457076: // numberOfFloatingCashFlows return _numberOfFloatingCashFlows; case 178231285: // discountedPaymentAmounts return _discountedPaymentAmounts; case 2019754051: // discountedProjectedAmounts return _discountedProjectedAmounts; } return super.metaPropertyGet(propertyName); } @Override public BeanBuilder<? extends FloatingSwapLegDetails> builder() { return new DirectBeanBuilder<FloatingSwapLegDetails>(new FloatingSwapLegDetails()); } @Override public Class<? extends FloatingSwapLegDetails> beanType() { return FloatingSwapLegDetails.class; } @Override public Map<String, MetaProperty<?>> metaPropertyMap() { return _metaPropertyMap$; } //----------------------------------------------------------------------- /** * The meta-property for the {@code accrualStart} property. * @return the meta-property, not null */ public final MetaProperty<LocalDate[]> accrualStart() { return _accrualStart; } /** * The meta-property for the {@code accrualEnd} property. * @return the meta-property, not null */ public final MetaProperty<LocalDate[]> accrualEnd() { return _accrualEnd; } /** * The meta-property for the {@code accrualYearFractions} property. * @return the meta-property, not null */ public final MetaProperty<double[]> accrualYearFractions() { return _accrualYearFractions; } /** * The meta-property for the {@code fixingStart} property. * @return the meta-property, not null */ public final MetaProperty<LocalDate[]> fixingStart() { return _fixingStart; } /** * The meta-property for the {@code fixingEnd} property. * @return the meta-property, not null */ public final MetaProperty<LocalDate[]> fixingEnd() { return _fixingEnd; } /** * The meta-property for the {@code fixingYearFractions} property. * @return the meta-property, not null */ public final MetaProperty<Double[]> fixingYearFractions() { return _fixingYearFractions; } /** * The meta-property for the {@code forwardRates} property. * @return the meta-property, not null */ public final MetaProperty<Double[]> forwardRates() { return _forwardRates; } /** * The meta-property for the {@code fixedRates} property. * @return the meta-property, not null */ public final MetaProperty<Double[]> fixedRates() { return _fixedRates; } /** * The meta-property for the {@code paymentDates} property. * @return the meta-property, not null */ public final MetaProperty<LocalDate[]> paymentDates() { return _paymentDates; } /** * The meta-property for the {@code paymentTimes} property. * @return the meta-property, not null */ public final MetaProperty<double[]> paymentTimes() { return _paymentTimes; } /** * The meta-property for the {@code paymentAmounts} property. * @return the meta-property, not null */ public final MetaProperty<CurrencyAmount[]> paymentAmounts() { return _paymentAmounts; } /** * The meta-property for the {@code notionals} property. * @return the meta-property, not null */ public final MetaProperty<CurrencyAmount[]> notionals() { return _notionals; } /** * The meta-property for the {@code spreads} property. * @return the meta-property, not null */ public final MetaProperty<double[]> spreads() { return _spreads; } /** * The meta-property for the {@code gearings} property. * @return the meta-property, not null */ public final MetaProperty<double[]> gearings() { return _gearings; } /** * The meta-property for the {@code paymentDiscountFactors} property. * @return the meta-property, not null */ public final MetaProperty<double[]> paymentDiscountFactors() { return _paymentDiscountFactors; } /** * The meta-property for the {@code projectedAmounts} property. * @return the meta-property, not null */ public final MetaProperty<CurrencyAmount[]> projectedAmounts() { return _projectedAmounts; } /** * The meta-property for the {@code indexTenors} property. * @return the meta-property, not null */ public final MetaProperty<List<Set<Tenor>>> indexTenors() { return _indexTenors; } /** * The meta-property for the {@code numberOfCashFlows} property. * @return the meta-property, not null */ public final MetaProperty<Integer> numberOfCashFlows() { return _numberOfCashFlows; } /** * The meta-property for the {@code numberOfFixedCashFlows} property. * @return the meta-property, not null */ public final MetaProperty<Integer> numberOfFixedCashFlows() { return _numberOfFixedCashFlows; } /** * The meta-property for the {@code numberOfFloatingCashFlows} property. * @return the meta-property, not null */ public final MetaProperty<Integer> numberOfFloatingCashFlows() { return _numberOfFloatingCashFlows; } /** * The meta-property for the {@code discountedPaymentAmounts} property. * @return the meta-property, not null */ public final MetaProperty<CurrencyAmount[]> discountedPaymentAmounts() { return _discountedPaymentAmounts; } /** * The meta-property for the {@code discountedProjectedAmounts} property. * @return the meta-property, not null */ public final MetaProperty<CurrencyAmount[]> discountedProjectedAmounts() { return _discountedProjectedAmounts; } //----------------------------------------------------------------------- @Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 1071260659: // accrualStart return ((FloatingSwapLegDetails) bean).getAccrualStart(); case 1846909100: // accrualEnd return ((FloatingSwapLegDetails) bean).getAccrualEnd(); case 1516259717: // accrualYearFractions return ((FloatingSwapLegDetails) bean).getAccrualYearFractions(); case 270958773: // fixingStart return ((FloatingSwapLegDetails) bean).getFixingStart(); case 871775726: // fixingEnd return ((FloatingSwapLegDetails) bean).getFixingEnd(); case 309118023: // fixingYearFractions return ((FloatingSwapLegDetails) bean).getFixingYearFractions(); case -291258418: // forwardRates return ((FloatingSwapLegDetails) bean).getForwardRates(); case 1695350911: // fixedRates return ((FloatingSwapLegDetails) bean).getFixedRates(); case -522438625: // paymentDates return ((FloatingSwapLegDetails) bean).getPaymentDates(); case -507430688: // paymentTimes return ((FloatingSwapLegDetails) bean).getPaymentTimes(); case -1875448267: // paymentAmounts return ((FloatingSwapLegDetails) bean).getPaymentAmounts(); case 1910080819: // notionals return ((FloatingSwapLegDetails) bean).getNotionals(); case -1996407456: // spreads return ((FloatingSwapLegDetails) bean).getSpreads(); case 1449942752: // gearings return ((FloatingSwapLegDetails) bean).getGearings(); case -650014307: // paymentDiscountFactors return ((FloatingSwapLegDetails) bean).getPaymentDiscountFactors(); case -176306557: // projectedAmounts return ((FloatingSwapLegDetails) bean).getProjectedAmounts(); case 1358155045: // indexTenors return ((FloatingSwapLegDetails) bean).getIndexTenors(); case -338982286: // numberOfCashFlows return ((FloatingSwapLegDetails) bean).getNumberOfCashFlows(); case -857546850: // numberOfFixedCashFlows return ((FloatingSwapLegDetails) bean).getNumberOfFixedCashFlows(); case -582457076: // numberOfFloatingCashFlows return ((FloatingSwapLegDetails) bean).getNumberOfFloatingCashFlows(); case 178231285: // discountedPaymentAmounts return ((FloatingSwapLegDetails) bean).getDiscountedPaymentAmounts(); case 2019754051: // discountedProjectedAmounts return ((FloatingSwapLegDetails) bean).getDiscountedProjectedAmounts(); } return super.propertyGet(bean, propertyName, quiet); } @SuppressWarnings("unchecked") @Override protected void propertySet(Bean bean, String propertyName, Object newValue, boolean quiet) { switch (propertyName.hashCode()) { case 1071260659: // accrualStart ((FloatingSwapLegDetails) bean).setAccrualStart((LocalDate[]) newValue); return; case 1846909100: // accrualEnd ((FloatingSwapLegDetails) bean).setAccrualEnd((LocalDate[]) newValue); return; case 1516259717: // accrualYearFractions ((FloatingSwapLegDetails) bean).setAccrualYearFractions((double[]) newValue); return; case 270958773: // fixingStart ((FloatingSwapLegDetails) bean).setFixingStart((LocalDate[]) newValue); return; case 871775726: // fixingEnd ((FloatingSwapLegDetails) bean).setFixingEnd((LocalDate[]) newValue); return; case 309118023: // fixingYearFractions ((FloatingSwapLegDetails) bean).setFixingYearFractions((Double[]) newValue); return; case -291258418: // forwardRates ((FloatingSwapLegDetails) bean).setForwardRates((Double[]) newValue); return; case 1695350911: // fixedRates ((FloatingSwapLegDetails) bean).setFixedRates((Double[]) newValue); return; case -522438625: // paymentDates ((FloatingSwapLegDetails) bean).setPaymentDates((LocalDate[]) newValue); return; case -507430688: // paymentTimes ((FloatingSwapLegDetails) bean).setPaymentTimes((double[]) newValue); return; case -1875448267: // paymentAmounts ((FloatingSwapLegDetails) bean).setPaymentAmounts((CurrencyAmount[]) newValue); return; case 1910080819: // notionals ((FloatingSwapLegDetails) bean).setNotionals((CurrencyAmount[]) newValue); return; case -1996407456: // spreads ((FloatingSwapLegDetails) bean).setSpreads((double[]) newValue); return; case 1449942752: // gearings ((FloatingSwapLegDetails) bean).setGearings((double[]) newValue); return; case -650014307: // paymentDiscountFactors ((FloatingSwapLegDetails) bean).setPaymentDiscountFactors((double[]) newValue); return; case -176306557: // projectedAmounts ((FloatingSwapLegDetails) bean).setProjectedAmounts((CurrencyAmount[]) newValue); return; case 1358155045: // indexTenors ((FloatingSwapLegDetails) bean).setIndexTenors((List<Set<Tenor>>) newValue); return; case -338982286: // numberOfCashFlows if (quiet) { return; } throw new UnsupportedOperationException("Property cannot be written: numberOfCashFlows"); case -857546850: // numberOfFixedCashFlows if (quiet) { return; } throw new UnsupportedOperationException("Property cannot be written: numberOfFixedCashFlows"); case -582457076: // numberOfFloatingCashFlows if (quiet) { return; } throw new UnsupportedOperationException("Property cannot be written: numberOfFloatingCashFlows"); case 178231285: // discountedPaymentAmounts if (quiet) { return; } throw new UnsupportedOperationException("Property cannot be written: discountedPaymentAmounts"); case 2019754051: // discountedProjectedAmounts if (quiet) { return; } throw new UnsupportedOperationException("Property cannot be written: discountedProjectedAmounts"); } super.propertySet(bean, propertyName, newValue, quiet); } @Override protected void validate(Bean bean) { JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._accrualStart, "accrualStart"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._accrualEnd, "accrualEnd"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._accrualYearFractions, "accrualYearFractions"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._fixingStart, "fixingStart"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._fixingEnd, "fixingEnd"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._fixingYearFractions, "fixingYearFractions"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._forwardRates, "forwardRates"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._fixedRates, "fixedRates"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._paymentDates, "paymentDates"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._paymentTimes, "paymentTimes"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._paymentAmounts, "paymentAmounts"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._notionals, "notionals"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._spreads, "spreads"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._gearings, "gearings"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._paymentDiscountFactors, "paymentDiscountFactors"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._projectedAmounts, "projectedAmounts"); JodaBeanUtils.notNull(((FloatingSwapLegDetails) bean)._indexTenors, "indexTenors"); } } ///CLOVER:ON //-------------------------- AUTOGENERATED END -------------------------- }