/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.core.registry;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.hundsun.ares.studio.core.ARESCore;
import com.hundsun.ares.studio.internal.core.registry.ModuleRootDescriptor;
/**
* ģ�������ע���
* @author sundl
*/
public class ModulesRootTypeRegistry {
private static Logger logger = Logger.getLogger(ModulesRootTypeRegistry.class.getName());
private static ModulesRootTypeRegistry instance = null;
private Map<String, IModuleRootDescriptor> rootTypes = new HashMap<String, IModuleRootDescriptor>();
private ModulesRootTypeRegistry() {
init();
}
public static ModulesRootTypeRegistry getInstance() {
if (instance == null) {
instance = new ModulesRootTypeRegistry();
}
return instance;
}
private void init() {
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] elements = reg.getConfigurationElementsFor(ARESCore.PLUGIN_ID, ICommonExtensionConstants.EP_ID_MODULEROOT);
for (IConfigurationElement element : elements) {
IModuleRootDescriptor descriptor = new ModuleRootDescriptor(element);
rootTypes.put(descriptor.getId(), descriptor);
logger.fine("Module root extension readed, id: " + descriptor.getId());
}
}
public IModuleRootDescriptor getModuleRootDescriptor(String id) {
return rootTypes.get(id);
}
public Map<String, IModuleRootDescriptor> getRootTypes() {
return rootTypes;
}
}