Changes for parameters, ...

This commit is contained in:
2013-08-02 15:18:18 +02:00
parent d915137288
commit 7f59fc1ab2
4 changed files with 63 additions and 37 deletions
@@ -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<String>());
}
else {
actionLoop.prepare();
@@ -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<String, ?> resourceDescriptors, String script){
public void execute(Map<String, ?> resourceDescriptors, String script, List<String> 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<Channel<?>> 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<String,?> 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<String,?> createResources(Map<String, ?> resourceDescriptors){
Map<String,Object> 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<Channel<?>> 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<Message> getOutQueue(){
return outQueue;
}
@@ -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<String, ?> map =createResourceDescriptors(rdesc);
engine.execute(map, lmanager.getLogic(id));
Map<String, ?> map = createResourceDescriptors(rdesc);
List<String> parameters = new ArrayList<>();
if(edescriptor.getParameter()!=null){
parameters = edescriptor.getParameter();
}
engine.execute(map, lmanager.getLogic(id), parameters);
}
@PUT
@@ -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<String>());
}
@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<String>());
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<String>());
}
@Test