diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/RemoteAcquisitionMain.java b/ch.psi.fda/src/main/java/ch/psi/fda/RemoteAcquisitionMain.java index 6565655..155e025 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/RemoteAcquisitionMain.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/RemoteAcquisitionMain.java @@ -55,7 +55,6 @@ import com.google.common.eventbus.EventBus; import sun.misc.Signal; import sun.misc.SignalHandler; -import ch.psi.fda.aq.VisualizationMapper; import ch.psi.fda.gui.ProgressPanel; import ch.psi.fda.gui.ScrollableFlowPanel; import ch.psi.fda.model.ModelManager; diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/ViewerMain.java b/ch.psi.fda/src/main/java/ch/psi/fda/ViewerMain.java index 71d1807..afbc32c 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/ViewerMain.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/ViewerMain.java @@ -23,7 +23,6 @@ import java.awt.FlowLayout; import java.awt.Label; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -42,10 +41,9 @@ import org.apache.commons.cli.ParseException; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; -import ch.psi.fda.aq.VisualizationMapper; import ch.psi.fda.gui.ScrollableFlowPanel; -import ch.psi.fda.model.v1.Visualization; import ch.psi.fda.rest.StreamClient; +import ch.psi.fda.vdescriptor.VDescriptor; import ch.psi.fda.visualizer.Visualizer; /** @@ -103,7 +101,7 @@ public class ViewerMain { bus.register(new Object(){ @Subscribe - public void onMessage(List vis){ + public void onMessage(VDescriptor vdescriptor){ logger.info("Build up new visualization"); @@ -112,7 +110,7 @@ public class ViewerMain { bus.unregister(visualizer); } - visualizer = new Visualizer(VisualizationMapper.mapVisualizations(vis)); + visualizer = new Visualizer(vdescriptor); visualizer.setUpdateAtStreamElement(true); visualizer.setUpdateAtStreamDelimiter(true); visualizer.setUpdateAtEndOfStream(true); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java b/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java index 331092d..e1e0e85 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/VisualizationMain.java @@ -24,6 +24,7 @@ import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.PrintWriter; +import java.util.ServiceLoader; import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; @@ -48,12 +49,10 @@ import org.xml.sax.SAXException; import com.google.common.eventbus.AsyncEventBus; import com.google.common.eventbus.EventBus; -import ch.psi.fda.aq.VisualizationMapper; import ch.psi.fda.deserializer.DataDeserializer; import ch.psi.fda.deserializer.DataDeserializerTXT; import ch.psi.fda.gui.ScrollableFlowPanel; -import ch.psi.fda.model.ModelManager; -import ch.psi.fda.model.v1.Configuration; +import ch.psi.fda.vdescriptor.VDescriptor; import ch.psi.fda.visualizer.Visualizer; /** @@ -86,16 +85,21 @@ public class VisualizationMain { throw new IllegalArgumentException("Configuration file ["+configuration.getAbsolutePath()+"] does not exist"); } - // Unmarshall configuration file - Configuration c; - try { - c = ModelManager.unmarshall(configuration); - } catch (Exception e) { - throw new RuntimeException("Unable to load configuration file "+configuration.getAbsolutePath(), e); - } + VDescriptor vdescriptor = null; + ServiceLoader providers = ServiceLoader.load(DescriptorProvider.class); + for (DescriptorProvider provider : providers) { + try{ + provider.load(configuration); + vdescriptor = provider.getVDescriptor(); + break; + } + catch(Exception e){ + logger.log(Level.INFO, provider.getClass().getName()+ " is not able to read provided descriptor files", e); + } + } // Visualize data - visualize(c, data); + visualize(vdescriptor, data); } /** @@ -104,7 +108,7 @@ public class VisualizationMain { * @param data * @throws InterruptedException */ - public void visualize(Configuration configuration, File data) throws InterruptedException{ + public void visualize(VDescriptor vdescriptor, File data) throws InterruptedException{ if(data==null){ throw new IllegalArgumentException("Data file is null"); @@ -118,7 +122,7 @@ public class VisualizationMain { DataDeserializer deserializer = new DataDeserializerTXT(bus, data); // Create Visualizer - Visualizer visualizer = new Visualizer(VisualizationMapper.mapVisualizations(configuration.getVisualization())); + Visualizer visualizer = new Visualizer(vdescriptor); // visualizer.setTerminateAtEOS(true); // Adapt default visualizer behavior to optimize performance for visualization diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/XScanDescriptorProvider.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/XScanDescriptorProvider.java index 40eb102..c6bc506 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/XScanDescriptorProvider.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/XScanDescriptorProvider.java @@ -200,7 +200,7 @@ public class XScanDescriptorProvider implements DescriptorProvider { matrixplot.setnY(nY); matrixplot.getData().add(new XYZSeries(idX, idY, idZ)); - vdescriptor.getPlots().add(matrixplot); + vd.getPlots().add(matrixplot); } else if(v instanceof ch.psi.fda.model.v1.MatrixPlotArray){ // Support for 2D waveform plots @@ -280,7 +280,7 @@ public class XScanDescriptorProvider implements DescriptorProvider { matrixplot.setnY(nY); matrixplot.getData().add(new YZSeries(idY, idZ)); - vdescriptor.getPlots().add(matrixplot); + vd.getPlots().add(matrixplot); } else{