Skip to content
Snippets Groups Projects
Commit 726077f9 authored by Barbara B. Frosik's avatar Barbara B. Frosik
Browse files

added stop/start experiments buttons

parent 74473e69
No related branches found
No related tags found
No related merge requests found
......@@ -226,13 +226,21 @@ class ExperimentList extends JFrame
JPanel selectPanel = new JPanel(new FlowLayout());
topPanel.add(selectPanel, BorderLayout.SOUTH);
final JButton submitSelectionBtn = new JButton("select experiments and click the button to import");
selectPanel.add(submitSelectionBtn);
submitSelectionBtn.setVisible(false);
final JButton importExperimentBtn = new JButton("import selected experiments");
selectPanel.add(importExperimentBtn);
importExperimentBtn.setVisible(false);
final JButton submitSelectionStartExpBtn = new JButton("select experiments and click the button to import and start");
selectPanel.add(submitSelectionStartExpBtn);
submitSelectionStartExpBtn.setVisible(false);
final JButton importAndStartExperimentBtn = new JButton("import and start selected experiments");
selectPanel.add(importAndStartExperimentBtn);
importAndStartExperimentBtn.setVisible(false);
final JButton startExperimentBtn = new JButton("start selected experiments");
selectPanel.add(startExperimentBtn);
startExperimentBtn.setVisible(false);
final JButton stopExperimentBtn = new JButton("stop selected experiments");
selectPanel.add(stopExperimentBtn);
stopExperimentBtn.setVisible(false);
submitDatesBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
......@@ -240,8 +248,10 @@ class ExperimentList extends JFrame
try {
entryLabel.setVisible(true);
submitDatesBtn.setVisible(true);
submitSelectionBtn.setVisible(true);
submitSelectionStartExpBtn.setVisible(true);
importExperimentBtn.setVisible(true);
importAndStartExperimentBtn.setVisible(true);
stopExperimentBtn.setVisible(true);
startExperimentBtn.setVisible(true);
DateLabelFormatter df = new DateLabelFormatter();
final Date startSelectedDate = (Date) startDatePicker.getModel().getValue();
......@@ -269,7 +279,7 @@ class ExperimentList extends JFrame
}
});
submitSelectionBtn.addActionListener(new ActionListener() {
importExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int[] selection = table.getSelectedRows();
......@@ -287,30 +297,111 @@ class ExperimentList extends JFrame
}
});
submitSelectionStartExpBtn.addActionListener(new ActionListener() {
importAndStartExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int[] selection = table.getSelectedRows();
// if ((selection.length > 0) && (dconnection.init() == ServiceConnectionStatus.SUCCESS) && (dconnection.login() == ServiceConnectionStatus.SUCCESS)) {
for (int i = 0; i < selection.length; i++) {
String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal());
String description = (String)table.getModel().getValueAt(selection[i], Column.DESCRIPTION.ordinal());
if (sconnection.addExperiment(experimentName, description) != ServiceConnection.ServiceConnectionStatus.SUCCESS) {
continue;
}
addRole((String)table.getModel().getValueAt(selection[i], Column.MANAGER.ordinal()), experimentName, Role.MANAGER);
// addRole((String)table.getModel().getValueAt(selection[i], Column.PI.ordinal()), experimentName, Role.PI);
addRole((String)table.getModel().getValueAt(selection[i], Column.USER.ordinal()), experimentName, Role.USER);
if (sconnection.startExperiment(experimentName) == ServiceConnection.ServiceConnectionStatus.SUCCESS) {
dconnection.startDaq(experimentName, experimentName);
} else {
System.out.println("didn't start");
}
if (selection.length > 0) {
if (dconnection.isSessionValid()) {
importAndStartExperiments(selection, dconnection);
}
else if (dconnection.isInitialized()) {
JOptionPane.showMessageDialog(null,"Session expired. Restart the tools.",
"Info",JOptionPane.WARNING_MESSAGE);
}
else if ((dconnection.init() == ServiceConnection.ServiceConnectionStatus.SUCCESS)
&& (dconnection.login() == ServiceConnection.ServiceConnectionStatus.SUCCESS)) {
importAndStartExperiments(selection, dconnection);
} else {
JOptionPane.showMessageDialog(null,"Check Data acquisition service configuration, or invalid credentials.",
"Info",JOptionPane.WARNING_MESSAGE);
}
// }
table.clearSelection();
}
}
});
startExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int[] selection = table.getSelectedRows();
if (selection.length > 0) {
if (dconnection.isSessionValid()) {
startExperiments(selection, dconnection);
}
else if (dconnection.isInitialized()) {
JOptionPane.showMessageDialog(null,"Session expired. Restart the tools.",
"Info",JOptionPane.WARNING_MESSAGE);
}
else if ((dconnection.init() == ServiceConnection.ServiceConnectionStatus.SUCCESS)
&& (dconnection.login() == ServiceConnection.ServiceConnectionStatus.SUCCESS)) {
startExperiments(selection, dconnection);
} else {
JOptionPane.showMessageDialog(null,"Check Data acquisition service configuration, or invalid credentials.",
"Info",JOptionPane.WARNING_MESSAGE);
}
}
}
});
stopExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int[] selection = table.getSelectedRows();
if (selection.length > 0) {
if (dconnection.isSessionValid()) {
stopExperiments(selection, dconnection);
}
else if (dconnection.isInitialized()) {
JOptionPane.showMessageDialog(null,"Session expired. Restart the tools.",
"Info",JOptionPane.WARNING_MESSAGE);
}
else if ((dconnection.init() == ServiceConnection.ServiceConnectionStatus.SUCCESS)
&& (dconnection.login() == ServiceConnection.ServiceConnectionStatus.SUCCESS)) {
stopExperiments(selection, dconnection);
} else {
JOptionPane.showMessageDialog(null,"Check Data acquisition service configuration, or invalid credentials.",
"Info",JOptionPane.WARNING_MESSAGE);
}
}
}
});
}
private void importAndStartExperiments(int[] selection, DaqServiceConnection dconnection) {
for (int i = 0; i < selection.length; i++) {
String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal());
String description = (String)table.getModel().getValueAt(selection[i], Column.DESCRIPTION.ordinal());
if (sconnection.addExperiment(experimentName, description) != ServiceConnection.ServiceConnectionStatus.SUCCESS) {
continue;
}
addRole((String)table.getModel().getValueAt(selection[i], Column.MANAGER.ordinal()), experimentName, Role.MANAGER);
// addRole((String)table.getModel().getValueAt(selection[i], Column.PI.ordinal()), experimentName, Role.PI);
addRole((String)table.getModel().getValueAt(selection[i], Column.USER.ordinal()), experimentName, Role.USER);
if (sconnection.startExperiment(experimentName) == ServiceConnection.ServiceConnectionStatus.SUCCESS) {
dconnection.startDaq(experimentName);
} else {
JOptionPane.showMessageDialog(null,"The experiment "+ experimentName +" did not start",
"Info",JOptionPane.WARNING_MESSAGE);
}
}
table.clearSelection();
}
private void startExperiments(int[] selection, DaqServiceConnection dconnection) {
for (int i = 0; i < selection.length; i++) {
String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal());
dconnection.startDaq(experimentName);
}
table.clearSelection();
}
private void stopExperiments(int[] selection, DaqServiceConnection dconnection) {
for (int i = 0; i < selection.length; i++) {
String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal());
dconnection.stopDaq(experimentName);
}
table.clearSelection();
}
private void addRole(String userList, String experimentName, Role role) {
......
......@@ -20,7 +20,6 @@ class Gui
{
public static void main(String arg[])
{
String configFile = arg[0];
final Properties configProperties = new Properties();
setConfig(configFile, configProperties);
......@@ -46,7 +45,7 @@ class Gui
if (sconnection.init(configProperties.getProperty("dm.storageServ.connection")) != ServiceConnection.ServiceConnectionStatus.SUCCESS) {
System.exit(0);
}
DaqServiceConnection dconnection = new DaqServiceConnection(configProperties.getProperty("dm.daqServ.connection"));
DaqServiceConnection dconnection = new DaqServiceConnection(configProperties);
try
{
LoginWindow frame = new LoginWindow(sconnection, oconnection, dconnection);
......
package gov.anl.dm.esafsync.serviceconn;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.swing.JOptionPane;
public class DaqServiceConnection extends ServiceConnection{
......@@ -12,23 +16,56 @@ public class DaqServiceConnection extends ServiceConnection{
class StorageServUrl {
static final String START_DAQ = "/experiments/startDaq";
static final String STOP_DAQ = "/experiments/stopDaq";
}
private final String url;
private final Properties config;
public DaqServiceConnection(String url) {
this.url = url;
public DaqServiceConnection(Properties configProperties) {
this.config = configProperties;
}
public final int init() {
String url = config.getProperty("dm.daqServ.connection");
return super.init(url);
}
public void startDaq(String experimentName, String directory) {
public void startDaq(String experimentName) {
String dataDir = config.getProperty("dm.daq.datadir");
String directory;
if (dataDir.endsWith("/")) {
directory = dataDir + experimentName;
} else {
directory = dataDir + "/" + experimentName;
}
Map<String, String> data = new HashMap<>();
data.put(Keyword.DAQ_EXPERIMENT_NAME, experimentName);
data.put(Keyword.DAQ_DATA_DIRECTORY, directory);
invokeSessionPostRequest(StorageServUrl.START_DAQ, data);
if ((new File(dataDir)).exists()) {
if ((new File(directory)).exists()) {
invokeSessionPostRequest(StorageServUrl.START_DAQ, data);
} else if (new File(directory).mkdir()) {
invokeSessionPostRequest(StorageServUrl.START_DAQ, data);
} else {
JOptionPane.showMessageDialog(null,"Can't start experiment " + experimentName + " in DAQ service. The experiment directory can't be created.",
"Warning",JOptionPane.WARNING_MESSAGE);
}
} else {
if ((new File(dataDir).mkdir()) && (new File(directory).mkdir())) {
invokeSessionPostRequest(StorageServUrl.START_DAQ, data);
} else {
JOptionPane.showMessageDialog(null,"Can't start experiment " + experimentName + " in DAQ service. The configured data directory does not exist and can't be created.",
"Error",JOptionPane.ERROR_MESSAGE);
}
}
}
public void stopDaq(String experimentName) {
Map<String, String> data = new HashMap<>();
data.put(Keyword.DAQ_EXPERIMENT_NAME, encode(experimentName));
invokeSessionPostRequest(StorageServUrl.STOP_DAQ, data);
}
}
......
......@@ -98,6 +98,7 @@ public class ServiceConnection {
protected URL serviceUrl;
private Session session = new Session();
private Login login;
private boolean initialized = false;
public final int init(String serviceUrl) {
if (serviceUrl == null) {
......@@ -120,8 +121,17 @@ public class ServiceConnection {
HttpsURLConnection.setDefaultSSLSocketFactory(new NoServerVerificationSSLSocketFactory());
initialized = true;
return ServiceConnectionStatus.SUCCESS;
}
public boolean isInitialized() {
return initialized;
}
public boolean isSessionValid() {
return session.isValid();
}
private URL getServiceUrl() {
return serviceUrl;
......@@ -512,7 +522,6 @@ public class ServiceConnection {
int resp = sendPostData(loginData, connection);
if (resp != ServiceConnectionStatus.SUCCESS) {
System.out.println("here a");
return resp;
}
resp = checkHttpResponse(connection);
......
......@@ -87,6 +87,18 @@ public class Session implements Serializable {
}
return cookie;
}
public boolean isValid() {
if (cookie == null) {
return false;
} else {
HttpCookie httpCookie = HttpCookie.parse(cookie).get(0);
if (httpCookie.hasExpired()) {
return false;
}
}
return true;
}
public Role getRole() {
return role;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment