package jas.hist;
import jas.util.NestedRuntimeException;
import java.util.Enumeration;
import java.util.Vector;
public class FitterRegistry
{
private FitterRegistry()
{
}
/**
* Get the (unique) FitterRegistry instance
*/
public static FitterRegistry instance()
{
return theFitterRegistry;
}
/**
* Add a fitter to the FitterRegistry
* @param c The class to instanciate to get a fitter
* @param name The name of the fitter
*/
public void registerFitter(Class c, String name)
{
registerFitter(createFitterFactory(c,name));
}
/**
* Create a FitterFactory from a class and a name
* @param c The class to instanciate to get a fitter
* @param name The name of the fitter
*/
public FitterFactory createFitterFactory(Class c, String name)
{
try
{
return new DefaultFitterFactory(c,name);
}
catch (FitterFactoryError e)
{
// convert the error to a runtime error
throw new NestedRuntimeException(e);
}
}
/**
* Add a fitter factory to the FitterRegistry
* @param f The factory to add
*/
public void registerFitter(FitterFactory f)
{
m_fitters.addElement(f);
if (defaultFitterFactory == null) defaultFitterFactory = f;
}
/**
* Remove a FitterFactory from the registry
* @param The FitterFactory to remove
*/
public void removeFitterFactory(FitterFactory f)
{
m_fitters.removeElement(f);
}
/**
* Clear the FitterRegistry
*/
public void removeAllFitters()
{
m_fitters.removeAllElements();
}
public Enumeration elements()
{
return m_fitters.elements();
}
public int size()
{
return m_fitters.size();
}
public FitterFactory getDefaultFitterFactory()
{
return defaultFitterFactory;
}
public void setDefaultFitterFactory(FitterFactory f)
{
defaultFitterFactory = f;
}
/**
* Return an instance of the current default fitter
*/
public Fitter getDefaultFitter()
{
return defaultFitterFactory == null ? null : defaultFitterFactory.createFitter();
}
public void setContents(Vector v)
{
m_fitters = v;
}
private Vector m_fitters = new Vector();
private static FitterRegistry theFitterRegistry = new FitterRegistry();
private FitterFactory defaultFitterFactory;
}