/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.search;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import com.hundsun.ares.studio.ui.ARESUI;
/**
*
* @author liaogc
*/
public class ARESSearcherManager {
private static Logger logger = Logger.getLogger(ARESSearcherManager.class.getName());
private static final String EXTENSION_POINT_ID = "areasearch";
private Map<String ,ARESSearcherElement> searcherElements = new HashMap<String,ARESSearcherElement>();
private static ARESSearcherManager instance;
public static ARESSearcherManager getInstance() {
if (instance == null) {
instance = new ARESSearcherManager();
}
return instance;
}
private ARESSearcherManager() {
init();
}
private void init() {
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] elements = reg.getConfigurationElementsFor(ARESUI.PLUGIN_ID, EXTENSION_POINT_ID);
for (IConfigurationElement element : elements) {
if (element.getName().equals("searcher")) {
ARESSearcherElement searchElement = new ARESSearcherElement();
String id = StringUtils.defaultIfBlank(element.getAttribute("id"), StringUtils.EMPTY);
searchElement.setSearchId(id);
String[] items = StringUtils.split(StringUtils.defaultIfBlank(element.getAttribute("items"), StringUtils.EMPTY),",");
for(String item :items){
searchElement.getSearchItems().add(item);
}
String[] resTypes = StringUtils.split(StringUtils.defaultIfBlank(element.getAttribute("resTypes"), StringUtils.EMPTY),",");
for(String resType :resTypes){
searchElement.getSearcherResTypes().add(resType);
}
String order = StringUtils.defaultIfBlank(element.getAttribute("order"), "-1");
searchElement.setOrder(order);
try {
IARESSarcher searcher = (IARESSarcher)element.createExecutableExtension("class");
searchElement.setSearcher(searcher);
} catch (CoreException e) {
logger.error(e.getMessage());
}
searcherElements.put(id, searchElement);
}
}
}
/**
* @return the searcherElements
*/
public Map<String, ARESSearcherElement> getSearcherElements() {
return searcherElements;
}
}