From 2aaef29da3e564c64af0db9ad6140881e8943934 Mon Sep 17 00:00:00 2001 From: "Barbara B. Frosik" <bfrosik@aps.anl.gov> Date: Tue, 22 Sep 2015 23:07:17 +0000 Subject: [PATCH] modified to add another daq connection and modified dir structure --- .../gov/anl/dm/esafsync/ExperimentList.java | 119 ++++++++++++------ .../src/gov/anl/dm/esafsync/Gui.java | 26 +++- .../src/gov/anl/dm/esafsync/LoginWindow.java | 16 ++- .../gov/anl/dm/esafsync/OracleConnection.java | 1 + .../serviceconn/DaqServiceConnection.java | 76 ++++++++++- .../serviceconn/ServiceConnection.java | 3 +- .../serviceconn/StorageServiceConnection.java | 1 + 7 files changed, 192 insertions(+), 50 deletions(-) diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/ExperimentList.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/ExperimentList.java index a1a0c9b4..c01f3dac 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/ExperimentList.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/ExperimentList.java @@ -9,7 +9,7 @@ import java.awt.Color; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.sql.SQLException; +import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -189,7 +189,7 @@ class ExperimentList extends JFrame private ExperimentTableModel tableModel = null; private JScrollPane scrollPane; - ExperimentList(final String sector, final OracleConnection oconnection, final StorageServiceConnection sconnection, final DaqServiceConnection dconnection) { + ExperimentList(final String sector, final OracleConnection oconnection, final StorageServiceConnection sconnection, final DaqServiceConnection dconnection, final DaqServiceConnection drconnection) { this.sconnection = sconnection; setTitle("Experiment Import"); setSize(1000, 500); @@ -317,19 +317,11 @@ class ExperimentList extends JFrame { int[] selection = table.getSelectedRows(); if (selection.length > 0) { - if (dconnection.isSessionValid()) { - importAndStartExperiments(selection, dconnection); - } - else if (dconnection.isInitialized()) { + if (dconnection.isSessionValid() && ((drconnection == null) || drconnection.isSessionValid())) { + importAndStartExperiments(selection, dconnection, drconnection); + } else { 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); } } } @@ -340,19 +332,11 @@ class ExperimentList extends JFrame { int[] selection = table.getSelectedRows(); if (selection.length > 0) { - if (dconnection.isSessionValid()) { - startExperiments(selection, dconnection); - } - else if (dconnection.isInitialized()) { + if (dconnection.isSessionValid() && ((drconnection == null) || drconnection.isSessionValid())) { + startExperiments(selection, dconnection, drconnection); + } else { 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); } } } @@ -363,19 +347,11 @@ class ExperimentList extends JFrame { int[] selection = table.getSelectedRows(); if (selection.length > 0) { - if (dconnection.isSessionValid()) { - stopExperiments(selection, dconnection); - } - else if (dconnection.isInitialized()) { + if (dconnection.isSessionValid() && ((drconnection == null) || drconnection.isSessionValid())) { + stopExperiments(selection, dconnection, drconnection); + } else { 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); } } } @@ -383,7 +359,7 @@ class ExperimentList extends JFrame } - private void importAndStartExperiments(int[] selection, DaqServiceConnection dconnection) { + private void importAndStartExperiments(int[] selection, DaqServiceConnection dconnection, DaqServiceConnection drconnection) { 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()); @@ -396,7 +372,17 @@ class ExperimentList extends JFrame 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); + // convert date + String startDateDir; + try { + startDateDir = convertDate2Dir(startDate); + } catch (ParseException e) { + startDateDir = startDate; + } + dconnection.startDaq(experimentName, startDateDir); + if (drconnection != null) { + drconnection.startDaq(experimentName, startDateDir); + } } else { JOptionPane.showMessageDialog(null,"The experiment "+ experimentName +" did not start", "Info",JOptionPane.WARNING_MESSAGE); @@ -405,18 +391,32 @@ class ExperimentList extends JFrame table.clearSelection(); } - private void startExperiments(int[] selection, DaqServiceConnection dconnection) { + private void startExperiments(int[] selection, DaqServiceConnection dconnection, DaqServiceConnection drconnection) { for (int i = 0; i < selection.length; i++) { + String startDate = (String)table.getModel().getValueAt(selection[i], Column.START_DATE.ordinal()); + // convert date + String startDateDir; + try { + startDateDir = convertDate2Dir(startDate); + } catch (ParseException e) { + startDateDir = startDate; + } String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal()); - dconnection.startDaq(experimentName); + dconnection.startDaq(experimentName, startDateDir); + if (drconnection != null) { + drconnection.startDaq(experimentName, startDateDir); + } } table.clearSelection(); } - private void stopExperiments(int[] selection, DaqServiceConnection dconnection) { + private void stopExperiments(int[] selection, DaqServiceConnection dconnection, DaqServiceConnection drconnection) { for (int i = 0; i < selection.length; i++) { String experimentName = EXPERIMENT_PREFIX+(String)table.getModel().getValueAt(selection[i], Column.NAME.ordinal()); dconnection.stopDaq(experimentName); + if (drconnection != null) { + drconnection.stopDaq(experimentName); + } } table.clearSelection(); } @@ -430,6 +430,45 @@ class ExperimentList extends JFrame sconnection.addExperimentUser(users[i], experimentName, role.toString()); } } + + private String convertDate2Dir(String startDate) throws ParseException { + String month = startDate.substring(0,3); + String numMonth = null; + if (month.equals("JAN")) { + numMonth = "01"; + } else if (month.equals("FEB")) { + numMonth = "02"; + } else if (month.equals("MAR")) { + numMonth = "03"; + } else if (month.equals("APR")) { + numMonth = "04"; + } else if (month.equals("MAY")) { + numMonth = "05"; + } else if (month.equals("JUN")) { + numMonth = "06"; + } else if (month.equals("JUL")) { + numMonth = "07"; + } else if (month.equals("AUG")) { + numMonth = "08"; + } else if (month.equals("SEP")) { + numMonth = "09"; + } else if (month.equals("OCT")) { + numMonth = "10"; + } else if (month.equals("NOV")) { + numMonth = "11"; + } else if (month.equals("DEC")) { + numMonth = "12"; + } + String agreableStartDate = numMonth + startDate.substring(3, startDate.length()); + // parse the date + DateFormat f = new SimpleDateFormat("M-d-y"); + Date d = f.parse(agreableStartDate); + + // now print the date + DateFormat out = new SimpleDateFormat("yyyy-MM"); + return out.format(d); + } } + diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/Gui.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/Gui.java index 14a68ead..2a75d991 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/Gui.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/Gui.java @@ -10,6 +10,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.SQLException; +import java.text.ParseException; import java.util.Properties; import javax.swing.JFrame; @@ -18,7 +19,7 @@ import javax.swing.SwingUtilities; class Gui { - public static void main(String arg[]) + public static void main(String arg[]) throws ParseException { String configFile = arg[0]; final Properties configProperties = new Properties(); @@ -45,10 +46,28 @@ class Gui if (sconnection.init(configProperties.getProperty("dm.storageServ.connection")) != ServiceConnection.ServiceConnectionStatus.SUCCESS) { System.exit(0); } - DaqServiceConnection dconnection = new DaqServiceConnection(configProperties); + String daqurl = configProperties.getProperty("dm.daq.connection"); + String dataDir = configProperties.getProperty("dm.daq.datadir"); + DaqServiceConnection dconnection = new DaqServiceConnection(daqurl, dataDir); + if (dconnection.init() != ServiceConnection.ServiceConnectionStatus.SUCCESS) { + System.exit(0); + } + DaqServiceConnection drconnection = null; + try { + String daqReceiverurl = configProperties.getProperty("dm.daqReciver.connection"); + String dataReceiverDir = configProperties.getProperty("dm.daqReceiver.datadir"); + if ((daqReceiverurl != null) && (dataReceiverDir != null)) { + drconnection = new DaqServiceConnection(daqReceiverurl, dataReceiverDir); + if (drconnection.init() != ServiceConnection.ServiceConnectionStatus.SUCCESS) { + System.exit(0); + } + } + } catch (Exception e) { + // possible null exception if property not defined + } try { - LoginWindow frame = new LoginWindow(sconnection, oconnection, dconnection); + LoginWindow frame = new LoginWindow(sconnection, oconnection, dconnection, drconnection); frame.setSize(300,200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -91,3 +110,4 @@ class Gui } } } + diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/LoginWindow.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/LoginWindow.java index d4c47e71..ab7aed25 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/LoginWindow.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/LoginWindow.java @@ -17,7 +17,7 @@ public final class LoginWindow extends JFrame { OracleConnection oconnection; JPanel panel; - LoginWindow(final StorageServiceConnection sconnection, final OracleConnection oconnection, final DaqServiceConnection dconnection) { + LoginWindow(final StorageServiceConnection sconnection, final OracleConnection oconnection, final DaqServiceConnection dconnection, final DaqServiceConnection drconnection) { this.sconnection = sconnection; this.oconnection = oconnection; @@ -64,13 +64,18 @@ public final class LoginWindow extends JFrame { JOptionPane.showMessageDialog(null,"enter login and password", "Error",JOptionPane.ERROR_MESSAGE); } else { - sconnection.setLogin(user, pass); - dconnection.setLogin(user, pass); - int aaResult = sconnection.login(); +// sconnection.setLogin(user, pass); +// dconnection.setLogin(user, pass); + int aaResult = sconnection.login(user, pass); + if ((dconnection.login(user, pass) != aaResult) || (dconnection.login(user, pass) != aaResult)) { + JOptionPane.showMessageDialog(null,"inconsistent login response", + "Error",JOptionPane.ERROR_MESSAGE); + return; + } switch (aaResult) { case ServiceConnection.ServiceConnectionStatus.SUCCESS: setVisible(false); - ExperimentList page=new ExperimentList(sectorText.getText().trim(), oconnection, sconnection, dconnection); + ExperimentList page=new ExperimentList(sectorText.getText().trim(), oconnection, sconnection, dconnection, drconnection); page.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); page.addWindowListener(new WindowAdapter() { @Override @@ -102,3 +107,4 @@ public final class LoginWindow extends JFrame { }); } } + diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/OracleConnection.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/OracleConnection.java index f5d7e0e7..05fe0c05 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/OracleConnection.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/OracleConnection.java @@ -49,3 +49,4 @@ public class OracleConnection { } } + diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java index 2e096277..6c02f70c 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java @@ -38,7 +38,81 @@ public class DaqServiceConnection extends ServiceConnection{ } else { directory = dataDir + "/" + experimentName; } - + package gov.anl.dm.esafsync.serviceconn; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.JOptionPane; + +public class DaqServiceConnection extends ServiceConnection{ + + class Keyword { + static final String DAQ_EXPERIMENT_NAME = "experimentName"; + static final String DAQ_DATA_DIRECTORY = "dataDirectory"; + } + + class StorageServUrl { + static final String START_DAQ = "/experiments/startDaq"; + static final String STOP_DAQ = "/experiments/stopDaq"; + } + + private String url; + private String dataDir; + + public DaqServiceConnection(String url, String dataDir) { + this.url = url; + this.dataDir = dataDir; + } + + public final int init() { + return super.init(url); + } + + public void startDaq(String experimentName, String startDateDir) { + String directory; + String dateDirectory; + if (dataDir.endsWith("/")) { + dateDirectory = dataDir + "/" + startDateDir; + directory = dataDir + startDateDir + "/" + experimentName; + } else { + dateDirectory = dataDir + startDateDir; + directory = dataDir + "/" + startDateDir + "/" + experimentName; + } + + Map<String, String> data = new HashMap<>(); + data.put(Keyword.DAQ_EXPERIMENT_NAME, encode(experimentName)); + data.put(Keyword.DAQ_DATA_DIRECTORY, encode(directory)); + + if ((new File(directory)).exists()) { + invokeSessionPostRequest(StorageServUrl.START_DAQ, data); + } else if ((new File(dateDirectory)).exists()) { + 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(dateDirectory).mkdir()) && (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); + } + } + } + + public void stopDaq(String experimentName) { + Map<String, String> data = new HashMap<>(); + data.put(Keyword.DAQ_EXPERIMENT_NAME, encode(experimentName)); + invokeSessionPostRequest(StorageServUrl.STOP_DAQ, data); + } + +} + + Map<String, String> data = new HashMap<>(); data.put(Keyword.DAQ_EXPERIMENT_NAME, encode(experimentName)); data.put(Keyword.DAQ_DATA_DIRECTORY, encode(directory)); diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/ServiceConnection.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/ServiceConnection.java index 18698811..93286908 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/ServiceConnection.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/ServiceConnection.java @@ -508,7 +508,7 @@ public class ServiceConnection { return login.login(); } - private final int login(String username, String password) { + public final int login(String username, String password) { HttpsURLConnection connection = null; try { String urlString = getFullRequestUrl(StorageServUrl.LOGIN_REQUEST); @@ -552,3 +552,4 @@ public class ServiceConnection { } + diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/StorageServiceConnection.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/StorageServiceConnection.java index 43a4961c..b7f57db0 100644 --- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/StorageServiceConnection.java +++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/StorageServiceConnection.java @@ -59,3 +59,4 @@ public class StorageServiceConnection extends ServiceConnection{ } } + -- GitLab