
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 JBout32 implements ListSelectionListener {
	JFrame container;
	JList PnumJList, LnumJList, SnumJList;
	JTextField PnumField, LnumField, SnumField, ProgField, ftp_Field;
	JButton ButQry, ButRQry, ButRef, ExitBut, ResBut, OpenBut, GetBut, RInBut, RStatBut, RQuBut;
	JScrollPane PtextScroller, LtextScroller, StextScroller;
	ListSelectionModel listSelectionModel;
	DefaultListModel PlistModel, LlistModel, SlistModel;

	String Fstg, Pnum, Lnum, Snum, query, ftp_stg, ftp_Fstg, OutFileNm, dirStg;
	String PnumSnm, LnumSnm, SnumSnm, outInPut, cdPath;
	String TmpFileNm, getDataNm, dataOutStg, DOSubNm, DataOutSubStg, delStg, SubStg;

	String[] fulText;
	String[] finText;
	int cntr, scntr, nctr, rcntr, h, i, j, k = 0;

	public static void main(String[] arg){
		new JBout32();
	}

	public JBout32() {
		WindowListener l = new WindowAdapter() {
			public void windowClosing(WindowEvent e) {System.exit(0);}
		};

		container=new JFrame("JetBlade 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) );

		ButRef = new JButton("Refresh");
		ButRef.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fieldCheck();
		}});
		buttonPanel.add(ButRef);

		//JPanel qryRPanel = new JPanel();
		ButRQry = new JButton("Query For Rejects");
		ButRQry.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fileRead();
				rejRead();
				getDataNm = getDataNm();
				SaveSelected( getDataNm );
				RunCmdInt( getDataNm );
		}});
		buttonPanel.add(ButRQry);

		ResBut = new JButton("Reset All");
		ResBut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setResetAll();
		}});
		buttonPanel.add(ResBut);

		ExitBut = new JButton("EXIT");
		ExitBut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				DelOut();
				CancelPressed();
		}});
		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);

		//		Input Grid

		JPanel JBinPanel = new JPanel();
		GridBagLayout gbc1 = new GridBagLayout();
		JBinPanel.setLayout(gbc1);
		JBinPanel.setBorder( new TitledBorder("INPUT") );

		//		FTP Panel

		JPanel ftp_Panel = new JPanel();
		JLabel ftp_Label = new JLabel (" FTP Location Selected : ");
		ftp_Field = new JTextField(18);
		ftp_Field.setEditable(false);
		ftp_Panel.add(ftp_Label);
		ftp_Panel.add(ftp_Field);

		JPanel jbchcPanel = new JPanel();
		JLabel jbchcLabel = new JLabel ("Select FTP Server: ");

		final int NUM = 5;
		jb_item[] jb_array = new jb_item[ NUM ];
		jb_array[0] = new jb_item(" JetBlade FTP Locations ", "" );
		jb_array[1] = new jb_item(" JetBlade Beeper - HEISCO1 ", "heisco1.heico-dc.com" );
		jb_array[2] = new jb_item(" JetBlade Chameleon - BLACMM1 ", "blacmm1.heico-dc.com" );
		jb_array[3] = new jb_item(" JetBlade Office - MEATII ", "meatii.heico-dc.com" );
		jb_array[4] = new jb_item(" DataJett.com - Test ", "www.datajett.com" );

		final JComboBox jbchc = new JComboBox( jb_array );

		jbchc.addItemListener(
			new ItemListener() {
				public void itemStateChanged( ItemEvent e ) {
					if( e.getStateChange() == ItemEvent.SELECTED ){
						setResetAll();
						ftp_Field.setText(""+((jb_item)(jbchc.getSelectedItem())).getStg() );
						DirGetFeed();
					}
				}
			}
		);

		jbchcPanel.add(jbchcLabel);
		jbchcPanel.add(jbchc);

		JBinPanel.add(ftp_Panel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));
		JBinPanel.add(jbchcPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));

		//		Part, Lot & Serial Number Panels

		JPanel JBtaPanel = new JPanel();
		GridBagLayout gbc2 = new GridBagLayout();
		JBtaPanel.setLayout(gbc2);
		JBtaPanel.setBorder( new TitledBorder("INPUT") );

		//		Part Number Panel (JLabel(2), JTextArea & JTextField)

		JPanel PnumJl_StgPanel = new JPanel();
		PnumJl_StgPanel.setLayout(new BorderLayout());

		JLabel PnumJl_StgLabel = new JLabel(" Part Number: ");
		PnumJl_StgPanel.add(PnumJl_StgLabel, BorderLayout.NORTH);

		PlistModel = new DefaultListModel();
		PnumJList = new JList(PlistModel);
		PnumJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		PnumJList.addListSelectionListener(this);

		PtextScroller = new JScrollPane( PnumJList,
			ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		PtextScroller.setPreferredSize(new Dimension(80, 160));
		PnumJl_StgPanel.add(PtextScroller);

		PnumField = new JTextField(14);
		PnumField.setEditable(false);
		PnumJl_StgPanel.add(PnumField, BorderLayout.SOUTH);

		//		Lot Number Panel (JLabel(2), JTextArea & JTextField)

		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.addListSelectionListener(this);

		LtextScroller = new JScrollPane( LnumJList,
			ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		LtextScroller.setPreferredSize(new Dimension(80, 160));
		LnumJl_StgPanel.add(LtextScroller);

		LnumField = new JTextField(14);
		LnumField.setEditable(false);
		LnumJl_StgPanel.add(LnumField, BorderLayout.SOUTH);

		//		Serial Number Panel (JLabel(2), JTextArea & JTextField)

		JPanel SnumJl_StgPanel = new JPanel();
		SnumJl_StgPanel.setLayout(new BorderLayout());

		JLabel SnumJl_StgLabel = new JLabel ("Serial Number: ");
		SnumJl_StgPanel.add(SnumJl_StgLabel, BorderLayout.NORTH);

		SlistModel = new DefaultListModel();
		SnumJList = new JList(SlistModel);
		SnumJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		SnumJList.addListSelectionListener(this);

		StextScroller = new JScrollPane( SnumJList,
			ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		StextScroller.setPreferredSize(new Dimension(80, 160));
		SnumJl_StgPanel.add(StextScroller);

		SnumField = new JTextField(10);
		SnumField.setEditable(false);
		SnumJl_StgPanel.add(SnumField, BorderLayout.SOUTH);

		JBtaPanel.add(PnumJl_StgPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));
		JBtaPanel.add(LnumJl_StgPanel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));
		JBtaPanel.add(SnumJl_StgPanel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));

		//		Status Grid

		JPanel JBoutPanel = new JPanel();
		GridBagLayout gbc3 = new GridBagLayout();
		JBoutPanel.setLayout(gbc3);
		JBoutPanel.setBorder( new TitledBorder("STATUS") );

		JPanel Prog_StgPanel = new JPanel();
		Prog_StgPanel.setLayout(new BorderLayout());

		JLabel Prog_StgLabel = new JLabel ("Status Results:");
		Prog_StgPanel.add(Prog_StgLabel, BorderLayout.NORTH);

		ProgField = new JTextField(40);
		ProgField.setEditable(false);
		Prog_StgPanel.add(ProgField, BorderLayout.SOUTH);

		JBoutPanel.add(Prog_StgPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
	            ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));

		//		All Panel Grid

		JBallGrid.add(JBinPanel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));
		JBallGrid.add(JBtaPanel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));
		JBallGrid.add(JBoutPanel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
				,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(3, 3, 3, 3), 5, 0));

		return JBallGrid;
	}

	public void fileRead() {
		Fstg = getftp_Fstg();
		Pnum = getPnum();
		Lnum = getLnum();
		Snum = getSnum();

		try {
			//String uNm = "transfer";String pWd = "transfer";
			//String jbStg = "/JB_FILES/";String path1 = "/u/mm4";

			String uNm = "datajett";String pWd = "rbjllj69";
			String jbStg = "/JB_FILES/";String path1 = "/public_html/HC";

			int fPos = Fstg.indexOf("heisco1");
			if ( fPos >= 0 ) { path1 = "../../"; }

			String ftpAdd = "ftp://" + uNm + ":" + pWd + "@" + Fstg + path1 + jbStg;
			outInPut = ftpAdd + Pnum + "/" + Lnum + "/OUTPUT.TXT";

			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();
			}

			String[] fulText = new String[ lines.size() ];
			lines.copyInto( fulText );
			reader.close();
		}
		catch (IOException exc2) {
			ProgField.setText("No OUTPUT.TXT Found.");
		}
	}

	public void SnumQuery( String sName, String uName, String pWord, String cdPath ) {
		try {
			outInPut = "ftp://" + uName + ":" + pWord + "@" + sName + cdPath + "/OUTPUT.TXT";
			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) {
			ProgField.setText("No OUTPUT.TXT Found.");
		}

		if (fulText.length==0) {
			ProgField.setText("NO DATA");
		}
		else {
			QueryRead( fulText );
		}
	}

	public void QueryRead( String[] fulText ) {
		Pnum = getPnum();Snum = getSnum();
		String tstStg = "";String dirStg1 = "";String dirStg2 = "";
		String dirStg1p4 = "";String dirStg2p4 = "";String finStg = "";
		Vector serV = new Vector();
		int rcntr=0;int tstPos = 0;int dirPos = 0;int lcntr = 0;

		for (i = 0; i < fulText.length; i++) {
			int sec2Pos = fulText[i].indexOf("SECT");
			int prt2Pos = fulText[i].indexOf(Pnum);

			if ( sec2Pos > 0 && prt2Pos == 0 ) {
				dirStg1 = fulText[i].substring(sec2Pos-1,fulText[i].length()); // Found SECT
				int ptPos = dirStg1.lastIndexOf(".");
				int spPos = dirStg1.lastIndexOf("  ");
				dirStg2 = dirStg1.substring(ptPos+1,spPos); // 127

				serV.addElement( dirStg2 );
			}
		}

		String[] serStgArr = new String[ serV.size() ];
		serV.copyInto( serStgArr );

		String[] serStgArr1 = sortStrings( serStgArr );
		String[] serStgArrS = reverseStrings( serStgArr1 );

		for (int s = 0; s < serStgArrS.length; s++) {
			int ftlg = serStgArrS.length;
			int spl = s+1;

			if ( spl < serStgArrS.length ) {
				if(serStgArrS[s].compareToIgnoreCase(serStgArrS[spl]) == 0) { lcntr++; }
				else {
					lcntr++;
					finStg = serStgArrS[s] + " - " + lcntr;
					if (!alreadyInSList(finStg)) { SlistModel.addElement(finStg); }
					lcntr=0;
					finStg = "";
				}
			}
			else {
				lcntr++;
				finStg = serStgArrS[s] + " - " + lcntr;
				if (!alreadyInSList(finStg)) { SlistModel.addElement(finStg); }
				lcntr=0;
				finStg = "";
			}
		}
	}

	public void DirGetFeed() {
		Fstg = getftp_Fstg();
		Pnum = getPnum();
		Lnum = getLnum();

		//String uNm = "transfer";String pWd = "transfer";
		//String jbStg = "/JB_FILES/";String path1 = "/u/mm4";

		String uNm = "datajett";String pWd = "rbjllj69";
		String jbStg = "/JB_FILES/";String path1 = "/public_html/HC";

		String cdP = path1 + jbStg + Pnum + "/" + Lnum;

		if ( Pnum.length() > 0 && Lnum.length() > 0 ) { SnumQuery( Fstg, uNm, pWd, cdP ); }
		else { DirGet( Fstg, uNm, pWd, cdP ); }
	}

	public void fieldCheck() {
		Fstg = getftp_Fstg();Pnum = getPnum();Lnum = getLnum();Snum = getSnum();
		if (Fstg.length()==0 || Pnum.length()==0 || Lnum.length()==0) {
			ProgField.setText("Insufficient Data. Please Select FTP Location, Part, Lot & Serial Numbers.");
		}
		else {
			DirGetFeed();
		}
		if (Fstg.length()>0 && Pnum.length()>0 && Lnum.length()>0 ) {
			if ( SnumJList.getModel().getSize() > 0 ) {
				SnumJList.setModel(SlistModel = new DefaultListModel());
				SnumField.setText("");
			}
			DirGetFeed();
		}
	}

	public void DirGet( String sName, String uName, String pWord, String cdPath ) {
		try {
			FtpWr ftpt = new FtpWr();
			String[] fulTextR = null;

			ftpt.openServer(sName);
			if (ftpt.serverIsOpen()) {
				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");

						if ( dotPos < 0  && dPos == 0 && revPos < 0 ) {
							if ( Pnum.length() > 0 ) { if (!alreadyInLList(dirStg)) { LlistModel.addElement(dirStg); } }
							else { if (!alreadyInPList(dirStg)) { PlistModel.addElement(dirStg); } }
						}
					}
				} catch (Exception ftpe) {
					ftpe.printStackTrace();
				} finally {
					ftpt.closeServer();
				}
			} else {
				System.out.println("Unable to connect to" + sName);
			}
		} catch(Exception e) {
			ProgField.setText("Unable to connect to: " + sName + ", Please select another Location.");
		}
	}

	public void valueChanged(ListSelectionEvent e) {
		if (e.getValueIsAdjusting() == false)
		{
			if (PnumJList.getSelectedIndex() != -1)
			{
				PnumSnm = PnumJList.getSelectedValue().toString();
				ProgField.setText("");
				PnumField.setText("");
				PnumField.setText(PnumSnm);
				PnumJList.clearSelection();

				if ( LnumJList.getModel().getSize() > 0 ) {
					LnumJList.setModel(LlistModel = new DefaultListModel());
					LnumField.setText("");
				}

				if ( SnumJList.getModel().getSize() > 0 ) {
					SnumJList.setModel(SlistModel = new DefaultListModel());
					SnumField.setText("");
				}

				DirGetFeed();
			}
			if (LnumJList.getSelectedIndex() != -1)
			{
				LnumSnm = LnumJList.getSelectedValue().toString();
				ProgField.setText("");
				LnumField.setText("");
				LnumField.setText(LnumSnm);
				LnumJList.clearSelection();

				if ( SnumJList.getModel().getSize() > 0 ) {
					SnumJList.setModel(SlistModel = new DefaultListModel());
					SnumField.setText("");
				}

				DirGetFeed();
			}
			if (SnumJList.getSelectedIndex() != -1)
			{
				String SnumSnm1 = SnumJList.getSelectedValue().toString();

				int dshPos = SnumSnm1.lastIndexOf(" - ");
				SnumSnm = SnumSnm1.substring(0,dshPos);

				SnumField.setText("");
				ProgField.setText("");
				SnumField.setText(SnumSnm);
				SnumJList.clearSelection();

				stgRead();
				getDataNm = getDataNm();
				SaveSelected( getDataNm );
				RunCmdInt( getDataNm );
			}
        }
	}

	public void stgRead() {
		Pnum = getPnum();
		Snum = getSnum();
		int tcntr = cntr;
		int scntr = 0;

		finText = new String[ fulText.length ];
		for (h = 0; h < finText.length; h++) {finText[h] = "";}

		for (i = 0; i < fulText.length; i++) {
			int serPos = fulText[i].indexOf("." + Snum);
			int prtPos = fulText[i].indexOf(Pnum);

			if ( serPos > 0 && prtPos == 0 ) {
				finText[nctr] = fulText[i];
				scntr++;
				finText[nctr+1] = fulText[i+1];
				finText[nctr+2] = fulText[i+2];
				finText[nctr+3] = fulText[i+3];
				nctr=nctr+4;
			}
		}
		ProgField.setText(scntr + " Sections with SERIAL NUMBER: " + Snum + " were Found.");
	}

	public void rejRead() {
		int tcntr = cntr;
		int scntr = 0;

		finText = new String[ fulText.length ];
		for (h = 0; h < finText.length; h++) {finText[h] = "";}

		for (i = 0; i < fulText.length; i++) {
			int serPos = fulText[i].indexOf("REJECT");

			if ( serPos >= 0 ) {
				finText[nctr] = fulText[i];
				scntr++;
				finText[nctr+1] = fulText[i+1];
				finText[nctr+2] = fulText[i+2];
				finText[nctr+3] = fulText[i+3];
				nctr=nctr+4;
			}
		}
		ProgField.setText(scntr + " Sections with REJECTS were Found For: " + Pnum + " & " + Lnum + ".");
	}

	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 < nctr; j++) {
				if ( finText[j] != "" ) { expfl.println( finText[j] ); }
			}
			expfl.flush();
			expfl.close();
		} catch(java.io.IOException IOEx) {
			System.out.println("Cannot create " + getDataNm + " file.");
		}
	}

    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;
	}

	protected boolean alreadyInPList(String name) { return PlistModel.contains(name); }
	protected boolean alreadyInLList(String name) { return LlistModel.contains(name); }
	protected boolean alreadyInSList(String name) { return SlistModel.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 getDataNm() {
		Pnum = getPnum();
		Lnum = getLnum();
		OutFileNm = Pnum + "." + Lnum + "_out.txt";
		return OutFileNm;
	}

	public void CancelPressed() {
		System.exit(0);
	}

	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 String getftp_Fstg(){
		ftp_Fstg = ftp_Field.getText();
		return ftp_Fstg;
	}

	public void setResetAll() {
		PnumField.setText("");
		LnumField.setText("");
		SnumField.setText("");
		ftp_Field.setText("");
		ProgField.setText("");

		if ( PnumJList.getModel().getSize() > 0 ) { PnumJList.setModel(PlistModel = new DefaultListModel()); }
		if ( LnumJList.getModel().getSize() > 0 ) { LnumJList.setModel(LlistModel = new DefaultListModel()); }
		if ( SnumJList.getModel().getSize() > 0 ) { SnumJList.setModel(SlistModel = new DefaultListModel()); }
	}
}

class jb_item {
	private String jb_name;
	private String jb_stg;

	public jb_item() {
		jb_name = "";
		jb_stg = "";
	}

	jb_item( String jb_name_, String jb_stg_ ) {
		jb_name = jb_name_;
		jb_stg = jb_stg_;
	}

	public String getName() {
		return jb_name;
	}

	public String getStg() {
		return jb_stg;
	}

	public String toString() {
		return jb_name;
	}
}

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;
		}
	}
}
