/** * Finds a single sensitivity instance by name. * <p> * If the sensitivity is not found, optional empty is returned. * * @param name the curve name to find * @return the matching sensitivity */ public Optional<UnitParameterSensitivity> findSensitivity(MarketDataName<?> name) { return sensitivities.stream() .filter(sens -> sens.getMarketDataName().equals(name)) .findFirst(); }
/** * Returns a suitable hash code. * * @return a suitable hash code */ @Override public final int hashCode() { return getName().hashCode() ^ getClass().hashCode(); }
/** * Compares this name to another. * <p> * Instances are compared in alphabetical order based on the name, taking into account the implementation type. * * @param other the object to compare to * @return the comparison */ @Override public int compareTo(MarketDataName<?> other) { if (getClass() == other.getClass()) { return getName().compareTo(other.getName()); } return compareSlow(other); }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (this.name.equals(name)) { return Optional.of(name.getMarketDataType().cast(this)); } return Optional.empty(); }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (surface.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(surface)); } return Optional.empty(); }
@Override @SuppressWarnings("unchecked") public <R> Set<MarketDataId<R>> findIds(MarketDataName<R> name) { Set<MarketDataId<R>> ids = underlying.findIds(name); if (id instanceof NamedMarketDataId) { NamedMarketDataId<?> named = (NamedMarketDataId<?>) id; if (named.getMarketDataName().equals(name)) { return ImmutableSet.<MarketDataId<R>>builder().addAll(ids).add((MarketDataId<R>) id).build(); } } return ids; }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (curve.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(curve)); } return Optional.empty(); }
@Override @SuppressWarnings("unchecked") public <R> Set<MarketDataId<R>> findIds(MarketDataName<R> name) { Set<MarketDataId<R>> ids = underlying.findIds(name); if (id instanceof NamedMarketDataId) { NamedMarketDataId<?> named = (NamedMarketDataId<?>) id; if (named.getMarketDataName().equals(name)) { return ImmutableSet.<MarketDataId<R>>builder().addAll(ids).add((MarketDataId<R>) id).build(); } } return ids; }
/** * Checks if this instance equals another. * <p> * Instances are compared based on the name and market data type. * * @param obj the object to compare to, null returns false * @return true if equal */ @Override public final boolean equals(Object obj) { if (obj == this) { return true; } if (obj != null && obj.getClass() == getClass()) { MarketDataName<?> other = (MarketDataName<?>) obj; return getName().equals(other.getName()); } return false; }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (curve.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(curve)); } return Optional.empty(); }
@Override @SuppressWarnings("unchecked") public <T> Set<MarketDataId<T>> findIds(MarketDataName<T> name) { // no type check against id.getMarketDataType() as checked in factory return values.keySet().stream() .filter(id -> id instanceof NamedMarketDataId) .filter(id -> ((NamedMarketDataId<?>) id).getMarketDataName().equals(name)) .map(id -> (MarketDataId<T>) id) .collect(toImmutableSet()); }
/** * Returns the name. * * @return the name */ @Override @ToString public final String toString() { return getName(); }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (curve.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(curve)); } return Optional.empty(); }
@Override @SuppressWarnings("unchecked") public <T> Set<MarketDataId<T>> findIds(MarketDataName<T> name) { // no type check against id.getMarketDataType() as checked in factory return values.keySet().stream() .filter(id -> id instanceof NamedMarketDataId) .filter(id -> ((NamedMarketDataId<?>) id).getMarketDataName().equals(name)) .map(id -> (MarketDataId<T>) id) .collect(toImmutableSet()); }
@Override public Set<String> tokens(CurrencyParameterSensitivity sensitivity) { return ImmutableSet.of( sensitivity.getCurrency().getCode().toLowerCase(Locale.ENGLISH), sensitivity.getMarketDataName().getName().toLowerCase(Locale.ENGLISH)); }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (surface.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(surface)); } return Optional.empty(); }
/** * Returns an instance with the specified sensitivity array added to the array in this instance. * <p> * The specified instance must have the same name, metadata and parameter split as this instance. * * @param otherSensitivty the other parameter sensitivity * @return an instance based on this one, with the other instance added * @throws IllegalArgumentException if the market data name, metadata or parameter split differs */ public UnitParameterSensitivity plus(UnitParameterSensitivity otherSensitivty) { if (!marketDataName.equals(otherSensitivty.marketDataName) || !parameterMetadata.equals(otherSensitivty.parameterMetadata) || (parameterSplit != null && !parameterSplit.equals(otherSensitivty.parameterSplit))) { throw new IllegalArgumentException("Two sensitivity instances can only be added if name, metadata and split are equal"); } return plus(otherSensitivty.getSensitivity()); }
private boolean matchesToken(CurrencyParameterSensitivity sensitivity, String token) { return token.equalsIgnoreCase(sensitivity.getCurrency().getCode()) || token.equalsIgnoreCase(sensitivity.getMarketDataName().getName()); }
@Override public <T> Optional<T> findData(MarketDataName<T> name) { if (surface.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(surface)); } if (shiftCurve.getName().equals(name)) { return Optional.of(name.getMarketDataType().cast(shiftCurve)); } return Optional.empty(); }