import java.io.*; import java.beans.*; import java.net.URL; import java.text.*; import java.awt.*; import java.awt.Window; import java.awt.event.*; import javax.swing.*; import javax.swing.JOptionPane; import javax.swing.border.*; import javax.swing.plaf.*; import javax.swing.event.*; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.JScrollPane; import javax.swing.DefaultListModel; import java.util.*; import java.util.List; import java.util.Vector; import java.util.ResourceBundle; import sun.net.ftp.FtpClient; public class NCRh23c implements ListSelectionListener { JFrame container; JList LnumJList; JTextField PnumField, LnumField, SnumField, ProgField, ftp_Field; JButton ButQry, ButRQry, ExitBut, ResBut, OpenBut, GetBut, RInBut, RStatBut, RQuBut; JScrollPane PtextScroller, LtextScroller, StextScroller; ListSelectionModel listSelectionModel; DefaultListModel LlistModel; String Fstg, Pnum, Lnum, Snum, query, ftp_stg, ftp_Fstg, OutFileNm, dirStg, dirStg2; String LnumSnm, TmpFileNm, getDataNm, dataOutStg, DOSubNm, DataOutSubStg, delStg, SubStg; String LotStg, PartStg, dirStg12, paramStg, statStg, tfulStg, codeStg, sName, finFlStg; String lfulStg, tmpStg, cnStg1, fileStg; Vector ncrV, fulV; String[] sn_array = new String[3]; String[] cam_array = new String[4]; String[] fulText, finText, fulNcr, lfText, lotReadStg; int trackWord, cntr, scntr, nctr, rcntr, h, i, j, k, mtPos = 0; long tBefCon1, tBefCon2, tBefCon3, tBefCon4, tAftCon1, tAftCon2, tAftCon3, tAftCon4; public static void main(String[] arg){ new NCRh23c(); } public NCRh23c() { WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { DelOut(); System.exit(0); } }; container=new JFrame("NCR Query"); container.addWindowListener(l); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize=new Dimension((int)(screenSize.width/2),(int)(screenSize.height/2)); int x=(int)(frameSize.width/2); int y=(int)(frameSize.height/2); container.setBounds(x,y,frameSize.width,frameSize.height); container.getContentPane().setLayout( new BorderLayout() ); JPanel jb_out = new JPanel(); jb_out.setLayout(new BorderLayout()); jb_out.add(buildJBallPanel(), BorderLayout.NORTH); JPanel buttonPanel = new JPanel(); buttonPanel.setLayout ( new FlowLayout(FlowLayout.CENTER) ); ExitBut = new JButton("RUN"); ExitBut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { svr_cyc(); }}); buttonPanel.add(ExitBut); container.getContentPane().add(jb_out, BorderLayout.NORTH); container.getContentPane().add(buttonPanel, BorderLayout.SOUTH); container.pack(); container.setVisible(true); } public JPanel buildJBallPanel() { JPanel JBallGrid = new JPanel(); GridBagLayout gbc0 = new GridBagLayout(); JBallGrid.setLayout(gbc0); // Part, Lot & Serial Number Panels JPanel JBtaPanel = new JPanel(); GridBagLayout gbc2 = new GridBagLayout(); JBtaPanel.setLayout(gbc2); JBtaPanel.setBorder( new TitledBorder("INPUT") ); // Lot Number List/Panel JPanel LnumJl_StgPanel = new JPanel(); LnumJl_StgPanel.setLayout(new BorderLayout()); JLabel LnumJl_StgLabel = new JLabel (" Lot Number: "); LnumJl_StgPanel.add(LnumJl_StgLabel, BorderLayout.NORTH); LlistModel = new DefaultListModel(); LnumJList = new JList(LlistModel); LnumJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //LnumJList.setSelectedIndex(0); LnumJList.addListSelectionListener(this); LtextScroller = new JScrollPane( LnumJList, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); LtextScroller.setPreferredSize(new Dimension(80, 360)); LnumJl_StgPanel.add(LtextScroller); LnumField = new JTextField(35); LnumJl_StgPanel.add(LnumField, BorderLayout.SOUTH); JBtaPanel.add(LnumJl_StgPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0)); // All Panel Grid JBallGrid.add(JBtaPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0 ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0)); return JBallGrid; } public void svr_cyc() { fulV = new Vector(); if ( LnumJList.getModel().getSize() > 0 ) { LnumJList.setModel(LlistModel = new DefaultListModel()); LnumField.setText(""); } sn_array[0] = "blacmm1.heico-dc.com"; sn_array[1] = "meatii.heico-dc.com"; sn_array[2] = "heisco1.heico-dc.com"; //sn_array[0] = "www.datajett.com"; for (i = 0; i < sn_array.length; i++) { DirListGet( sn_array[i] ); } String[] serStgArr = new String[ fulV.size() ]; fulV.copyInto( serStgArr ); String[] serStgArr1 = sortStrings( serStgArr ); String[] serStgArrS = reverseStrings( serStgArr1 ); for (int s = 0; s < serStgArrS.length; s++) { LlistModel.addElement(serStgArrS[s]); } } public void DirListGet( String sn_array_in ) { //String uNm = "datajett"; //String pWd = "rbjllj69"; String uNm = "transfer"; String pWd = "transfer"; String jbStg = "/JB_FILES/"; //String path1 = "/public_html/HC"; String path1 = "/u/mm4"; String cdP = path1 + jbStg; //System.out.println("cdP: " + cdP); tBefCon2 = System.currentTimeMillis(); DirGet( sn_array_in, uNm, pWd, cdP ); tAftCon2 = System.currentTimeMillis(); System.out.println( "1) " + sn_array_in + " Connect time(ms): " + java.lang.Long.toString(tAftCon2-tBefCon2) + "\n" ); } public void DirGet( String sName, String uName, String pWord, String cdPath ) { try { FtpWr ftpt = new FtpWr(); String[] fulTextR = null; String[] fulTextR2 = null; ftpt.openServer(sName); if (ftpt.serverIsOpen()) { //System.out.println("Connected to " + sName); try { ftpt.login(uName, pWord); ftpt.cdDir(cdPath); fulTextR=ftpt.listRawStg(); for (int i = 0; i < fulTextR.length; i++) { int spPos = fulTextR[i].lastIndexOf(" "); dirStg = fulTextR[i].substring(spPos+1,fulTextR[i].length()); int dotPos = dirStg.indexOf("."); int dPos = fulTextR[i].indexOf("d"); int revPos = dirStg.indexOf("rev"); int tmpPos = dirStg.indexOf("TMP"); if ( dotPos < 0 && dPos == 0 && revPos < 0 && tmpPos < 0 ) { String tmpDirStg = cdPath+"/"+dirStg; //System.out.println(tmpDirStg); ftpt.cdDir(tmpDirStg); fulTextR2=ftpt.listRawStg(); for (int i2 = 0; i2 < fulTextR2.length; i2++) { int spPos2 = fulTextR2[i2].lastIndexOf(" "); //System.out.println("\nfulTextR2[i2]: " + fulTextR2[i2]); dirStg2 = fulTextR2[i2].substring(spPos2+1,fulTextR2[i2].length()); //System.out.println("View: dirStg2: " + dirStg2); int dotPos2 = dirStg2.indexOf("."); int dPos2 = fulTextR2[i2].indexOf("d"); int revPos2 = dirStg2.indexOf("rev"); int tmpPos2 = dirStg.indexOf("TMP"); if ( dotPos2 < 0 && dPos2 == 0 && revPos2 < 0 && tmpPos2 < 0 ) { String dirStg3 = dirStg2 + ":@:" + dirStg + ":@:" + sName; //System.out.println("Accepted: dirStg3: " + dirStg3); fulV.addElement( dirStg3 ); //if (!alreadyInLList(dirStg2)) { LlistModel.addElement(dirStg3); } } } } } } catch (Exception ftpe) { System.out.println("Exception: "); ftpe.printStackTrace(); } finally { ftpt.closeServer(); } } else { System.out.println("Unable to connect to: " + sName); } } catch(Exception e) { System.out.println("Exception: " ); e.printStackTrace(); } } public void valueChanged(ListSelectionEvent e) { if (e.getValueIsAdjusting() == false) { if (LnumJList.getSelectedIndex() != -1) { LnumSnm = LnumJList.getSelectedValue().toString(); //System.out.println(LnumSnm); LnumField.setText(""); LnumField.setText(LnumSnm); LnumJList.clearSelection(); tBefCon1 = System.currentTimeMillis(); //System.out.println("Ssize: " + LnumJList.getModel().getSize()); DirGetFeed( LnumSnm ); tAftCon1 = System.currentTimeMillis(); System.out.println("\n2) " + LnumSnm + " Connect time(ms): " + java.lang.Long.toString(tAftCon1-tBefCon1) ); } } } public void DirGetFeed( String LnumSnm2 ) { int Pos1 = LnumSnm2.lastIndexOf(":@:"); dirStg12 = LnumSnm2.substring(0,Pos1); Fstg = LnumSnm2.substring(Pos1+3,LnumSnm2.length()); int Pos2 = dirStg12.lastIndexOf(":@:"); LotStg = dirStg12.substring(0,Pos2); PartStg = dirStg12.substring(Pos2+3,dirStg12.length()); //String uNm = "datajett"; //String pWd = "rbjllj69"; String uNm = "transfer"; String pWd = "transfer"; String jbStg = "/JB_FILES/"; //String path1 = "/public_html/HC"; String path1 = "/u/mm4"; String cdP = path1 + jbStg + PartStg + "/" + LotStg; System.out.println("cdP: " + cdP); LnumQuery( Fstg, uNm, pWd, cdP ); } public void LnumQuery( String sName, String uName, String pWord, String cdPath ) { try { String outInPut = "ftp://" + uName + ":" + pWord + "@" + sName + cdPath + "/MRB.TXT"; System.out.println("Scanning File: " + outInPut); String surl = outInPut; URL url = new URL(surl); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); Vector lines = new Vector(); String aLine = reader.readLine(); while( aLine != null ) { lines.addElement( aLine ); aLine = reader.readLine(); } fulText = new String[ lines.size() ]; lines.copyInto( fulText ); reader.close(); } catch (IOException exc2) { System.out.println("Exception: "); exc2.printStackTrace(); } stgRead(); getDataNm = getDataNm(); SaveSelected( getDataNm ); RunCmdInt( getDataNm ); } public void stgRead() { Vector entV = new Vector(); int tcntr = cntr; int scntr = 0; //paramStg = "SECT CN PARAM VALUE"; statStg = "STATISTICAL PROCESS CONTROL"; // "SECTFF 133 LEA -0.2400" // "SECTPP 148 N_ANGLE -0.0200" for (i = 2; i < fulText.length; i++) { if ( fulText[i].indexOf(statStg) < 0 ) { String[] varArr = creSArray( fulText[i], " " ); //for (h = 0; h < trackWord+1; h++) { System.out.println("varArr[h]: " + varArr[h]); } //System.out.println("%%%fulText[i]: " + fulText[i]); codeStg = "AIRFOIL"; if ( varArr[2].compareTo("N_ANGLE") == 0 || varArr[2].compareTo("LEA") == 0 || varArr[2].compareTo("TEA") == 0 ) { codeStg = "ROOT"; } String secfStg = varArr[0].substring(4,varArr[0].length()); // Found "FF" tfulStg = varArr[1]+",0,1,"+codeStg+","+secfStg+"|"+varArr[2]+"|"+varArr[3]; //System.out.println("@@@tfulStg: " + tfulStg); entV.addElement( tfulStg ); } else { i = fulText.length; } } tBefCon4 = System.currentTimeMillis(); String[] ncrLocal = rtnNcrStg(); tAftCon4 = System.currentTimeMillis(); System.out.println("\n4) Cameleon Connect time(secs): " + java.lang.Long.toString(tAftCon4-tBefCon4) + "\n" ); for (int t = 0; t < ncrLocal.length; t++) { //System.out.println("XXX-ncrLocal[t]: " + ncrLocal[t] + " & t: " + t ); entV.addElement( ncrLocal[t] ); } finText = new String[ entV.size() ]; //for (h = 0; h < finText.length; h++) {finText[h] = "";} entV.copyInto( finText ); for (int s = 0; s < finText.length; s++) { //System.out.println("F@@@-finText[s]: " + finText[s] + " & s: " + s ); } } public String[] rtnNcrStg() { ncrV = new Vector(); fulNcr = null; cam_array[0] = "\\\\Chameleon-1\\PC-DMIS\\LOT_DATA"; cam_array[1] = "\\\\Chameleon-2\\PC-DMIS\\LOT_DATA"; cam_array[2] = "\\\\Chameleon-3\\PC-DMIS\\LOT_DATA"; cam_array[3] = "\\\\Chameleon-4\\PC-DMIS\\LOT_DATA"; //cam_array[0] = "D:\\Dev\\HTML\\datajett.com\\public_html\\HC\\NCR"; for (i = 0; i < cam_array.length; i++) { tBefCon3 = System.currentTimeMillis(); String tmpCamStg = cam_array[i]; //System.out.println( "tmpCamStg: " + tmpCamStg ); File aFile = new File(cam_array[i]); if(!aFile.exists()) System.out.println("Directory: " + tmpCamStg + " does not exist"); else if(!aFile.isDirectory()) System.out.println( tmpCamStg + " is not a directory" ); else{ PrintDir(0, aFile); System.out.println( " Completed: " + tmpCamStg); //System.out.println( "Complete......"); } tAftCon3 = System.currentTimeMillis(); System.out.println("\n3) " + tmpCamStg + " Connect time(ms): " + java.lang.Long.toString(tAftCon3-tBefCon3) ); } fulNcr = new String[ ncrV.size() ]; //for (h = 0; h < finText.length; h++) {finText[h] = "";} ncrV.copyInto( fulNcr ); return fulNcr; } public void PrintDir(int indent, File aFile){ File[] theFiles = aFile.listFiles(); Vector vec = new Vector(); System.out.println("LotStg: " + LotStg ); for(int x=0; x 0 ) { System.out.println("%%%[IS1] LotStg: " + LotStg + " == fileStg: " + fileStg ); for(int i=1; i<=indent; i++) { System.out.println(" *File - Add: " + fileStg); int spPos = fileStg.lastIndexOf("/"); finFlStg = fileStg.substring(spPos+1,fileStg.length()); int lotPos = finFlStg.lastIndexOf(LotStg); int prtPos = finFlStg.lastIndexOf(PartStg); if ( lotPos >= 0 && prtPos >= 0 ) { //ncrV.addElement( fileStg ); String[] LotFileStg = lotFlRead( fileStg ); for (int s = 0; s < LotFileStg.length; s++) { System.out.println(" ***LotFileStg[s]: " + LotFileStg[s] + " & s: " + s ); ncrV.addElement( LotFileStg[s] ); } } } } } int count = 0; while(count != vec.size()){ PrintDir(indent+1, (File)vec.elementAt(count)); count++; } } public String[] lotFlRead( String filename ) { try { FileInputStream fis = new FileInputStream(filename); InputStreamReader isr = new InputStreamReader(fis); LineNumberReader lnr = new LineNumberReader(isr); Vector flines = new Vector(); String afLine = lnr.readLine(); while( afLine != null ) { flines.addElement( afLine ); afLine = lnr.readLine(); } lfText = new String[ flines.size() ]; flines.copyInto( lfText ); isr.close(); lotReadStg = QueryRead( lfText ); } catch (IOException exc2) { System.out.println("Exception: "); exc2.printStackTrace(); } return lotReadStg; } public String[] QueryRead( String[] fulText ) { Vector lotV = new Vector(); for (i = 0; i < fulText.length; i++) { int cnPos, dimPos, snPos = 0; cnPos = fulText[i].indexOf("C/N"); snPos = fulText[i].indexOf("S/N"); dimPos = fulText[i].indexOf("DIM"); //System.out.println( "cnPos: " + cnPos + " & dimPos: " + dimPos ); if ( cnPos > -1 || snPos > -1 ) { int spPos = fulText[i].lastIndexOf(" "); cnStg1 = fulText[i].substring(spPos+1,fulText[i].length()); // Found C/N } else if ( dimPos > -1 ) { tmpStg = fulText[i+2]; //System.out.println( "tmpStg: " + tmpStg ); String[] varArr = creSArray( tmpStg, " " ); for (int h = 0; h < trackWord+1; h++) { //System.out.println("varArr[h]: " + varArr[h] + " & h: " + h ); } lfulStg = cnStg1+",0,1,Other,NOM="+varArr[4]+"|+TOL="+varArr[7]+"|-TOL="+varArr[10]+"|MEAS="+varArr[13]; //System.out.println("lfulStg: " + lfulStg); lotV.addElement( lfulStg ); i++;i++; } } String[] cnStgArr = new String[ lotV.size() ]; lotV.copyInto( cnStgArr ); for (int s = 0; s < cnStgArr.length; s++) { //System.out.println("C/N||S/N: cnStgArr[s]: " + cnStgArr[s] + " & s: " + s ); } return cnStgArr; } public String[] creSArray(String toArray, String splitChar) { String newArray[] = new String[toArray.length()]; String tmpWord = ""; trackWord=0; for(int i=0;i0) { tmpWord+=toArray.charAt(i); } else { newArray[trackWord] = tmpWord; trackWord++; tmpWord=""; } } int tmpPos = toArray.lastIndexOf(splitChar); newArray[trackWord] = toArray.substring(tmpPos+1, toArray.length()); return newArray; } public void RunCmdInt ( String getDataNm ) { String s = null; try { String wordpad = ("\"C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe\""); Process p = Runtime.getRuntime().exec("cmd /C " + wordpad + " " + getDataNm ); BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); while ((s = stdInput.readLine()) != null) { System.out.println( s ); } } catch (IOException e) { System.out.println("Exception: " ); e.printStackTrace(); System.exit(-1); } } public void SaveSelected( String getDataNm ) { try { PrintStream expfl = new PrintStream(new FileOutputStream(getDataNm)); for (j = 0; j < finText.length; j++) { //System.out.println("F2@@@-finText[j]: " + finText[j] ); if ( finText[j] != "" ) { expfl.println( finText[j] ); } } expfl.flush(); expfl.close(); } catch(java.io.IOException IOEx) { System.out.println("Cannot create " + getDataNm + " file."); } } protected boolean alreadyInLList(String name) { return LlistModel.contains(name); } public void DelOut() { String s2 = null; try { String delStg = ("\"del *_out.txt\""); Process p2 = Runtime.getRuntime().exec("cmd /C " + delStg ); BufferedReader stdInput2 = new BufferedReader(new InputStreamReader(p2.getInputStream())); BufferedReader stdError2 = new BufferedReader(new InputStreamReader(p2.getErrorStream())); while ((s2 = stdInput2.readLine()) != null) { System.out.println( s2 ); } } catch (IOException e9) { System.out.println("Exception: "); e9.printStackTrace(); System.exit(-1); } } public String[] sortStrings( String[] strings ) { for ( int i = 0; i < strings.length - 1; ++i ) { for ( int j = i + 1; j < strings.length; ++j ) { if ( strings[i].compareTo( strings[j] ) > 0 ) { String t = strings[i]; strings[i] = strings[j]; strings[j] = t; } } } return strings; } public String[] reverseStrings( String[] strings ) { String temp; int left = 0; int right = strings.length - 1; while (left < right) { temp = strings[left]; strings[left] = strings[right]; strings[right] = temp; right--; left++; } return strings; } public String getDataNm() { OutFileNm = LotStg + "." + PartStg + "." + sName + "_out.txt"; return OutFileNm; } public String getPnum() { Pnum = PnumField.getText(); return Pnum; } public String getLnum(){ Lnum = LnumField.getText(); return Lnum; } public String getSnum() { Snum = SnumField.getText(); return Snum; } public void CancelPressed() { System.exit(0); } } class FtpWr extends FtpClient { public boolean cdDir (String dirPath) throws IOException { issueCommand("CWD " + dirPath); return isValidResponse(); } public String[] listRawStg() throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(list())); Vector lines = new Vector(); String aLine = reader.readLine(); while( aLine != null ) { lines.addElement( aLine ); aLine = reader.readLine(); } String[] lineArray = new String[ lines.size() ]; lines.copyInto( lineArray ); return lineArray; } public boolean isValidResponse() { try { int respCode = Integer.parseInt(getResponseString().substring(0, 3)); return (respCode >= 200 && respCode < 300); } catch (Exception e) { return false; } } }