/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.script.wrap;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.hundsun.ares.studio.jres.script.ScriptPlugin;
import com.hundsun.ares.studio.jres.script.api.factory.IScriptPoxyFactory;
/**
* @author lvgao
*
*/
public class ModelScriptWrapManager {
private static Logger logger = Logger.getLogger(ModelScriptWrapManager.class);
private static ModelScriptWrapManager instance = null;
private ModelScriptWrapManager(){
init();
}
public static ModelScriptWrapManager getInstance(){
synchronized (ModelScriptWrapManager.class) {
if(null == instance){
instance = new ModelScriptWrapManager();
}
return instance;
}
}
Map<String, ModelScripWrapItem> fMap = new HashMap<String, ModelScripWrapItem>();
private void init(){
logger.info("���ؽű�ģ�ͷ�װ��չ�㡣");
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] elements = reg.getConfigurationElementsFor(ScriptPlugin.PLUGIN_ID , IModelScriptWrapExtentionPoint.EP_NAME);
for (IConfigurationElement element : elements) {
try {
ModelScripWrapItem tmp = new ModelScripWrapItem();
tmp.id = element.getAttribute(IModelScriptWrapExtentionPoint.EP_ATTR_ID);
tmp.type = element.getAttribute(IModelScriptWrapExtentionPoint.EP_ATTR_TYPE);
tmp.adapter = (IScriptPoxyFactory)element.createExecutableExtension(IModelScriptWrapExtentionPoint.EP_ATTR_CLASS);
fMap.put(tmp.id, tmp);
}catch (Exception e) {
logger.error(String.format("��ȡ��չ��%s.%sʧ��", ScriptPlugin.PLUGIN_ID,IModelScriptWrapExtentionPoint.EP_NAME));
}
}
}
/**
* ��ȡ������
* @param id
* @return
*/
public IScriptPoxyFactory getScriptPoxyFactory(String id){
if(fMap.containsKey(id)){
return fMap.get(id).adapter;
}
return null;
}
}
class ModelScripWrapItem{
public String id;
public String type;
public IScriptPoxyFactory adapter;
}