got first working version of REST server
This commit is contained in:
@@ -54,6 +54,7 @@ import com.google.common.eventbus.EventBus;
|
||||
import sun.misc.Signal;
|
||||
import sun.misc.SignalHandler;
|
||||
import ch.psi.fda.aq.Acquisition;
|
||||
import ch.psi.fda.aq.AcquisitionConfiguration;
|
||||
import ch.psi.fda.aq.VisualizationMapper;
|
||||
import ch.psi.fda.gui.ProgressPanel;
|
||||
import ch.psi.fda.gui.ScrollableFlowPanel;
|
||||
@@ -245,7 +246,7 @@ public class AcquisitionMain {
|
||||
}
|
||||
|
||||
// Create/get acquisition engine
|
||||
final Acquisition acquisition = new Acquisition(new DefaultChannelService());
|
||||
final Acquisition acquisition = new Acquisition(new DefaultChannelService(), new AcquisitionConfiguration());
|
||||
|
||||
boolean vis = false;
|
||||
// Only register data visualization task/processor if there are visualizations
|
||||
|
||||
@@ -126,7 +126,7 @@ public class Acquisition {
|
||||
|
||||
private static Logger logger = Logger.getLogger(Acquisition.class.getName());
|
||||
|
||||
private AcquisitionConfiguration configuration;
|
||||
private final AcquisitionConfiguration configuration;
|
||||
|
||||
private ActionLoop actionLoop;
|
||||
private Manipulator manipulator;
|
||||
@@ -139,7 +139,6 @@ public class Acquisition {
|
||||
|
||||
private Handler logHandler = null;
|
||||
|
||||
// private Collector col;
|
||||
private File datafile;
|
||||
|
||||
|
||||
@@ -152,9 +151,9 @@ public class Acquisition {
|
||||
|
||||
private HashMap<String, JythonGlobalVariable> jVariableDictionary = new HashMap<String, JythonGlobalVariable>();
|
||||
|
||||
public Acquisition(ChannelService cservice){
|
||||
public Acquisition(ChannelService cservice, AcquisitionConfiguration configuration){
|
||||
this.cservice = cservice;
|
||||
this.configuration = AcquisitionConfiguration.getInstance();
|
||||
this.configuration = configuration;
|
||||
this.actionLoop = null;
|
||||
this.manipulations = new ArrayList<Manipulation>();
|
||||
}
|
||||
@@ -652,7 +651,7 @@ public class Acquisition {
|
||||
// Mapping dimension pre-actions
|
||||
aLoop.getPreActions().addAll(mapActions(dimension.getPreAction()));
|
||||
|
||||
Long moveTimeout = AcquisitionConfiguration.getInstance().getActorMoveTimeout();
|
||||
Long moveTimeout = this.configuration.getActorMoveTimeout();
|
||||
|
||||
// Mapping positioners
|
||||
Double stime = 0d;
|
||||
|
||||
@@ -39,7 +39,8 @@ public class AcquisitionConfiguration {
|
||||
|
||||
|
||||
private static final Logger logger = Logger.getLogger(AcquisitionConfiguration.class.getName());
|
||||
private static final AcquisitionConfiguration instance = new AcquisitionConfiguration();
|
||||
|
||||
public final static String FDA_CONFIG_FILE = "ch.psi.fda.config.file";
|
||||
|
||||
private String otfChannelPrefix;
|
||||
private String otfNfsServer;
|
||||
@@ -70,37 +71,37 @@ public class AcquisitionConfiguration {
|
||||
|
||||
private String smptServer;
|
||||
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
* The constructor will read the configuration from the /fda.properties file (resource) located in the classpath.
|
||||
*/
|
||||
private AcquisitionConfiguration(){
|
||||
public AcquisitionConfiguration(){
|
||||
loadConfiguration();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get instance of this configuration
|
||||
* @return configuration
|
||||
*/
|
||||
public static AcquisitionConfiguration getInstance(){
|
||||
return(instance);
|
||||
|
||||
public void loadConfiguration(){
|
||||
loadConfiguration(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load configuration from properties file
|
||||
*/
|
||||
private void loadConfiguration() {
|
||||
String config = System.getProperty(ApplicationConfigurator.FDA_CONFIG_FILE_ARGUMENT);
|
||||
|
||||
public void loadConfiguration(String file) {
|
||||
if(file == null){
|
||||
file = System.getProperty(FDA_CONFIG_FILE);
|
||||
}
|
||||
Properties properties = new Properties();
|
||||
|
||||
if(config != null){
|
||||
// Only read in the property file if a file is specified
|
||||
if(file != null){
|
||||
try {
|
||||
properties.load(new FileReader(config));
|
||||
properties.load(new FileReader(file));
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new RuntimeException("Configuration file "+config+" not found", e);
|
||||
throw new RuntimeException("Configuration file "+file+" not found", e);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Cannot read configuration file "+config, e);
|
||||
throw new RuntimeException("Cannot read configuration file "+file, e);
|
||||
}
|
||||
}
|
||||
else{
|
||||
@@ -113,13 +114,12 @@ public class AcquisitionConfiguration {
|
||||
otfNfsServer = properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.nfsServer", "");
|
||||
otfNfsShare = properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.nfsShare", "");
|
||||
otfSmbShare = properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.smbShare", "");
|
||||
|
||||
otfUseCrlogic = new Boolean(properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.useCrlogic", "false"));
|
||||
otfCrlogicPrefix = properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.crlogicPrefix", "");
|
||||
otfCrlogicKeepTmpFiles = new Boolean(properties.getProperty(AcquisitionConfiguration.class.getPackage().getName()+".otf.crlogicKeepTmpFiles", "false"));
|
||||
|
||||
// Workaround
|
||||
// dataBaseDirectory = properties.getProperty(AcquisitionEngineConfiguration.class.getPackage().getName()+".data.baseDirectory", ".");
|
||||
if(System.getProperty(ApplicationConfigurator.FDA_HOME_ARGUMENT)!=null){
|
||||
if(System.getProperty(ApplicationConfigurator.FDA_HOME_ARGUMENT)!=null){ // TODO remove
|
||||
dataBaseDirectory = System.getProperty(ApplicationConfigurator.FDA_HOME_ARGUMENT)+"/data";
|
||||
}
|
||||
else{
|
||||
@@ -135,98 +135,12 @@ public class AcquisitionConfiguration {
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload this configuration from the corresponding properties file
|
||||
* @throws IOException
|
||||
* Replace ${name} and ${date} macro given string
|
||||
* @param string
|
||||
* @param date
|
||||
* @param name
|
||||
* @return
|
||||
*/
|
||||
public void reloadConfiguration() throws IOException{
|
||||
loadConfiguration();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfChannelPrefix
|
||||
*/
|
||||
public String getOtfChannelPrefix() {
|
||||
return otfChannelPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfScalerPrefix
|
||||
*/
|
||||
public String getOtfScalerPrefix() {
|
||||
return otfScalerPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfNfsServer
|
||||
*/
|
||||
public String getOtfNfsServer() {
|
||||
return otfNfsServer;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfNfsShare
|
||||
*/
|
||||
public String getOtfNfsShare() {
|
||||
return otfNfsShare;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfSmbShare
|
||||
*/
|
||||
public String getOtfSmbShare() {
|
||||
return otfSmbShare;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfUseCrlogic
|
||||
*/
|
||||
public boolean isOtfUseCrlogic() {
|
||||
return otfUseCrlogic;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dataBaseDirectory
|
||||
*/
|
||||
public String getDataBaseDirectory() {
|
||||
return dataBaseDirectory;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the dataFilePrefix
|
||||
*/
|
||||
public String getDataFilePrefix() {
|
||||
return dataFilePrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the smptServer
|
||||
*/
|
||||
public String getSmptServer() {
|
||||
return smptServer;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the otfCrlogicPrefix
|
||||
*/
|
||||
public String getOtfCrlogicPrefix() {
|
||||
return otfCrlogicPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the otfCrlogicKeepTmpFiles
|
||||
*/
|
||||
public boolean isOtfCrlogicKeepTmpFiles() {
|
||||
return otfCrlogicKeepTmpFiles;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the actorMoveTimeout
|
||||
*/
|
||||
public Long getActorMoveTimeout() {
|
||||
return actorMoveTimeout;
|
||||
}
|
||||
|
||||
public String replaceMacros(String string, Date date, String name){
|
||||
String newString = string;
|
||||
|
||||
@@ -248,50 +162,100 @@ public class AcquisitionConfiguration {
|
||||
return newString;
|
||||
}
|
||||
|
||||
// Getter and setter functions
|
||||
|
||||
public String getOtfChannelPrefix() {
|
||||
return otfChannelPrefix;
|
||||
}
|
||||
|
||||
public void setOtfChannelPrefix(String otfChannelPrefix) {
|
||||
this.otfChannelPrefix = otfChannelPrefix;
|
||||
}
|
||||
|
||||
public String getOtfNfsServer() {
|
||||
return otfNfsServer;
|
||||
}
|
||||
|
||||
public void setOtfNfsServer(String otfNfsServer) {
|
||||
this.otfNfsServer = otfNfsServer;
|
||||
}
|
||||
|
||||
public String getOtfNfsShare() {
|
||||
return otfNfsShare;
|
||||
}
|
||||
|
||||
public void setOtfNfsShare(String otfNfsShare) {
|
||||
this.otfNfsShare = otfNfsShare;
|
||||
}
|
||||
|
||||
public String getOtfSmbShare() {
|
||||
return otfSmbShare;
|
||||
}
|
||||
|
||||
public void setOtfSmbShare(String otfSmbShare) {
|
||||
this.otfSmbShare = otfSmbShare;
|
||||
}
|
||||
|
||||
public String getOtfScalerPrefix() {
|
||||
return otfScalerPrefix;
|
||||
}
|
||||
|
||||
public void setOtfScalerPrefix(String otfScalerPrefix) {
|
||||
this.otfScalerPrefix = otfScalerPrefix;
|
||||
}
|
||||
|
||||
public boolean isOtfUseCrlogic() {
|
||||
return otfUseCrlogic;
|
||||
}
|
||||
|
||||
public void setOtfUseCrlogic(boolean otfUseCrlogic) {
|
||||
this.otfUseCrlogic = otfUseCrlogic;
|
||||
}
|
||||
|
||||
public String getOtfCrlogicPrefix() {
|
||||
return otfCrlogicPrefix;
|
||||
}
|
||||
|
||||
public void setOtfCrlogicPrefix(String otfCrlogicPrefix) {
|
||||
this.otfCrlogicPrefix = otfCrlogicPrefix;
|
||||
}
|
||||
|
||||
public boolean isOtfCrlogicKeepTmpFiles() {
|
||||
return otfCrlogicKeepTmpFiles;
|
||||
}
|
||||
|
||||
public void setOtfCrlogicKeepTmpFiles(boolean otfCrlogicKeepTmpFiles) {
|
||||
this.otfCrlogicKeepTmpFiles = otfCrlogicKeepTmpFiles;
|
||||
}
|
||||
|
||||
public String getDataBaseDirectory() {
|
||||
return dataBaseDirectory;
|
||||
}
|
||||
|
||||
public void setDataBaseDirectory(String dataBaseDirectory) {
|
||||
this.dataBaseDirectory = dataBaseDirectory;
|
||||
}
|
||||
|
||||
public String getDataFilePrefix() {
|
||||
return dataFilePrefix;
|
||||
}
|
||||
|
||||
public void setDataFilePrefix(String dataFilePrefix) {
|
||||
this.dataFilePrefix = dataFilePrefix;
|
||||
}
|
||||
|
||||
public Long getActorMoveTimeout() {
|
||||
return actorMoveTimeout;
|
||||
}
|
||||
|
||||
public void setActorMoveTimeout(Long actorMoveTimeout) {
|
||||
this.actorMoveTimeout = actorMoveTimeout;
|
||||
}
|
||||
|
||||
public String getSmptServer() {
|
||||
return smptServer;
|
||||
}
|
||||
|
||||
public void setSmptServer(String smptServer) {
|
||||
this.smptServer = smptServer;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import ch.psi.fda.aq.AcquisitionConfiguration;
|
||||
|
||||
/**
|
||||
* @author ebner
|
||||
*
|
||||
@@ -42,7 +44,6 @@ public class ApplicationConfigurator {
|
||||
private static final Logger logger = Logger.getLogger(ApplicationConfigurator.class.getName());
|
||||
|
||||
public final static String FDA_HOME_ARGUMENT = "ch.psi.fda.home";
|
||||
public final static String FDA_CONFIG_FILE_ARGUMENT = "ch.psi.fda.config.file";
|
||||
|
||||
private final File home;
|
||||
private final File configdir;
|
||||
@@ -88,9 +89,9 @@ public class ApplicationConfigurator {
|
||||
}
|
||||
|
||||
// Set FDA configuration argument -Dch.psi.fda.config.file=...
|
||||
property = System.getProperty(FDA_CONFIG_FILE_ARGUMENT);
|
||||
property = System.getProperty(AcquisitionConfiguration.FDA_CONFIG_FILE);
|
||||
if(property==null){
|
||||
System.setProperty(FDA_CONFIG_FILE_ARGUMENT, fdaProperties.getAbsolutePath());
|
||||
System.setProperty(AcquisitionConfiguration.FDA_CONFIG_FILE, fdaProperties.getAbsolutePath());
|
||||
}
|
||||
|
||||
// Set jcae.properties file
|
||||
|
||||
@@ -20,9 +20,12 @@ package ch.psi.fda.rest;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
|
||||
import ch.psi.fda.aq.Acquisition;
|
||||
import ch.psi.fda.aq.AcquisitionConfiguration;
|
||||
import ch.psi.fda.model.v1.Configuration;
|
||||
import ch.psi.jcae.ChannelService;
|
||||
|
||||
@@ -34,11 +37,20 @@ public class AcquisitionEngine {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(AcquisitionEngine.class.getName());
|
||||
|
||||
private Acquisition acquisition;
|
||||
@Inject
|
||||
private AcquisitionConfiguration config;
|
||||
@Inject
|
||||
private ChannelService cservice;
|
||||
|
||||
public AcquisitionEngine(ChannelService cservice){
|
||||
private Acquisition acquisition;
|
||||
|
||||
public AcquisitionEngine(){
|
||||
}
|
||||
|
||||
@Inject
|
||||
public AcquisitionEngine(ChannelService cservice, AcquisitionConfiguration config){
|
||||
this.cservice=cservice;
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
public void scan(Configuration configuration){
|
||||
@@ -48,7 +60,7 @@ public class AcquisitionEngine {
|
||||
|
||||
try{
|
||||
EventBus ebus = new EventBus();
|
||||
acquisition = new Acquisition(cservice);
|
||||
acquisition = new Acquisition(cservice, config);
|
||||
acquisition.initalize(ebus, configuration);
|
||||
acquisition.execute();
|
||||
}
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
package ch.psi.fda.rest;
|
||||
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import org.glassfish.hk2.utilities.binding.AbstractBinder;
|
||||
|
||||
import ch.psi.fda.aq.AcquisitionConfiguration;
|
||||
import ch.psi.jcae.ChannelService;
|
||||
import ch.psi.jcae.impl.DefaultChannelService;
|
||||
|
||||
public class ResourceBinder extends AbstractBinder {
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(new AcquisitionEngine(new DefaultChannelService())).to(AcquisitionEngine.class);
|
||||
bind(DefaultChannelService.class).to(ChannelService.class).in(Singleton.class);
|
||||
bind(AcquisitionConfiguration.class).to(AcquisitionConfiguration.class).in(Singleton.class);
|
||||
bind(AcquisitionEngine.class).to(AcquisitionEngine.class).in(Singleton.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -31,7 +31,7 @@ import ch.psi.fda.rest.AcquisitionEngine;
|
||||
|
||||
@Path("fda")
|
||||
public class ScanService {
|
||||
|
||||
|
||||
@Inject
|
||||
private AcquisitionEngine aengine;
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public class AcquisitionConfigurationTest {
|
||||
*/
|
||||
@Test
|
||||
public void testGetConfiguration() {
|
||||
AcquisitionConfiguration configuration = AcquisitionConfiguration.getInstance();
|
||||
AcquisitionConfiguration configuration = new AcquisitionConfiguration();
|
||||
String s = configuration.getDataFilePrefix();
|
||||
if(s==null){
|
||||
Assert.fail("No configuration returned for data file prefix");
|
||||
|
||||
Reference in New Issue
Block a user