/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.curve; import java.util.Collection; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.threeten.bp.LocalDate; import com.opengamma.financial.analytics.ircurve.strips.CurveNodeWithIdentifier; import com.opengamma.util.ArgumentChecker; /** * Specification for an interpolated curve. */ public class InterpolatedCurveSpecification extends CurveSpecification { /** Serialization version */ private static final long serialVersionUID = 1L; /** The interpolator name */ private final String _interpolatorName; /** The right extrapolator name */ private final String _rightExtrapolatorName; /** The left extrapolator name */ private final String _leftExtrapolatorName; /** * @param curveDate The curve construction date, not null * @param name The curve name, not null * @param nodes The nodes that are used to construct this curve, not null * @param interpolatorName The interpolator name, not null * @param rightExtrapolatorName The right extrapolator name, not null * @param leftExtrapolatorName The left extrapolator name, not null */ public InterpolatedCurveSpecification(final LocalDate curveDate, final String name, final Collection<CurveNodeWithIdentifier> nodes, final String interpolatorName, final String rightExtrapolatorName, final String leftExtrapolatorName) { super(curveDate, name, nodes); ArgumentChecker.notNull(interpolatorName, "interpolator name"); ArgumentChecker.notNull(rightExtrapolatorName, "right extrapolator name"); ArgumentChecker.notNull(leftExtrapolatorName, "left extrapolator name"); _interpolatorName = interpolatorName; _rightExtrapolatorName = rightExtrapolatorName; _leftExtrapolatorName = leftExtrapolatorName; } /** * Gets the interpolator name, * @return The interpolator name */ public String getInterpolatorName() { return _interpolatorName; } /** * Gets the right extrapolator name. * @return The right extrapolator name */ public String getRightExtrapolatorName() { return _rightExtrapolatorName; } /** * Gets the left extrapolator name. * @return The left extrapolator name */ public String getLeftExtrapolatorName() { return _leftExtrapolatorName; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + _interpolatorName.hashCode(); result = prime * result + _rightExtrapolatorName.hashCode(); result = prime * result + _leftExtrapolatorName.hashCode(); return result; } @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (!(obj instanceof InterpolatedCurveSpecification)) { return false; } if (!super.equals(obj)) { return false; } final InterpolatedCurveSpecification other = (InterpolatedCurveSpecification) obj; return ObjectUtils.equals(_interpolatorName, other._interpolatorName) && ObjectUtils.equals(_rightExtrapolatorName, other._rightExtrapolatorName) && ObjectUtils.equals(_leftExtrapolatorName, other._leftExtrapolatorName); } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } }