/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.marketdata.manipulator.dsl;
import java.util.Set;
import java.util.regex.Pattern;
import com.opengamma.engine.value.ValuePropertyNames;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.engine.value.ValueSpecification;
import com.opengamma.util.money.Currency;
/**
* Selects volatility cubes for manipulation.
*/
public class VolatilityCubeSelector extends Selector {
/* package */ VolatilityCubeSelector(Set<String> calcConfigNames,
Set<String> names,
Set<Currency> currencies,
Pattern nameMatchPattern,
Pattern nameLikePattern) {
super(calcConfigNames,
names,
currencies,
nameMatchPattern,
nameLikePattern);
}
@Override
boolean matches(ValueSpecification valueSpecification) {
if (!ValueRequirementNames.VOLATILITY_CUBE.equals(valueSpecification.getValueName())) {
return false;
}
Currency currency = Currency.parse(valueSpecification.getTargetSpecification().getUniqueId().getValue());
String cube = valueSpecification.getProperties().getStrictValue(ValuePropertyNames.CUBE);
if (cube == null) {
return false;
}
return matches(cube, currency);
}
/**
* Mutable builder for {@link VolatilityCubeSelector} instances.
*/
public static class Builder extends Selector.Builder {
/* package */ Builder(Scenario scenario) {
super(scenario);
}
public VolatilityCubeManipulatorBuilder apply() {
return new VolatilityCubeManipulatorBuilder(selector(), getScenario());
}
@Override
public Builder named(String... names) {
super.named(names);
return this;
}
@Override
public Builder currencies(String... codes) {
super.currencies(codes);
return this;
}
@Override
public Builder nameMatches(String regex) {
super.nameMatches(regex);
return this;
}
/**
* This is package scoped for testing
* @return A selector built from this builder's data
*/
/* package */ VolatilityCubeSelector selector() {
return new VolatilityCubeSelector(getScenario().getCalcConfigNames(),
getNames(),
getCurrencies(),
getNameMatchPattern(),
getNameLikePattern());
}
}
}