package me.drton.flightplot.processors; import me.drton.flightplot.ColorSupplier; import me.drton.flightplot.ProcessorPreset; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import java.util.Set; /** * User: ton Date: 15.06.13 Time: 12:21 */ public class ProcessorsList { private Map<String, Class<? extends PlotProcessor>> processors = new HashMap<String, Class<? extends PlotProcessor>>(); public ProcessorsList() throws InstantiationException, IllegalAccessException { addProcessorClass(Simple.class); addProcessorClass(Derivative.class); addProcessorClass(Abs.class); addProcessorClass(ATan2.class); addProcessorClass(PosPIDControlSimulator.class); addProcessorClass(PosRatePIDControlSimulator.class); addProcessorClass(PositionEstimator.class); addProcessorClass(GlobalPositionProjection.class); addProcessorClass(LandDetector.class); addProcessorClass(Expression.class); addProcessorClass(NEDFromBodyProjection.class); addProcessorClass(Integral.class); addProcessorClass(Battery.class); addProcessorClass(PositionEstimatorKF.class); addProcessorClass(EulerFromQuaternion.class); addProcessorClass(Text.class); addProcessorClass(Dispersion.class); } private void addProcessorClass(Class<? extends PlotProcessor> processorClass) { processors.put(processorClass.getSimpleName(), processorClass); } public Set<String> getProcessorsList() { return processors.keySet(); } public PlotProcessor getProcessorInstance(ProcessorPreset processorPreset, double skipOut, Map<String, String> fieldsList) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { Class<? extends PlotProcessor> procClass = processors.get(processorPreset.getProcessorType()); if (procClass != null) { PlotProcessor processor = procClass.newInstance(); processor.setSkipOut(skipOut); processor.setFieldsList(fieldsList); processor.setParameters(processorPreset.getParameters()); processor.init(); return processor; } else { return null; } } }