package com.hundsun.ares.studio.engin.skeleton; 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.core.IARESResource; import com.hundsun.ares.studio.engin.constant.IEngineConstant; public class SkeletonFactoryManager { private static Logger logger = Logger.getLogger(SkeletonFactoryManager.class); // com.hundsun.ares.studio.uft.macrotokenhandlerfactory // com.hundsun.ares.studio.uft.skeletonfactory private static SkeletonFactoryManager instance = null; private SkeletonFactoryManager(){ init(); } public static SkeletonFactoryManager getInstance(){ synchronized (SkeletonFactoryManager.class) { if(null == instance){ instance = new SkeletonFactoryManager(); } return instance; } } Map<String, SkeletonFactoryItem> fMap = new HashMap<String, SkeletonFactoryItem>(); private void init(){ logger.info("����UFT��ͼ������չ�㡣"); IExtensionRegistry reg = Platform.getExtensionRegistry(); IConfigurationElement[] elements = reg.getConfigurationElementsFor(IEngineConstant.PLUGIN_ID , ISkeletonFactoryExtentionPoint.EP_NAME); for (IConfigurationElement element : elements) { try { SkeletonFactoryItem tmp = new SkeletonFactoryItem(); tmp.id = element.getAttribute(ISkeletonFactoryExtentionPoint.EP_ATTR_ID); tmp.type = element.getAttribute(ISkeletonFactoryExtentionPoint.EP_ATTR_TYPE); tmp.adapter = (ISkeletonFactory)element.createExecutableExtension(ISkeletonFactoryExtentionPoint.EP_ATTR_CLASS); fMap.put(tmp.type, tmp); }catch (Exception e) { logger.error(String.format("��ȡ��չ��%s.%sʧ��", IEngineConstant.PLUGIN_ID,ISkeletonFactoryExtentionPoint.EP_NAME)); } } } /** * ��ȡ��ͼ���� * @param resource * @return */ public String getSkeletonType(Object resource){ if(resource instanceof IARESResource){ return ((IARESResource) resource).getType(); } return null; } /** * ��ȡ��ͼ���� * @param type * @return */ public ISkeletonFactory getSkeletonFactory(String type){ if(fMap.containsKey(type)){ return fMap.get(type).adapter; } return null; } /** * * @param resource * @return */ public ISkeletonFactory getSkeletonFactory(Object resource){ String type = getSkeletonType(resource); return getSkeletonFactory(type); } } class SkeletonFactoryItem{ public String id; public String type; public ISkeletonFactory adapter; }