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 ...@@ -226,13 +226,21 @@ class ExperimentList extends JFrame
JPanel selectPanel = new JPanel(new FlowLayout()); JPanel selectPanel = new JPanel(new FlowLayout());
topPanel.add(selectPanel, BorderLayout.SOUTH); topPanel.add(selectPanel, BorderLayout.SOUTH);
final JButton submitSelectionBtn = new JButton("select experiments and click the button to import"); final JButton importExperimentBtn = new JButton("import selected experiments");
selectPanel.add(submitSelectionBtn); selectPanel.add(importExperimentBtn);
submitSelectionBtn.setVisible(false); importExperimentBtn.setVisible(false);
final JButton submitSelectionStartExpBtn = new JButton("select experiments and click the button to import and start"); final JButton importAndStartExperimentBtn = new JButton("import and start selected experiments");
selectPanel.add(submitSelectionStartExpBtn); selectPanel.add(importAndStartExperimentBtn);
submitSelectionStartExpBtn.setVisible(false); 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() { submitDatesBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) public void actionPerformed(ActionEvent e)
...@@ -240,8 +248,10 @@ class ExperimentList extends JFrame ...@@ -240,8 +248,10 @@ class ExperimentList extends JFrame
try { try {
entryLabel.setVisible(true); entryLabel.setVisible(true);
submitDatesBtn.setVisible(true); submitDatesBtn.setVisible(true);
submitSelectionBtn.setVisible(true); importExperimentBtn.setVisible(true);
submitSelectionStartExpBtn.setVisible(true); importAndStartExperimentBtn.setVisible(true);
stopExperimentBtn.setVisible(true);
startExperimentBtn.setVisible(true);
DateLabelFormatter df = new DateLabelFormatter(); DateLabelFormatter df = new DateLabelFormatter();
final Date startSelectedDate = (Date) startDatePicker.getModel().getValue(); final Date startSelectedDate = (Date) startDatePicker.getModel().getValue();
...@@ -269,7 +279,7 @@ class ExperimentList extends JFrame ...@@ -269,7 +279,7 @@ class ExperimentList extends JFrame
} }
}); });
submitSelectionBtn.addActionListener(new ActionListener() { importExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) public void actionPerformed(ActionEvent e)
{ {
int[] selection = table.getSelectedRows(); int[] selection = table.getSelectedRows();
...@@ -287,30 +297,111 @@ class ExperimentList extends JFrame ...@@ -287,30 +297,111 @@ class ExperimentList extends JFrame
} }
}); });
submitSelectionStartExpBtn.addActionListener(new ActionListener() { importAndStartExperimentBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) public void actionPerformed(ActionEvent e)
{ {
int[] selection = table.getSelectedRows(); int[] selection = table.getSelectedRows();
// if ((selection.length > 0) && (dconnection.init() == ServiceConnectionStatus.SUCCESS) && (dconnection.login() == ServiceConnectionStatus.SUCCESS)) { if (selection.length > 0) {
for (int i = 0; i < selection.length; i++) { if (dconnection.isSessionValid()) {
String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal()); importAndStartExperiments(selection, dconnection);
String description = (String)table.getModel().getValueAt(selection[i], Column.DESCRIPTION.ordinal()); }
if (sconnection.addExperiment(experimentName, description) != ServiceConnection.ServiceConnectionStatus.SUCCESS) { else if (dconnection.isInitialized()) {
continue; JOptionPane.showMessageDialog(null,"Session expired. Restart the tools.",
} "Info",JOptionPane.WARNING_MESSAGE);
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); else if ((dconnection.init() == ServiceConnection.ServiceConnectionStatus.SUCCESS)
addRole((String)table.getModel().getValueAt(selection[i], Column.USER.ordinal()), experimentName, Role.USER); && (dconnection.login() == ServiceConnection.ServiceConnectionStatus.SUCCESS)) {
if (sconnection.startExperiment(experimentName) == ServiceConnection.ServiceConnectionStatus.SUCCESS) { importAndStartExperiments(selection, dconnection);
dconnection.startDaq(experimentName, experimentName); } else {
} else { JOptionPane.showMessageDialog(null,"Check Data acquisition service configuration, or invalid credentials.",
System.out.println("didn't start"); "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) { private void addRole(String userList, String experimentName, Role role) {
......
...@@ -20,7 +20,6 @@ class Gui ...@@ -20,7 +20,6 @@ class Gui
{ {
public static void main(String arg[]) public static void main(String arg[])
{ {
String configFile = arg[0]; String configFile = arg[0];
final Properties configProperties = new Properties(); final Properties configProperties = new Properties();
setConfig(configFile, configProperties); setConfig(configFile, configProperties);
...@@ -46,7 +45,7 @@ class Gui ...@@ -46,7 +45,7 @@ class Gui
if (sconnection.init(configProperties.getProperty("dm.storageServ.connection")) != ServiceConnection.ServiceConnectionStatus.SUCCESS) { if (sconnection.init(configProperties.getProperty("dm.storageServ.connection")) != ServiceConnection.ServiceConnectionStatus.SUCCESS) {
System.exit(0); System.exit(0);
} }
DaqServiceConnection dconnection = new DaqServiceConnection(configProperties.getProperty("dm.daqServ.connection")); DaqServiceConnection dconnection = new DaqServiceConnection(configProperties);
try try
{ {
LoginWindow frame = new LoginWindow(sconnection, oconnection, dconnection); LoginWindow frame = new LoginWindow(sconnection, oconnection, dconnection);
......
package gov.anl.dm.esafsync.serviceconn; package gov.anl.dm.esafsync.serviceconn;
import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Properties;
import javax.swing.JOptionPane;
public class DaqServiceConnection extends ServiceConnection{ public class DaqServiceConnection extends ServiceConnection{
...@@ -12,23 +16,56 @@ public class DaqServiceConnection extends ServiceConnection{ ...@@ -12,23 +16,56 @@ public class DaqServiceConnection extends ServiceConnection{
class StorageServUrl { class StorageServUrl {
static final String START_DAQ = "/experiments/startDaq"; 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) { public DaqServiceConnection(Properties configProperties) {
this.url = url; this.config = configProperties;
} }
public final int init() { public final int init() {
String url = config.getProperty("dm.daqServ.connection");
return super.init(url); 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<>(); Map<String, String> data = new HashMap<>();
data.put(Keyword.DAQ_EXPERIMENT_NAME, experimentName); data.put(Keyword.DAQ_EXPERIMENT_NAME, experimentName);
data.put(Keyword.DAQ_DATA_DIRECTORY, directory); 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 { ...@@ -98,6 +98,7 @@ public class ServiceConnection {
protected URL serviceUrl; protected URL serviceUrl;
private Session session = new Session(); private Session session = new Session();
private Login login; private Login login;
private boolean initialized = false;
public final int init(String serviceUrl) { public final int init(String serviceUrl) {
if (serviceUrl == null) { if (serviceUrl == null) {
...@@ -120,8 +121,17 @@ public class ServiceConnection { ...@@ -120,8 +121,17 @@ public class ServiceConnection {
HttpsURLConnection.setDefaultSSLSocketFactory(new NoServerVerificationSSLSocketFactory()); HttpsURLConnection.setDefaultSSLSocketFactory(new NoServerVerificationSSLSocketFactory());
initialized = true;
return ServiceConnectionStatus.SUCCESS; return ServiceConnectionStatus.SUCCESS;
} }
public boolean isInitialized() {
return initialized;
}
public boolean isSessionValid() {
return session.isValid();
}
private URL getServiceUrl() { private URL getServiceUrl() {
return serviceUrl; return serviceUrl;
...@@ -512,7 +522,6 @@ public class ServiceConnection { ...@@ -512,7 +522,6 @@ public class ServiceConnection {
int resp = sendPostData(loginData, connection); int resp = sendPostData(loginData, connection);
if (resp != ServiceConnectionStatus.SUCCESS) { if (resp != ServiceConnectionStatus.SUCCESS) {
System.out.println("here a");
return resp; return resp;
} }
resp = checkHttpResponse(connection); resp = checkHttpResponse(connection);
......
...@@ -87,6 +87,18 @@ public class Session implements Serializable { ...@@ -87,6 +87,18 @@ public class Session implements Serializable {
} }
return cookie; 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() { public Role getRole() {
return role; 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