/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.model.volatility.smile.fitting.interpolation; import java.util.HashMap; import java.util.Map; /** * */ public final class WeightingFunctionFactory { /** Cosine weighting function name */ public static final String COSINE_WEIGHTING_FUNCTION_NAME = "CosineWeightingFunction"; /** Sine weighting function name */ public static final String SINE_WEIGHTING_FUNCTION_NAME = "SineWeightingFunction"; /** Linear weighting function name */ public static final String LINEAR_WEIGHTING_FUNCTION_NAME = "LinearWeightingFunction"; /** Cosine weighting function */ public static final CosineWeightingFunction COSINE_WEIGHTING_FUNCTION = CosineWeightingFunction.getInstance(); /** Sine weighting function */ public static final SineWeightingFunction SINE_WEIGHTING_FUNCTION = SineWeightingFunction.getInstance(); /** Linear weighting function */ public static final LinearWeightingFunction LINEAR_WEIGHTING_FUNCTION = LinearWeightingFunction.getInstance(); private static final Map<String, WeightingFunction> s_staticInstances; private static final Map<Class<?>, String> s_instanceNames; static { final Map<String, WeightingFunction> staticInstances = new HashMap<>(); final Map<Class<?>, String> instanceNames = new HashMap<>(); staticInstances.put(COSINE_WEIGHTING_FUNCTION_NAME, COSINE_WEIGHTING_FUNCTION); instanceNames.put(CosineWeightingFunction.class, COSINE_WEIGHTING_FUNCTION_NAME); staticInstances.put(LINEAR_WEIGHTING_FUNCTION_NAME, LINEAR_WEIGHTING_FUNCTION); instanceNames.put(LinearWeightingFunction.class, LINEAR_WEIGHTING_FUNCTION_NAME); staticInstances.put(SINE_WEIGHTING_FUNCTION_NAME, SINE_WEIGHTING_FUNCTION); instanceNames.put(SineWeightingFunction.class, SINE_WEIGHTING_FUNCTION_NAME); s_staticInstances = new HashMap<>(staticInstances); s_instanceNames = new HashMap<>(instanceNames); } private WeightingFunctionFactory() { } public static WeightingFunction getWeightingFunction(final String weightingFunctionName) { final WeightingFunction function = s_staticInstances.get(weightingFunctionName); if (function != null) { return function; } throw new IllegalArgumentException("Weighting function not handled: " + weightingFunctionName); } public static String getWeightingFunctionName(final WeightingFunction function) { if (function == null) { return null; } return s_instanceNames.get(function.getClass()); } }