From 7f59fc1ab2e9cb9de8962d9555ab9f00c2a11c86 Mon Sep 17 00:00:00 2001 From: Simon Ebner Date: Fri, 2 Aug 2013 15:18:18 +0200 Subject: [PATCH] Changes for parameters, ... --- .../main/java/ch/psi/fda/aq/Acquisition.java | 2 +- .../ch/psi/fda/aq/ng/AcquisitionEngineNG.java | 79 +++++++++++-------- .../aq/ng/AcquisitionEngineNGResource.java | 12 ++- .../fda/aq/ng/AcquisitionEngineNGTest.java | 7 +- 4 files changed, 63 insertions(+), 37 deletions(-) diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java index 9478a4c..b30fafc 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/Acquisition.java @@ -318,7 +318,7 @@ public class Acquisition { t.start(); if(NEW_ENGINE){ - acquisitionEngine.execute(mapper.getResourceDescriptors(), mapper.getScript()); + acquisitionEngine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList()); } else { actionLoop.prepare(); diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNG.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNG.java index 5541eaf..ebe7bf3 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNG.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNG.java @@ -19,6 +19,7 @@ package ch.psi.fda.aq.ng; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.BlockingQueue; @@ -60,7 +61,7 @@ public class AcquisitionEngineNG { System.setProperty("python.options.internalTablesImpl", "weak"); } - public void execute(Map resourceDescriptors, String script){ + public void execute(Map resourceDescriptors, String script, List parameter){ // TODO Remove debugging messages // For debugging purpose only @@ -73,36 +74,14 @@ public class AcquisitionEngineNG { // Set logger engine.put("logger", logger); - // Retrieve and set resources - for(String k: resourceDescriptors.keySet()){ - if(resourceDescriptors.get(k) instanceof ChannelDescriptor){ - ChannelDescriptor descriptor = (ChannelDescriptor)resourceDescriptors.get(k); - try { - engine.put(k, cservice.createChannel(descriptor)); - } catch (ChannelException | InterruptedException | TimeoutException e) { - throw new RuntimeException("Unable to create resource for channel: "+descriptor.getName(),e); - } - } - else if(resourceDescriptors.get(k) instanceof ShellDescriptor){ - engine.put(k, new ShellResource()); - } - else if(resourceDescriptors.get(k) instanceof ProbeDescriptor){ - ProbeDescriptor descriptor = (ProbeDescriptor) resourceDescriptors.get(k); - List> channels = new ArrayList<>(); - - for(ChannelDescriptor s: descriptor.getSensors()){ - try { - channels.add(cservice.createChannel(s)); - - } catch (ChannelException | InterruptedException | TimeoutException e) { - throw new RuntimeException("Unable to create resource for channel: "+s.getName(),e); - } - } - engine.put(k, new ChannelProbeResource(channels, outQueue)); - } - else{ - throw new RuntimeException("Resource type not supported: "+resourceDescriptors.get(k).getClass().getName()); - } + // Set parameters + engine.put("parameter", parameter); + + // Create/retrieve and set resources + Map resources = createResources(resourceDescriptors); + engine.put("resources", resources); + for(String k: resources.keySet()){ // For convenience make resources also available as variable named by the resource id + engine.put(k, resources.get(k)); } // Execute script @@ -115,6 +94,44 @@ public class AcquisitionEngineNG { } } + private Map createResources(Map resourceDescriptors){ + Map resources = new HashMap<>(); + for(String k: resourceDescriptors.keySet()){ + if(resourceDescriptors.get(k) instanceof ChannelDescriptor){ + ChannelDescriptor descriptor = (ChannelDescriptor)resourceDescriptors.get(k); + try { + resources.put(k, cservice.createChannel(descriptor)); +// engine.put(k, cservice.createChannel(descriptor)); + } catch (ChannelException | InterruptedException | TimeoutException e) { + throw new RuntimeException("Unable to create resource for channel: "+descriptor.getName(),e); + } + } + else if(resourceDescriptors.get(k) instanceof ShellDescriptor){ + resources.put(k, new ShellResource()); +// engine.put(k, new ShellResource()); + } + else if(resourceDescriptors.get(k) instanceof ProbeDescriptor){ + ProbeDescriptor descriptor = (ProbeDescriptor) resourceDescriptors.get(k); + List> channels = new ArrayList<>(); + + for(ChannelDescriptor s: descriptor.getSensors()){ + try { + channels.add(cservice.createChannel(s)); + + } catch (ChannelException | InterruptedException | TimeoutException e) { + throw new RuntimeException("Unable to create resource for channel: "+s.getName(),e); + } + } + resources.put(k, new ChannelProbeResource(channels, outQueue)); +// engine.put(k, new ChannelProbeResource(channels, outQueue)); + } + else{ + throw new RuntimeException("Resource type not supported: "+resourceDescriptors.get(k).getClass().getName()); + } + } + return resources; + } + public BlockingQueue getOutQueue(){ return outQueue; } diff --git a/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNGResource.java b/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNGResource.java index 7befece..0541b22 100644 --- a/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNGResource.java +++ b/ch.psi.fda/src/main/java/ch/psi/fda/aq/ng/AcquisitionEngineNGResource.java @@ -18,7 +18,9 @@ */ package ch.psi.fda.aq.ng; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; @@ -92,8 +94,14 @@ public class AcquisitionEngineNGResource { rdesc.putAll(edescriptor.getResources()); } - Map map =createResourceDescriptors(rdesc); - engine.execute(map, lmanager.getLogic(id)); + Map map = createResourceDescriptors(rdesc); + + List parameters = new ArrayList<>(); + if(edescriptor.getParameter()!=null){ + parameters = edescriptor.getParameter(); + } + + engine.execute(map, lmanager.getLogic(id), parameters); } @PUT diff --git a/ch.psi.fda/src/test/java/ch/psi/fda/aq/ng/AcquisitionEngineNGTest.java b/ch.psi.fda/src/test/java/ch/psi/fda/aq/ng/AcquisitionEngineNGTest.java index 3f4fdd5..578af2c 100644 --- a/ch.psi.fda/src/test/java/ch/psi/fda/aq/ng/AcquisitionEngineNGTest.java +++ b/ch.psi.fda/src/test/java/ch/psi/fda/aq/ng/AcquisitionEngineNGTest.java @@ -18,6 +18,7 @@ */ package ch.psi.fda.aq.ng; +import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -128,7 +129,7 @@ public class AcquisitionEngineNGTest { logger.info("Script to execute: "+mapper.getScript()); - engine.execute(mapper.getResourceDescriptors(), mapper.getScript()); + engine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList()); } @Test @@ -174,7 +175,7 @@ public class AcquisitionEngineNGTest { long start, end, elapsed; start = System.currentTimeMillis(); - engine.execute(mapper.getResourceDescriptors(), mapper.getScript()); + engine.execute(mapper.getResourceDescriptors(), mapper.getScript(), new ArrayList()); end = System.currentTimeMillis(); elapsed = end-start; logger.info("Elapsed time: "+elapsed); @@ -190,7 +191,7 @@ public class AcquisitionEngineNGTest { " print xr.getValue()\n"; // " print 'done'\n"; - engine.execute(rdescriptors, script); + engine.execute(rdescriptors, script, new ArrayList()); } @Test