/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.ircurve;
import org.apache.commons.lang.ObjectUtils;
import com.opengamma.financial.analytics.ircurve.strips.DataFieldType;
import com.opengamma.id.ExternalId;
import com.opengamma.util.ArgumentChecker;
/**
* Curve instrument provider for tickers that represent a spread over a base value.
*/
public class StaticCurvePointsInstrumentProvider extends StaticCurveInstrumentProvider {
/** The underlying market data identifier */
private final ExternalId _underlyingIdentifier;
/** The underlying market data field */
private final String _underlyingDataField;
/**
* @param identifier The market data identifier, not null
* @param dataField The market data field, not null
* @param fieldType The field type, not null
* @param underlyingIdentifier The underlying market data identifier, not null
* @param underlyingDataField The underlying data field, not null
*/
public StaticCurvePointsInstrumentProvider(final ExternalId identifier, final String dataField, final DataFieldType fieldType,
final ExternalId underlyingIdentifier, final String underlyingDataField) {
super(identifier, dataField, fieldType);
ArgumentChecker.notNull(underlyingIdentifier, "underlying identifier");
ArgumentChecker.notNull(underlyingDataField, "underlying data field");
_underlyingIdentifier = underlyingIdentifier;
_underlyingDataField = underlyingDataField;
}
public ExternalId getUnderlyingInstrument() {
return _underlyingIdentifier;
}
public String getUnderlyingMarketDataField() {
return _underlyingDataField;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + _underlyingDataField.hashCode();
result = prime * result + _underlyingIdentifier.hashCode();
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof StaticCurvePointsInstrumentProvider)) {
return false;
}
final StaticCurvePointsInstrumentProvider other = (StaticCurvePointsInstrumentProvider) obj;
return ObjectUtils.equals(_underlyingIdentifier, other._underlyingIdentifier) &&
ObjectUtils.equals(_underlyingDataField, other._underlyingDataField);
}
}