/* * frmSaveData.java * * Created on December 18, 2002, 4:24 PM */ /** * * @author Joset A. Etzel */ import java.sql.*; import javax.swing.JOptionPane; import java.awt.event.ItemEvent; import java.io.File; import javax.swing.JFileChooser; import java.io.FileWriter; import java.util.ArrayList; import java.util.Iterator; public class frmSaveData extends javax.swing.JInternalFrame { public static Connection conData; public static Statement stmSQL; RespMeasures rmData; public static boolean bolSaveInDB = true; HeartMeasures rmHeartData; private boolean bolConnectedToDB = false; private String strSubjectID = ""; private String strSessionID = ""; private String strClipName = ""; /** Creates new form frmSaveData */ public frmSaveData() { //connect to the database try { Class.forName("org.gjt.mm.mysql.Driver"); conData = frmMain.getDatabaseConnection(); } catch (Exception e) { e.printStackTrace(); } initComponents(); GetData(); //call sub to check for existance of data objects & enable check boxes } private void GetData() { //gets the heart rate variability & respiration data objects and checks if they exist (have data) //if they do, let the user save that type of data String strSubjectID = ""; String strSessionID = ""; String strTemp = ""; String strName = ""; rmData = frmRespiration.getRespDataObject(); //get the object from frmRSA if(rmData != null) { //show data exists so can save it strClipName = rmData.getClipID(); txtClipID.setText(strClipName); //put clip id into box for user chkRespiration.setSelected(true); chkRespiration.setEnabled(true); } rmHeartData = frmRSA.getHeartDataObject(); if(rmHeartData != null) { //show data exists so can save it strClipName = rmHeartData.getClipID(); txtClipID.setText(strClipName); //put clip id into box for user chkHRV.setSelected(true); chkHRV.setEnabled(true); } if( strClipName.equals("") == true ) { txtClipID.setText("no data"); } //see if a subject and session ID were picked in frmLoadFromDB if (frmLoadData.loadedFromDB() == true) { //have a subject and session ID FillCombos(); //put session and subject names into combo boxes chkDatabase.setSelected(true); //move to the selected item in cboSubject strSubjectID = frmLoadFromDB.getSubjectID(); try { ResultSet rssSubjects = stmSQL.executeQuery("SELECT PPG, firstName, middleInitial, lastName FROM subject WHERE subID = \"" + strSubjectID + "\""); rssSubjects.next(); //get to the entry strTemp = rssSubjects.getString("PPG"); if ( strTemp.equals("") == false ) { strName = strSubjectID + ": " + strTemp; } else { strName = strSubjectID + ": " + rssSubjects.getString("lastName") + ", " + rssSubjects.getString("firstName") + " " + rssSubjects.getString("middleInitial") + "."; } cboSubject.setSelectedItem(strName); //and move to the selected one in cboSession strSessionID = frmLoadFromDB.getSessionID(); rssSubjects = stmSQL.executeQuery("SELECT expDate, experimenter, expType FROM sessionData WHERE subID = \"" + strSubjectID + "\" AND sessionID = \"" + strSessionID + "\""); rssSubjects.next(); strTemp = strSessionID + ": " + rssSubjects.getString("expDate") + ", " + rssSubjects.getString("expType") + " (" + rssSubjects.getString("experimenter") + ")"; cboSession.setSelectedItem(strTemp); } catch(java.sql.SQLException e) { e.printStackTrace(); } } } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; lblLong = new javax.swing.JLabel(); lblSubject = new javax.swing.JLabel(); cboSubject = new javax.swing.JComboBox(); chkDatabase = new javax.swing.JCheckBox(); chkXML = new javax.swing.JCheckBox(); cboSession = new javax.swing.JComboBox(); lblSession = new javax.swing.JLabel(); cmdSave = new javax.swing.JButton(); lblClipInfo = new javax.swing.JLabel(); lblClipID = new javax.swing.JLabel(); txtClipID = new javax.swing.JTextField(); lblDataComment = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); txtDataComment = new javax.swing.JTextArea(); chkRespiration = new javax.swing.JCheckBox(); chkHRV = new javax.swing.JCheckBox(); lblWhatToSave = new javax.swing.JLabel(); txtPath = new javax.swing.JTextField(); cmdSelectFile = new javax.swing.JButton(); lblSavePath = new javax.swing.JLabel(); cmdCancel = new javax.swing.JButton(); getContentPane().setLayout(new java.awt.GridBagLayout()); setClosable(true); setIconifiable(true); setMaximizable(true); setResizable(true); setTitle("Select save location"); lblLong.setText("Indicate where the analysis results should be saved"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 6; gridBagConstraints.gridwidth = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(lblLong, gridBagConstraints); lblSubject.setText("Select subject: "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 7; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(lblSubject, gridBagConstraints); cboSubject.setMinimumSize(new java.awt.Dimension(200, 20)); cboSubject.setPreferredSize(new java.awt.Dimension(200, 20)); cboSubject.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { cboSubjectItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 7; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(cboSubject, gridBagConstraints); chkDatabase.setText("database"); chkDatabase.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { chkDatabaseActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 7; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 5); getContentPane().add(chkDatabase, gridBagConstraints); chkXML.setText("XML document"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 9; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); getContentPane().add(chkXML, gridBagConstraints); cboSession.setMaximumSize(new java.awt.Dimension(400, 20)); cboSession.setMinimumSize(new java.awt.Dimension(200, 20)); cboSession.setPreferredSize(new java.awt.Dimension(300, 20)); cboSession.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { cboSessionItemStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 8; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(cboSession, gridBagConstraints); lblSession.setText("Select session:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 8; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 5); getContentPane().add(lblSession, gridBagConstraints); cmdSave.setMnemonic('S'); cmdSave.setText("Save"); cmdSave.setMaximumSize(new java.awt.Dimension(81, 20)); cmdSave.setMinimumSize(new java.awt.Dimension(81, 20)); cmdSave.setPreferredSize(new java.awt.Dimension(81, 20)); cmdSave.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdSaveActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 11; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0); getContentPane().add(cmdSave, gridBagConstraints); lblClipInfo.setText("Clip information for current data"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 2; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; getContentPane().add(lblClipInfo, gridBagConstraints); lblClipID.setText("Clip ID:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5); getContentPane().add(lblClipID, gridBagConstraints); txtClipID.setMinimumSize(new java.awt.Dimension(100, 20)); txtClipID.setPreferredSize(new java.awt.Dimension(350, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0); getContentPane().add(txtClipID, gridBagConstraints); lblDataComment.setText("Comment:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 4; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5); getContentPane().add(lblDataComment, gridBagConstraints); jScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); jScrollPane1.setMaximumSize(new java.awt.Dimension(350, 50)); jScrollPane1.setMinimumSize(new java.awt.Dimension(350, 50)); jScrollPane1.setPreferredSize(new java.awt.Dimension(350, 50)); txtDataComment.setLineWrap(true); txtDataComment.setMaximumSize(new java.awt.Dimension(350, 350)); txtDataComment.setMinimumSize(new java.awt.Dimension(350, 50)); txtDataComment.setPreferredSize(new java.awt.Dimension(350, 350)); jScrollPane1.setViewportView(txtDataComment); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 4; gridBagConstraints.gridwidth = 3; gridBagConstraints.gridheight = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; getContentPane().add(jScrollPane1, gridBagConstraints); chkRespiration.setText("respiration"); chkRespiration.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(chkRespiration, gridBagConstraints); chkHRV.setText("HRV and RSA"); chkHRV.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 1; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(chkHRV, gridBagConstraints); lblWhatToSave.setText("Check to save data type"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 0; gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; getContentPane().add(lblWhatToSave, gridBagConstraints); txtPath.setMaximumSize(new java.awt.Dimension(250, 20)); txtPath.setMinimumSize(new java.awt.Dimension(200, 20)); txtPath.setPreferredSize(new java.awt.Dimension(250, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridy = 10; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(txtPath, gridBagConstraints); cmdSelectFile.setMnemonic('f'); cmdSelectFile.setText("Select file"); cmdSelectFile.setMaximumSize(new java.awt.Dimension(136, 20)); cmdSelectFile.setMinimumSize(new java.awt.Dimension(110, 20)); cmdSelectFile.setPreferredSize(new java.awt.Dimension(110, 20)); cmdSelectFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdSelectFileActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 3; gridBagConstraints.gridy = 10; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(cmdSelectFile, gridBagConstraints); lblSavePath.setText("Document location:"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 10; gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0); getContentPane().add(lblSavePath, gridBagConstraints); cmdCancel.setMnemonic('C'); cmdCancel.setText("Cancel"); cmdCancel.setMaximumSize(new java.awt.Dimension(81, 20)); cmdCancel.setMinimumSize(new java.awt.Dimension(81, 20)); cmdCancel.setPreferredSize(new java.awt.Dimension(81, 20)); cmdCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cmdCancelActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridy = 11; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; getContentPane().add(cmdCancel, gridBagConstraints); pack(); }//GEN-END:initComponents private void cmdCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdCancelActionPerformed try { this.setClosed(true); } catch(java.beans.PropertyVetoException e) { e.printStackTrace(); } }//GEN-LAST:event_cmdCancelActionPerformed private void cmdSelectFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSelectFileActionPerformed //bring up a file selection dialog so can pick the data file, put the file name in txtFileName and the entire //path in txtPath int intResult = 0; File fileChosen; //show a file chooser to let user pick a text file for compression. JFileChooser frmFileSave = new JFileChooser(frmPreferences.getInstallPath()); intResult = frmFileSave.showSaveDialog(null); //this returns if select or cancel was clicked if (intResult == JFileChooser.CANCEL_OPTION) { return; } fileChosen = frmFileSave.getSelectedFile(); if (fileChosen.exists() == true) { JOptionPane.showMessageDialog(null, "The file already exists. If you do not change the file name before saving\n the existing file will be overwritten.", "File Warning", JOptionPane.WARNING_MESSAGE); } txtPath.setText(fileChosen.getPath()); //put path in txtPath }//GEN-LAST:event_cmdSelectFileActionPerformed private boolean ReadyToSave(String strTable) { //delete the data associated with this subject & session from the database int intAnswer = 0; boolean bolReady = true; String strTemp = ""; //exit false if subject or session ID not set if (strSubjectID.equals("")) { JOptionPane.showMessageDialog(null, "You must select a subject before saving the data.", "Selection Error", JOptionPane.ERROR_MESSAGE); return false; } if (strSessionID.equals("")) { JOptionPane.showMessageDialog(null, "You must select a session before saving the data.", "Selection Error", JOptionPane.ERROR_MESSAGE); return false; } if (strClipName.equals("")) { JOptionPane.showMessageDialog(null, "You must indicate the clip name before saving the data.", "Selection Error", JOptionPane.ERROR_MESSAGE); return false; } //look if any data in the row of the database where the new data should go strTemp = "SELECT * FROM " + strTable + " WHERE subID = \"" + strSubjectID + "\" AND sessionID = \"" + strSessionID + "\" AND clipID = \"" + strClipName + "\""; try { ResultSet rssSubjects = stmSQL.executeQuery(strTemp); //check for existing data in that table of the database if (rssSubjects.next() == false) { bolReady = true; } //no data in table, so can return true else { //ask the user if they are sure they want to delete the existing data intAnswer = JOptionPane.showConfirmDialog(null, "There is already data in the database for this subject \nand session. Are you sure that" + " you want to replace it?", "Delete Confirm", JOptionPane.YES_NO_OPTION); if (intAnswer == JOptionPane.YES_OPTION) { stmSQL = conData.createStatement(); stmSQL.executeUpdate("DELETE FROM " + strTable + " WHERE subID = \"" + strSubjectID + "\" AND sessionID = \"" + strSessionID + "\" AND clipID = \"" + strClipName + "\""); bolReady = true; //deleted, so can return true } else { bolReady = false; } //not sure that they want to replace the existing row } } catch(java.sql.SQLException e) { e.printStackTrace(); } return bolReady; } private void cboSessionItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboSessionItemStateChanged //check if a data listing for this subject & session already exists. if so, enable the delete button String strTemp = ""; //only want to do this if clicked, not if loading so make sure a real selection if ( (String)cboSession.getSelectedItem() != "" ) { if ( evt.getStateChange() == ItemEvent.SELECTED ) { strTemp = (String)cboSession.getSelectedItem(); //get the session to parse out the parts if ( strTemp.equals("") == true) { JOptionPane.showMessageDialog(null, "You must select a session before saving the data to the database.", "Selection Error", JOptionPane.ERROR_MESSAGE); return; } strSessionID = strTemp.substring(0, strTemp.indexOf(":")); //sessionID is always the first part before the : /* */ } } //end ifs }//GEN-LAST:event_cboSessionItemStateChanged private void cmdSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdSaveActionPerformed //saves data from RespMeasures into the respMeasures database table String strComment = ""; String strSQL = ""; String strReturn = ""; int intTemp = 0; int intC = 0; Iterator jcIterator; ArrayList jcTempList = new ArrayList(); String strTemp = ""; String strPeakList = ""; String strTroughList = ""; String strPeakPauseList = ""; String strTroughPauseList = ""; String strIsValid = ""; strComment = GeneralCode.AddEscapeChars(txtDataComment.getText()); //fn gets text ready for database & SQL strClipName = GeneralCode.AddEscapeChars(txtClipID.getText()); //fn gets text ready for database & SQL if (chkRespiration.isSelected() == true && chkDatabase.isSelected() == true) { //save respiration into database if( ReadyToSave("respMeasures") == false ) { return; } //don't want to save yet so exit jcTempList = rmData.getPeakList(); //have to output the valid peaks differently jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strPeakList = strPeakList + strTemp + "|"; } jcTempList = new ArrayList(); jcTempList = rmData.getTroughList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strTroughList = strTroughList + strTemp + "|"; } jcTempList = new ArrayList(); jcTempList = rmData.getPeakPauseList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strPeakPauseList = strPeakPauseList + strTemp + "|"; } jcTempList = new ArrayList(); jcTempList = rmData.getTroughPauseList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strTroughPauseList = strTroughPauseList + strTemp + "|"; } if (rmData.getIsValid() == true) { strIsValid = "1"; } else { strIsValid = "0"; } System.out.println("strIsValid: " + strIsValid); try { stmSQL = conData.createStatement(); stmSQL.executeUpdate("INSERT INTO respMeasures VALUES ('" + strSubjectID + "', '" + strSessionID + "', '" + strClipName + "', '" + strComment + "', '" + rmData.getTotalBreathMean() + "', '" + rmData.getTotalBreathStdDev() + "', '" + rmData.getInspTimeMean() + "', '" + rmData.getInspTimeStdDev() + "', '" + rmData.getExpTimeMean() + "', '" + rmData.getExpTimeStdDev() + "', '" + rmData.getPostInspPauseMean() + "', '" + rmData.getPostInspPauseStdDev() + "', '" + rmData.getPostExpPauseMean() + "', '" + rmData.getPostExpPauseStdDev() + "', '" + rmData.getInspDutyTimeMean() + "', '" + rmData.getInspDutyTimeStdDev() + "', '" + rmData.getRespRateMean() + "', '" + rmData.getRespRateStdDev() + "', '" + GeneralCode.AddEscapeChars(rmData.getComment()) + "', '" + strIsValid + "', '" + strPeakPauseList + "', '" + strTroughPauseList + "', '" + strPeakList + "', '" + strTroughList + "', '" + rmData.getNumBreaths() + "', '" + rmData.getShortestBreath() + "', '" + rmData.getLongestBreath() + "')"); } catch( java.sql.SQLException e ) { e.printStackTrace(); } } if( chkHRV.isSelected() == true && chkDatabase.isSelected() == true ) { //save HRV into database if( ReadyToSave("heartMeasures") == false ) { return; } //don't want to save yet so exit jcTempList = new ArrayList(); jcTempList = rmHeartData.getPeakList(); jcIterator = jcTempList.iterator(); strPeakList = ""; while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strPeakList = strPeakList + strTemp + "|"; } jcTempList = new ArrayList(); jcTempList = rmHeartData.getRSAList(); jcIterator = jcTempList.iterator(); strTroughList = ""; while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); strTroughList = strTroughList + strTemp + "|"; } if (rmHeartData.getIsValid() == true) { strIsValid = "1"; } else { strIsValid = "0"; } System.out.println("strIsValid: " + strIsValid); try { stmSQL = conData.createStatement(); stmSQL.executeUpdate("INSERT INTO heartMeasures VALUES ('" + strSubjectID + "', '" + strSessionID + "', '" + strClipName + "', '" + strComment + "', '" + rmHeartData.getHeartRateMean() + "', '" + rmHeartData.getHeartRateStdDev() + "', '" + rmHeartData.getRSAMean() + "', '" + rmHeartData.getRSAStdDev() + "', '" + rmHeartData.getRRMean() + "', '" + rmHeartData.getRRStdDev() + "', '" + GeneralCode.AddEscapeChars(rmHeartData.getComment()) + "', '" + strIsValid + "', '" + strPeakList + "', '" + rmHeartData.getNumRPeaks() + "', '" + rmHeartData.getShortestBeat() + "', '" + rmHeartData.getLongestBeat() + "', '" + rmHeartData.getRSAMin() + "', '" + rmHeartData.getRSAMax() + "', '" + rmHeartData.getRSACount() + "', '" + strTroughList + "')"); } catch (java.sql.SQLException e) { e.printStackTrace(); } } if( chkXML.isSelected() == true ) { //save as xml if( txtPath.getText().equals("") == true ) { JOptionPane.showMessageDialog(null, "You must indicate where to save the new xml file.", "Selection Error", JOptionPane.ERROR_MESSAGE); return; } strReturn = System.getProperty("line.separator"); //return character for the computer try { FileWriter jcOut = new FileWriter(txtPath.getText()); jcOut.write("" + strReturn); jcOut.write("" + strComment + "" + strReturn); if( chkRespiration.isSelected() == true ) { //write out respiration data jcOut.write("" + strReturn); jcOut.write("" + rmData.getTotalBreathMean() + "" + strReturn); jcOut.write("" + rmData.getTotalBreathStdDev() + "" + strReturn); jcOut.write("" + rmData.getInspTimeMean() + "" + strReturn); jcOut.write("" + rmData.getInspTimeStdDev() + "" + strReturn); jcOut.write("" + rmData.getExpTimeMean() + "" + strReturn); jcOut.write("" + rmData.getExpTimeStdDev() + "" + strReturn); jcOut.write("" + rmData.getPostInspPauseMean() + "" + strReturn); jcOut.write("" + rmData.getPostInspPauseStdDev() + "" + strReturn); jcOut.write("" + rmData.getPostExpPauseMean() + "" + strReturn); jcOut.write("" + rmData.getPostExpPauseStdDev() + "" + strReturn); jcOut.write("" + rmData.getInspDutyTimeMean() + "" + strReturn); jcOut.write("" + rmData.getInspDutyTimeStdDev() + "" + strReturn); jcOut.write("" + rmData.getRespRateMean() + "" + strReturn); jcOut.write("" + rmData.getRespRateStdDev() + "" + strReturn); jcOut.write("" + rmData.getComment() + "" + strReturn); jcOut.write("" + rmData.getIsValid() + "" + strReturn); jcOut.write("" + rmData.getNumBreaths() + "" + strReturn); jcOut.write("" + rmData.getShortestBreath() + "" + strReturn); jcOut.write("" + rmData.getLongestBreath() + "" + strReturn); jcTempList = new ArrayList(); jcTempList = rmData.getPeakList(); //have to output the valid peaks differently jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcTempList = new ArrayList(); jcTempList = rmData.getTroughList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcTempList = new ArrayList(); jcTempList = rmData.getPeakPauseList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcTempList = new ArrayList(); jcTempList = rmData.getTroughPauseList(); jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcOut.write("" + strReturn); } jcOut.write(strReturn); if( chkHRV.isSelected() == true ) { //write out HRV & RSA data jcOut.write("" + strReturn); jcOut.write("" + rmHeartData.getNumRPeaks() + "" + strReturn); jcOut.write("" + rmHeartData.getShortestBeat() + "" + strReturn); jcOut.write("" + rmHeartData.getLongestBeat() + "" + strReturn); jcOut.write("" + rmHeartData.getHeartRateMean() + "" + strReturn); jcOut.write("" + rmHeartData.getHeartRateStdDev() + "" + strReturn); jcOut.write("" + rmHeartData.getRRMean() + "" + strReturn); jcOut.write("" + rmHeartData.getRRStdDev() + "" + strReturn); jcOut.write("" + rmHeartData.getComment() + "" + strReturn); jcOut.write("" + rmHeartData.getIsValid() + "" + strReturn); jcOut.write("" + rmHeartData.getRSAMean() + "" + strReturn); jcOut.write("" + rmHeartData.getRSAStdDev() + "" + strReturn); jcOut.write("" + rmHeartData.getRSAMin() + "" + strReturn); jcOut.write("" + rmHeartData.getRSAMax() + "" + strReturn); jcOut.write("" + rmHeartData.getRSACount() + "" + strReturn); jcTempList = new ArrayList(); jcTempList = rmHeartData.getPeakList(); //have to output the valid peaks differently jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcTempList = new ArrayList(); jcTempList = rmHeartData.getRSAList(); //RSA for each breath jcIterator = jcTempList.iterator(); while (jcIterator.hasNext()) { intTemp = ((Integer)jcIterator.next()).intValue(); strTemp = Integer.toString(intTemp); jcOut.write("" + strTemp + "" + strReturn); } jcOut.write("" + strReturn); } jcOut.write(""); //end record & xml file jcOut.close(); //all done with file }catch( java.io.IOException e ) { e.printStackTrace(); } } //end xml-writing if statement try { this.setClosed(true); } //close the form catch(java.beans.PropertyVetoException e) { e.printStackTrace(); } }//GEN-LAST:event_cmdSaveActionPerformed private void cboSubjectItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboSubjectItemStateChanged //call sub to fill up the list of sessions for this subject if ( (String)cboSubject.getSelectedItem() != "" ) { //only want to do this if clicked, not if loading if ( evt.getStateChange() == ItemEvent.SELECTED ) { GetSessions(); } } }//GEN-LAST:event_cboSubjectItemStateChanged private void GetSessions() { //show the sessions in the list box for the current subject String strTemp = ""; String strDate = ""; String strType = ""; int intID = 0; String strExperimenter = ""; strTemp = (String)cboSubject.getSelectedItem(); //get the subject to parse out the parts if ( strTemp.equals("") == true) { JOptionPane.showMessageDialog(null, "You must select a subject before selecting a session.", "Selection Error", JOptionPane.ERROR_MESSAGE); return; } strSubjectID = strTemp.substring(0, strTemp.indexOf(":")); //ID is always the first part before the : strTemp = "SELECT sessionID, expDate, experimenter, expType FROM sessionData WHERE subID = \"" + strSubjectID + "\" ORDER BY expDate"; try { ResultSet rssSubjects = stmSQL.executeQuery(strTemp); //make the resultset on the sql statement while( rssSubjects.next() ) { //get the data out of the database & put into cboSession intID = rssSubjects.getInt("sessionID"); strType = rssSubjects.getString("expType"); strDate = rssSubjects.getString("expDate"); strExperimenter = rssSubjects.getString("experimenter"); cboSession.addItem("" + intID + ": " + strDate + ", " + strType + " (" + strExperimenter + ")"); } } catch(java.sql.SQLException e) { e.printStackTrace(); } } private void chkDatabaseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkDatabaseActionPerformed //fill combo with list of subjects if box is checked //call sub to put subject names in combo box so can pick one if (chkDatabase.isSelected() == true) { FillCombos(); } }//GEN-LAST:event_chkDatabaseActionPerformed private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed }//GEN-LAST:event_jButton1ActionPerformed private void FillCombos() { //fills cboSubject from the database String strNames = ""; String strTemp = ""; cboSubject.removeAllItems(); //clear in case ran previously try { stmSQL = conData.createStatement(); //stmSQL is global - have to get it ready ResultSet rssSubjects = stmSQL.executeQuery("SELECT subID, PPG, firstName, middleInitial, lastName FROM subject ORDER BY lastName, PPG"); cboSubject.addItem(""); //on top while(rssSubjects.next()) { //fill up cboSubject w/subject names & PPG numbers strTemp = rssSubjects.getString("PPG"); if ( strTemp.equals("") == false ) { strNames = rssSubjects.getInt("subID") + ": " + strTemp; } else { strNames = rssSubjects.getInt("subID") + ": " + rssSubjects.getString("lastName") + ", " + rssSubjects.getString("firstName") + " " + rssSubjects.getString("middleInitial") + "."; } cboSubject.addItem(strNames); } } catch(java.sql.SQLException e) { e.printStackTrace(); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox cboSession; private javax.swing.JComboBox cboSubject; private javax.swing.JCheckBox chkDatabase; private javax.swing.JCheckBox chkHRV; private javax.swing.JCheckBox chkRespiration; private javax.swing.JCheckBox chkXML; private javax.swing.JButton cmdCancel; private javax.swing.JButton cmdSave; private javax.swing.JButton cmdSelectFile; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel lblClipID; private javax.swing.JLabel lblClipInfo; private javax.swing.JLabel lblDataComment; private javax.swing.JLabel lblLong; private javax.swing.JLabel lblSavePath; private javax.swing.JLabel lblSession; private javax.swing.JLabel lblSubject; private javax.swing.JLabel lblWhatToSave; private javax.swing.JTextField txtClipID; private javax.swing.JTextArea txtDataComment; private javax.swing.JTextField txtPath; // End of variables declaration//GEN-END:variables }