/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.volatility;
import java.util.Locale;
import org.joda.convert.FromString;
import com.opengamma.financial.convention.AbstractNamedInstanceFactory;
import com.opengamma.util.ArgumentChecker;
/**
* Factory for volatility quote unit named instances.
*/
public final class VolatilityQuoteUnitsFactory extends AbstractNamedInstanceFactory<VolatilityQuoteUnits> {
/**
* Singleton instance of {@code VolatilityQuoteUnitsFactory}.
*/
public static final VolatilityQuoteUnitsFactory INSTANCE = new VolatilityQuoteUnitsFactory();
/**
* Restricted constructor.
*/
private VolatilityQuoteUnitsFactory() {
super(VolatilityQuoteUnits.class);
addInstance(VolatilityQuoteUnits.LOGNORMAL, "Lognormal");
addInstance(VolatilityQuoteUnits.NORMAL, "Normal");
addInstance(VolatilityQuoteUnits.RATES, "Rates");
addInstance(VolatilityQuoteUnits.DECIMALS, "Decimals");
addInstance(VolatilityQuoteUnits.BASIS_POINTS, "Basis Points");
}
/**
* Finds a volatility quote unit by name, ignoring case.
* <p>
* This method dynamically creates the quote units if it is missing.
* @param name The name of the instance to find, not null
* @return The volatility quote units, null if not found
*/
@FromString
public VolatilityQuoteUnits of(final String name) {
try {
return INSTANCE.instance(name);
} catch (final IllegalArgumentException e) {
ArgumentChecker.notNull(name, "name");
final VolatilityQuoteUnits quoteUnits = new VolatilityQuoteUnits(name.toUpperCase(Locale.ENGLISH));
return addInstance(quoteUnits);
}
}
}