/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.model.volatility.curve; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.Validate; import org.threeten.bp.ZonedDateTime; import com.opengamma.util.ArgumentChecker; /** * */ public class FXVannaVolgaVolatilityCurveDataBundle { private final double _delta; private final double _riskReversal; private final double _atm; private final double _vegaWeightedButterfly; private final ZonedDateTime _maturity; public FXVannaVolgaVolatilityCurveDataBundle(final double delta, final double riskReversal, final double atm, final double vegaWeightedButterfly, final ZonedDateTime maturity) { ArgumentChecker.notNegative(atm, "atm"); Validate.notNull(maturity, "maturity"); _delta = delta; _riskReversal = riskReversal; _atm = atm; _vegaWeightedButterfly = vegaWeightedButterfly; _maturity = maturity; } public double getDelta() { return _delta; } public double getRiskReversal() { return _riskReversal; } public double getAtTheMoney() { return _atm; } public double getVegaWeightedButterfly() { return _vegaWeightedButterfly; } public ZonedDateTime getMaturity() { return _maturity; } @Override public int hashCode() { final int prime = 31; int result = 1; long temp; temp = Double.doubleToLongBits(_atm); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(_delta); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + _maturity.hashCode(); temp = Double.doubleToLongBits(_riskReversal); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(_vegaWeightedButterfly); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final FXVannaVolgaVolatilityCurveDataBundle other = (FXVannaVolgaVolatilityCurveDataBundle) obj; if (Double.doubleToLongBits(_atm) != Double.doubleToLongBits(other._atm)) { return false; } if (Double.doubleToLongBits(_delta) != Double.doubleToLongBits(other._delta)) { return false; } if (!ObjectUtils.equals(_maturity, other._maturity)) { return false; } if (Double.doubleToLongBits(_riskReversal) != Double.doubleToLongBits(other._riskReversal)) { return false; } if (Double.doubleToLongBits(_vegaWeightedButterfly) != Double.doubleToLongBits(other._vegaWeightedButterfly)) { return false; } return true; } }