/**
*
*/
package com.topsun.posclient.application;
import java.util.LinkedHashMap;
import java.util.Map;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
public class ContributionItemCategorysRegistry {
//private static final Logger logger = SystemLogFactory.getLogger(ContributionItemCategorysRegistry.class);
public static final String EXTENSION_ID = "com.topsun.posclient.application.contributionItemCategorys";
private static ContributionItemCategorysRegistry instance = null;
public static ContributionItemCategorysRegistry getInstance() {
if (instance == null) {
synchronized (ContributionItemCategorysRegistry.class) {
if (instance == null) {
instance = new ContributionItemCategorysRegistry();
}
}
}
return instance;
}
public ContributionItemCategorysRegistry() {
init();
}
private Map<String, ContributionItemCategoryDescriptor> descriptorMap = new LinkedHashMap<String, ContributionItemCategoryDescriptor>();
private void init() {
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(EXTENSION_ID);
IExtension[] extensions = extensionPoint.getExtensions();
for (IExtension extension : extensions) {
IConfigurationElement[] elements = extension.getConfigurationElements();
for (IConfigurationElement element : elements) {
ContributionItemCategoryDescriptor descriptor = new ContributionItemCategoryDescriptor();
try {
descriptor.init(element);
addDescriptor(descriptor);
} catch (Throwable e) {
// logger.error(e);
}
}
}
}
public ContributionItemCategoryDescriptor[] getDescriptors() {
return descriptorMap.values().toArray(new ContributionItemCategoryDescriptor[descriptorMap.size()]);
}
public boolean contains(String categoryId) {
return descriptorMap.containsKey(categoryId);
}
public void addDescriptor(ContributionItemCategoryDescriptor descriptor) {
if (descriptorMap.containsKey(descriptor.getId())) {
throw new IllegalArgumentException("Duplicated category id '" + descriptor.getId() + "'.");
}
descriptorMap.put(descriptor.getId(), descriptor);
}
}