package com.hundsun.ares.studio.jres.basicdata.logic.epackage.extensionpoint;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.hundsun.ares.studio.jres.basicdata.logic.epackage.IBaiscDataEpackageFactory;
public class EpackageFactoryManager {
private static EpackageFactoryManager instance = null;
private static final List<EpackageFactoryItem> factoryList = new ArrayList<EpackageFactoryItem>();
private EpackageFactoryManager(){
initEpackageFactory();
}
public static EpackageFactoryManager getInstance(){
if(null == instance){
instance = new EpackageFactoryManager();
}
return instance;
}
public void initEpackageFactory(){
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = registry.getExtensionPoint(IBaiscDataEpackageFactory.EXTPointID);
for(IConfigurationElement item :extensionPoint.getConfigurationElements()){
try {
EpackageFactoryItem factoryItem = new EpackageFactoryItem();
factoryItem.id = item.getAttribute(IBaiscDataEpackageFactory.EXTAttr_ID);
factoryItem.name = item.getAttribute(IBaiscDataEpackageFactory.EXTAttr_Name);
factoryItem.factory = (IBaiscDataEpackageFactory)item.createExecutableExtension(IBaiscDataEpackageFactory.EXTAttr_Class);
factoryList.add(factoryItem);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* �������ͻ�ȡ����
* @param type
* @return
*/
public IBaiscDataEpackageFactory getFactory(String type){
for(EpackageFactoryItem item:factoryList){
if(StringUtils.equals(item.id, type)){
return item.factory;
}
}
return null;
}
/**
* ��ȡ�����б�
* @return
*/
public List<EpackageFactoryItem> getFactoryList(){
return factoryList;
}
}