package org.jbpm.gd.common.registry;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
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 SemanticElementRegistry {
private Map elementNameMap = new HashMap();
private Map elementIdMap = new HashMap();
public SemanticElementRegistry(String language) {
initializeMaps(language);
}
private void initializeMaps(String language) {
IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint("org.jbpm.gd.jpdl.semanticElements");
IExtension[] extensions = extensionPoint.getExtensions();
for (int i = 0; i < extensions.length; i++) {
IConfigurationElement[] configElements = extensions[i].getConfigurationElements();
for (int j = 0; j < configElements.length; j++) {
if (!language.equals(configElements[j].getAttribute("language"))) continue;
String elementName = configElements[j].getAttribute("name");
if (elementName == null) {
elementName = configElements[j].getAttribute("id");
}
String elementId = configElements[j].getAttribute("id");
elementNameMap.put(elementName, configElements[j]);
elementIdMap.put(elementId, configElements[j]);
}
}
}
public IConfigurationElement getConfigurationElementByName(String elementName) {
return (IConfigurationElement)elementNameMap.get(elementName);
}
public IConfigurationElement getConfigurationElementById(String id) {
return (IConfigurationElement)elementIdMap.get(id);
}
Set getSemanticElementIds() {
return elementIdMap.keySet();
}
}