protected void runScript(String[] cmd, JTextArea txaMsg) { String strg = ""; if (cmd == null) return; Process prcs = null; try { Messages.postDebug("Running script: " + cmd[2]); Runtime rt = Runtime.getRuntime(); prcs = rt.exec(cmd); if (prcs == null) return; InputStream istrm = prcs.getInputStream(); if (istrm == null) return; BufferedReader bfr = new BufferedReader(new InputStreamReader(istrm)); while ((strg = bfr.readLine()) != null) { // System.out.println(strg); strg = strg.trim(); // Messages.postDebug(strg); strg = strg.toLowerCase(); if (txaMsg != null) { txaMsg.append(strg); txaMsg.append("\n"); } } } catch (Exception e) { // e.printStackTrace(); Messages.writeStackTrace(e); Messages.postDebug(e.toString()); } finally { // It is my understanding that these streams are left // open sometimes depending on the garbage collector. // So, close them. try { if (prcs != null) { OutputStream os = prcs.getOutputStream(); if (os != null) os.close(); InputStream is = prcs.getInputStream(); if (is != null) is.close(); is = prcs.getErrorStream(); if (is != null) is.close(); } } catch (Exception ex) { Messages.writeStackTrace(ex); } } }
protected void buildPanel(String strPath) { BufferedReader reader = WFileUtil.openReadFile(strPath); String strLine; if (reader == null) return; try { while ((strLine = reader.readLine()) != null) { if (strLine.startsWith("#") || strLine.startsWith("%") || strLine.startsWith("@")) continue; StringTokenizer sTokLine = new StringTokenizer(strLine, ":"); // first token is the label e.g. Password Length if (sTokLine.hasMoreTokens()) { createLabel(sTokLine.nextToken(), this); } // second token is the value String strValue = sTokLine.hasMoreTokens() ? sTokLine.nextToken() : ""; if (strValue.equalsIgnoreCase("yes") || strValue.equalsIgnoreCase("no")) createChkBox(strValue, this); else createTxf(strValue, this); } } catch (Exception e) { Messages.writeStackTrace(e); // e.printStackTrace(); Messages.postDebug(e.toString()); } }
/** Displays the labels and the values for the panel. */ protected void displayPnlFields(HashMap hmPnl) { if (hmPnl == null || hmPnl.isEmpty()) return; Iterator keySetItr = hmPnl.keySet().iterator(); String strLabel = ""; String strValue = ""; // if the file is empty, then create an empty set of textfields. if (hmPnl == null || hmPnl.isEmpty()) { displayNewTxf("", ""); return; } Container container = getParent(); if (container != null) container.setVisible(false); try { // Get each set of label and value, and display them. while (keySetItr.hasNext()) { strLabel = (String) keySetItr.next(); strValue = (String) hmPnl.get(strLabel); displayNewTxf(strLabel, strValue); } if (container != null) container.setVisible(true); revalidate(); repaint(); } catch (Exception e) { Messages.writeStackTrace(e); // e.printStackTrace(); Messages.postDebug(e.toString()); } }
protected void writeAuditTrail(String strPath, String strUser, StringBuffer sbValues) { BufferedReader reader = WFileUtil.openReadFile(strPath); String strLine; ArrayList aListData = WUtil.strToAList(sbValues.toString(), false, "\n"); StringBuffer sbData = sbValues; String strPnl = (this instanceof DisplayTemplate) ? "Data Template " : "Data Dir "; if (reader == null) { Messages.postDebug("Error opening file " + strPath); return; } try { while ((strLine = reader.readLine()) != null) { // if the line in the file is not in the arraylist, // then that line has been deleted if (!aListData.contains(strLine)) WUserUtil.writeAuditTrail(new Date(), strUser, "Deleted " + strPnl + strLine); // remove the lines that are also in the file or those which // have been deleted. aListData.remove(strLine); } // Traverse through the remaining new lines in the arraylist, // and write it to the audit trail for (int i = 0; i < aListData.size(); i++) { strLine = (String) aListData.get(i); WUserUtil.writeAuditTrail(new Date(), strUser, "Added " + strPnl + strLine); } reader.close(); } catch (Exception e) { e.printStackTrace(); } }
private void setCaretValue(String s) { try { int i = Integer.parseInt(s); setCaretValue(i); } catch (NumberFormatException e) { Messages.writeStackTrace(e); // System.out.println("invalid caret position "+caretValue); } }
public void buildConfig() { BufferedReader in = WFileUtil.openReadFile(m_strPath); String strLine = null; if (in == null) { Messages.postError("Error opening file " + m_strPath); return; } try { m_pnlDisplay.removeAll(); m_pnlDisplay.setLayout(new WGridLayout(0, 2)); m_aListComp.clear(); while ((strLine = in.readLine()) != null) { if (strLine.startsWith("#") || strLine.startsWith("%") || strLine.startsWith("@")) continue; StringTokenizer sTokLine = new StringTokenizer(strLine, File.pathSeparator); createJComps(sTokLine); } setVisible(true); } catch (Exception e) { // e.printStackTrace(); Messages.writeStackTrace(e); } }
/** Update state from Infostat. */ public void updateStatus(String msg) { // Messages.postDebug("VLcStatusChart.updateStatus(" + msg + ")");/*CMP*/ if (msg == null) { return; } StringTokenizer tok = new StringTokenizer(msg); if (tok.hasMoreTokens()) { String key = tok.nextToken(); String val = ""; if (tok.hasMoreTokens()) { val = tok.nextToken("").trim(); // Get remainder of msg } if (key.equals(statkey)) { if (val != null && !val.equals("-")) { valstr = val; setState(state); } /*System.out.println("Chart: statkey=" + statkey + ", val=" + val);/*CMP*/ } if (key.equals(statpar)) { if (val != null && !val.equals("-")) { /*System.out.println("Chart statpar=" + statpar + ", value=" + value);/*CMP*/ setState(state); } } if (key.equals(statset)) { if (val != null && !val.equals("-")) { setval = val; try { String num = val.substring(0, val.indexOf(' ')); setStatusValue(Double.parseDouble(num)); } catch (NumberFormatException nfe) { Messages.postDebug("VLcStatusChart.updateStatus(): " + "Non-numeric value: " + msg); } catch (StringIndexOutOfBoundsException sioobe) { setStatusValue(0); // No value found } /*System.out.println("Chart statset=" + statset + ", setval=" + setval);/*CMP*/ setState(state); } } } repaint(); }
/** * Save the data to the file. Read the data from the file, and copy everything to the * stringbuffer. The lines in the file are of the form: * auditDir:system:/vnmr/part11/auditTrails:system file:standard:text:yes Based on these formats, * get the value of either the directory or the checkbox from the corresponding components, and * replace that value in the stringbuffer. */ protected void saveData() { BufferedReader reader = WFileUtil.openReadFile(m_strPath); String strLine = null; StringBuffer sbData = new StringBuffer(); if (reader == null) return; int nLineInd = 0; try { while ((strLine = reader.readLine()) != null) { // if the line starts with a comment from sccs, add '#' to it, // to make it a comment if (strLine.startsWith("%") || strLine.startsWith("@")) strLine = "# " + strLine; if (strLine.startsWith("#")) { sbData.append(strLine + "\n"); continue; } StringTokenizer sTok = new StringTokenizer(strLine, File.pathSeparator); boolean bFile = false; boolean bLineEnd = false; boolean bDir = false; for (int i = 0; sTok.hasMoreTokens(); i++) { String strValue = sTok.nextToken(); if (i == 0) { bFile = strValue.equalsIgnoreCase("file") ? true : false; bDir = false; if (strValue.equalsIgnoreCase("dir")) bDir = true; } else { // Case => file:standard:procpar:yes // skip over 'standard', 'procpar', // and get the value 'yes' or 'no' from the checkbox if (bFile) { if (i == 3) { String strNewValue = getValue(nLineInd); if (strNewValue != null) strValue = strNewValue; bLineEnd = true; } else bLineEnd = false; } else if (bDir) { bLineEnd = false; if (i == 3) bLineEnd = true; } // Case => part11Dir:/vnmr/part11/data 0r // Case => dataType:FDA // skip over 'part11Dir' // and get the value of the directory from the textfield, // or from the combobox else { if (i == 1) { String strNewValue = getValue(nLineInd); if (strNewValue != null) strValue = strNewValue; bLineEnd = true; } else bLineEnd = false; } } // copy the value to the stringbuffer sbData.append(strValue); if (!bLineEnd) sbData.append(File.pathSeparator); } nLineInd++; sbData.append("\n"); } // write the data to the file reader.close(); BufferedWriter writer = WFileUtil.openWriteFile(m_strPath); WFileUtil.writeAndClose(writer, sbData); m_objTimer = new javax.swing.Timer( 200, new ActionListener() { public void actionPerformed(ActionEvent e) { VItemAreaIF.firePropertyChng(Global.PART11_CONFIG_FILE, "all", ""); m_objTimer.stop(); } }); m_objTimer.start(); } catch (Exception e) { Messages.writeStackTrace(e); // e.printStackTrace(); Messages.postDebug(e.toString()); } }
/** Reads the file, and sets the label and the values in the hashmap. */ protected void setHM(String strPath, HashMap hmPnl) { BufferedReader reader = WFileUtil.openReadFile(strPath); boolean bFileEmpty = true; boolean bPart11Pnl = isPart11Pnl(); boolean bDefaultFile = isDefaultFile(); // if the file is empty, then create an empty set of textfields. if (reader == null) { // displayNewTxf("",""); return; } String strLine = null; StringTokenizer strTok; try { // read the file, and create a new set of textfields, // with the values from the file. while ((strLine = reader.readLine()) != null) { String strLabel = ""; String strValue = ""; bFileEmpty = false; if (strLine.startsWith("#") || strLine.startsWith("@") || strLine.startsWith("%") || strLine.startsWith("\"@")) continue; if (strLine.startsWith("\"")) strTok = new StringTokenizer(strLine, "\""); else strTok = new StringTokenizer(strLine, File.pathSeparator + ",\n"); if (!strTok.hasMoreTokens()) continue; strLabel = strTok.nextToken(); // the format for the part11 Default file is a little different // only parse out the part11Dir, and don't display other defaults if (bPart11Pnl && bDefaultFile) { if (!strLabel.equalsIgnoreCase("part11Dir")) continue; } if (strTok.hasMoreTokens()) { while (strTok.hasMoreTokens()) { strValue += strTok.nextToken(); if (strTok.hasMoreTokens()) strValue += " "; } } // append "/data/$name" to part11Dir if (bPart11Pnl && bDefaultFile && strLabel.equalsIgnoreCase("part11Dir")) { StringBuffer sbDir = new StringBuffer(strValue); if (sbDir.lastIndexOf(File.separator) < sbDir.length() - 1) sbDir.append(File.separator); sbDir.append("data" + File.separator + "$"); sbDir.append(WGlobal.NAME); strValue = sbDir.toString(); } // displayNewTxf(strLabel, strValue); if (strLabel != null && strLabel.trim().length() > 0) hmPnl.put(strLabel, strValue); } reader.close(); } catch (Exception e) { Messages.writeStackTrace(e); // e.printStackTrace(); Messages.postDebug(e.toString()); } }
/** * Write the file by writing the values from the labels, and the values list. * * @param strFile the file to be written. * @param aListLabels arraylist of texfields of labels. * @param aListValues arraylist of texfields of values. */ protected void writeFile( String strUser, String strFile, ArrayList aListLabels, ArrayList aListValues) { String strPath = FileUtil.openPath(strFile); String strLabel = ""; String strValue = ""; StringBuffer sbValues = new StringBuffer(); JTextField txfLabel = null; JTextField txfValue = null; boolean bNewFile = false; int nFDAMode = Util.getPart11Mode(); // if it's the part11 pnl and the mode is nonFDA, // then don't write the file for this panel // the other way is not true. if (this instanceof DisplayParentDirectory) { if ((isPart11Pnl() && nFDAMode == Util.NONFDA)) { return; } } if (strPath == null) { strPath = FileUtil.savePath(strFile); bNewFile = true; } if (strPath == null || aListLabels == null) return; if (aListValues == null) aListValues = new ArrayList(); // Get the list of the textfields for values and labels. int nLblSize = aListLabels.size(); int nValueSize = aListValues.size(); ArrayList<String> labelList = new ArrayList<String>(); // Get the value from each textfield, and add it to the buffer. for (int i = 0; i < nLblSize; i++) { txfLabel = (JTextField) aListLabels.get(i); txfValue = (i < nValueSize) ? (JTextField) aListValues.get(i) : null; strLabel = (txfLabel != null) ? txfLabel.getText() : null; strValue = (txfValue != null) ? txfValue.getText() : ""; // We need to be sure they don't have two data directories with // the same labels. Save the label list if we are writing to // the "data" file. if (strFile.indexOf("data") != -1) { if (labelList.contains(strLabel)) { Messages.postError( "The Data Directory specifications " + "must not have duplicate Label names. " + "The Label \"" + strLabel + "\" is duplicated. " + "Skipping the second instance. Please " + "specify a new Label."); continue; } else labelList.add(strLabel); } if (strLabel == null || strLabel.trim().length() <= 0 || strValue.equals(INFOSTR)) continue; // for user template tab, don't need to parse the value if (!(this instanceof DisplayTemplate)) strValue = getValue(strUser, strValue); strLabel = strLabel.trim(); if (strValue != null) strValue = strValue.trim(); // sbValues.append("\""); sbValues.append(strLabel); // sbValues.append("\" "); sbValues.append(File.pathSeparator); sbValues.append(strValue); sbValues.append("\n"); } if (Util.isPart11Sys()) writeAuditTrail(strPath, strUser, sbValues); // write the data to the file. BufferedWriter writer = WFileUtil.openWriteFile(strPath); WFileUtil.writeAndClose(writer, sbValues); // if it's a template file, then make it writable for everyone. if (bNewFile) { String strCmd = "chmod 755 "; if (this instanceof DisplayTemplate) strCmd = "chmod 777 "; if (Util.iswindows()) strPath = UtilB.windowsPathToUnix(strPath); String[] cmd = {WGlobal.SHTOOLCMD, WGlobal.SHTOOLOPTION, strCmd + strPath}; WUtil.runScriptInThread(cmd); } }