/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
package de.cismet.cids.editors;
import Sirius.server.middleware.types.MetaClass;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import de.cismet.cids.dynamics.CidsBean;
import de.cismet.tools.collections.TypeSafeCollections;
/**
* DOCUMENT ME!
*
* @author srichter
* @version $Revision$, $Date$
*/
public class EditorBeanInitializerStore {
//~ Static fields/initializers ---------------------------------------------
private static final EditorBeanInitializerStore INSTANCE = new EditorBeanInitializerStore();
//~ Instance fields --------------------------------------------------------
private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(EditorBeanInitializerStore.class);
private final Map<MetaClass, BeanInitializer> initializerStore;
//~ Constructors -----------------------------------------------------------
/**
* Creates a new EditorBeanInitializerStore object.
*/
private EditorBeanInitializerStore() {
initializerStore = TypeSafeCollections.newHashMap();
}
//~ Methods ----------------------------------------------------------------
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public static EditorBeanInitializerStore getInstance() {
return INSTANCE;
}
/**
* DOCUMENT ME!
*
* @param metaClass DOCUMENT ME!
* @param initializer DOCUMENT ME!
*/
public void registerInitializer(final MetaClass metaClass, final BeanInitializer initializer) {
initializerStore.put(metaClass, initializer);
}
/**
* DOCUMENT ME!
*
* @param metaClass DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public boolean unregisterInitializer(final MetaClass metaClass) {
return initializerStore.remove(metaClass) != null;
}
/**
* DOCUMENT ME!
*
* @param metaClass DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public BeanInitializer getInitializer(final MetaClass metaClass) {
return initializerStore.get(metaClass);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public Collection<MetaClass> getAllRegisteredClasses() {
return Collections.unmodifiableCollection(initializerStore.keySet());
}
/**
* DOCUMENT ME!
*
* @param toInitialize DOCUMENT ME!
*
* @throws Exception DOCUMENT ME!
* @throws IllegalArgumentException DOCUMENT ME!
*/
public void initialize(final CidsBean toInitialize) throws Exception {
if (toInitialize != null) {
final BeanInitializer initializer = initializerStore.get(toInitialize.getMetaObject().getMetaClass());
if (initializer != null) {
initializer.initializeBean(toInitialize);
}
} else {
throw new IllegalArgumentException("Bean to initialize was null!"); // NOI18N
}
}
}