/**
*
*/
package com.topsun.posclient.application;
import java.util.ArrayList;
import java.util.List;
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 ApplicationCustomizationsRegistry {
public static final String EXTENSION_ID = "com.topsun.posclient.application.customizations";
private static ApplicationCustomizationsRegistry instance = null;
public static ApplicationCustomizationsRegistry getInstance() {
if (instance == null) {
synchronized (ApplicationCustomizationsRegistry.class) {
if (instance == null) {
instance = new ApplicationCustomizationsRegistry();
}
}
}
return instance;
}
public ApplicationCustomizationsRegistry() {
init();
}
private List<ApplicationCustomizationDescriptor> descriptorList = new ArrayList<ApplicationCustomizationDescriptor>();
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) {
ApplicationCustomizationDescriptor descriptor = new ApplicationCustomizationDescriptor();
descriptor.init(element);
descriptorList.add(descriptor);
}
}
if (descriptorList.size() == 0) {
descriptorList.add(new ApplicationCustomizationDescriptor());
}
}
public ApplicationCustomizationDescriptor[] getDescriptors() {
return descriptorList.toArray(new ApplicationCustomizationDescriptor[descriptorList.size()]);
}
public ApplicationCustomizationDescriptor getDefaultDescriptor() {
ApplicationCustomizationDescriptor descriptor = getDescriptor(ApplicationCustomizationDescriptor.DEFAULT_ID);
return descriptor != null ? descriptor : (descriptorList.size() != 0
? descriptorList.get(0) : null);
}
public ApplicationCustomizationDescriptor getDescriptor(String id) {
if (id == null || id.trim().length() == 0) {
return null;
}
for (ApplicationCustomizationDescriptor descriptor : descriptorList) {
if (id.equals(descriptor.getId())) {
return descriptor;
}
}
return null;
}
}