package info.limpet.stackedcharts.ui.view.adapter;
import info.limpet.stackedcharts.model.Dataset;
import info.limpet.stackedcharts.model.ScatterSet;
import info.limpet.stackedcharts.ui.editor.Activator;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
public class AdapterRegistry implements IStackedDatasetAdapter,
IStackedScatterSetAdapter
{
private static final String DATASET_ADAPTER_ID =
"info.limpet.stackedcharts.ui.dataset_adapter";
private static final String SCATTERSET_ADAPTER_ID =
"info.limpet.stackedcharts.ui.scatterset_adapter";
@SuppressWarnings("unchecked")
@Override
public List<Dataset> convertToDataset(Object data)
{
List<Dataset> res = null;
try
{
// ok, do we need to loop through the items?
List<Object> list;
if (data instanceof List<?>)
{
list = (List<Object>) data;
}
else
{
list = new ArrayList<Object>();
list.add(data);
}
// now loop through them
for (Object item : list)
{
IConfigurationElement[] config =
Platform.getExtensionRegistry().getConfigurationElementsFor(
DATASET_ADAPTER_ID);
for (IConfigurationElement e : config)
{
Object o = e.createExecutableExtension("class");
if (o instanceof IStackedDatasetAdapter)
{
IStackedDatasetAdapter sa = (IStackedDatasetAdapter) o;
List<Dataset> matches = sa.convertToDataset(item);
if (matches != null)
{
if (res == null)
{
res = new ArrayList<Dataset>();
}
res.addAll(matches);
// success, drop out
break;
}
}
}
}
}
catch (Exception ex)
{
Activator.getDefault().getLog().log(
new Status(Status.ERROR, Activator.PLUGIN_ID,
"Failed to load stacked charts adapter", ex));
}
return res;
}
@Override
public boolean canConvertToDataset(Object data)
{
boolean res = false;
try
{
IConfigurationElement[] config =
Platform.getExtensionRegistry().getConfigurationElementsFor(
DATASET_ADAPTER_ID);
for (IConfigurationElement e : config)
{
Object o = e.createExecutableExtension("class");
if (o instanceof IStackedDatasetAdapter)
{
IStackedDatasetAdapter sa = (IStackedDatasetAdapter) o;
if (sa.canConvertToDataset(data))
{
// success, drop out
res = true;
break;
}
}
}
}
catch (Exception ex)
{
Activator.getDefault().getLog().log(
new Status(Status.ERROR, Activator.PLUGIN_ID,
"Failed to load stacked charts adapter", ex));
}
return res;
}
@SuppressWarnings("unchecked")
@Override
public List<ScatterSet> convertToScatterSet(Object data)
{
List<ScatterSet> res = null;
try
{
// ok, do we need to loop through the items?
List<Object> list;
if (data instanceof List<?>)
{
list = (List<Object>) data;
}
else
{
list = new ArrayList<Object>();
list.add(data);
}
// now loop through them
for (Object item : list)
{
IConfigurationElement[] config =
Platform.getExtensionRegistry().getConfigurationElementsFor(
SCATTERSET_ADAPTER_ID);
for (IConfigurationElement e : config)
{
Object o = e.createExecutableExtension("class");
if (o instanceof IStackedScatterSetAdapter)
{
IStackedScatterSetAdapter sa = (IStackedScatterSetAdapter) o;
List<ScatterSet> matches = sa.convertToScatterSet(item);
if (matches != null)
{
if (res == null)
{
res = new ArrayList<ScatterSet>();
}
res.addAll(matches);
// success, drop out
break;
}
}
}
}
}
catch (Exception ex)
{
Activator.getDefault().getLog().log(
new Status(Status.ERROR, Activator.PLUGIN_ID,
"Failed to load stacked charts adapter", ex));
}
return res;
}
@Override
public boolean canConvertToScatterSet(Object data)
{
boolean res = false;
try
{
IConfigurationElement[] config =
Platform.getExtensionRegistry().getConfigurationElementsFor(
SCATTERSET_ADAPTER_ID);
for (IConfigurationElement e : config)
{
Object o = e.createExecutableExtension("class");
if (o instanceof IStackedScatterSetAdapter)
{
IStackedScatterSetAdapter sa = (IStackedScatterSetAdapter) o;
if (sa.canConvertToScatterSet(data))
{
// success, drop out
res = true;
break;
}
}
}
}
catch (Exception ex)
{
Activator.getDefault().getLog().log(
new Status(Status.ERROR, Activator.PLUGIN_ID,
"Failed to load stacked charts adapter", ex));
}
return res;
}
}