/*
* ProtocolRunner.java
*
* Created on 22 December 2003, 12:57
*/
// Import Java Packages
import java.awt.Point;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.Component;
import java.io.IOException;
import javax.swing.JLabel;
import javax.swing.JDialog;
import javax.swing.UIManager;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JOptionPane;
import java.net.SocketException;
import java.io.File;
import java.util.Date;
import java.util.Calendar;
import javax.swing.JDialog;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.GregorianCalendar;
// Import NET Packages
import org.apache.commons.net.*;
import org.apache.commons.net.io.*;
import org.apache.commons.net.ftp.*;
import org.apache.commons.net.nntp.*;
import org.apache.commons.net.pop3.*;
import org.apache.commons.net.smtp.*;
import org.apache.commons.net.tftp.*;
/**
* ProtocolRunner class exercises the various protocols available in the
* Commons Net Package
* @author Vikram Goyal
*/
public class ProtocolRunner extends javax.swing.JFrame {
/** Creates new form ProtocolRunner */
public ProtocolRunner() {
// set the native look and feel
try{
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}catch(Exception e) {}
initComponents();
// size it so that it appears full screen
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
this.setSize(screen.width, screen.height);
this.pack();
this.setExtendedState(Frame.MAXIMIZED_BOTH);
}
/** 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
ftpPanel = new javax.swing.JPanel();
jRadioButton4 = new javax.swing.JRadioButton();
jRadioButton8 = new javax.swing.JRadioButton();
jRadioButton1 = new javax.swing.JRadioButton();
jRadioButton3 = new javax.swing.JRadioButton();
jRadioButton5 = new javax.swing.JRadioButton();
jRadioButton6 = new javax.swing.JRadioButton();
jRadioButton7 = new javax.swing.JRadioButton();
nntpPanel = new javax.swing.JPanel();
jRadioButton10 = new javax.swing.JRadioButton();
jRadioButton15 = new javax.swing.JRadioButton();
jRadioButton2 = new javax.swing.JRadioButton();
jRadioButton11 = new javax.swing.JRadioButton();
jRadioButton12 = new javax.swing.JRadioButton();
jRadioButton13 = new javax.swing.JRadioButton();
jRadioButton14 = new javax.swing.JRadioButton();
smtpPanel = new javax.swing.JPanel();
jRadioButton17 = new javax.swing.JRadioButton();
jRadioButton18 = new javax.swing.JRadioButton();
jRadioButton16 = new javax.swing.JRadioButton();
pop3Panel = new javax.swing.JPanel();
jRadioButton19 = new javax.swing.JRadioButton();
jRadioButton20 = new javax.swing.JRadioButton();
jRadioButton21 = new javax.swing.JRadioButton();
jRadioButton22 = new javax.swing.JRadioButton();
jRadioButton23 = new javax.swing.JRadioButton();
jRadioButton24 = new javax.swing.JRadioButton();
jRadioButton9 = new javax.swing.JRadioButton();
ftpButtonGroup = new javax.swing.ButtonGroup();
nntpButtonGroup = new javax.swing.ButtonGroup();
smtpButtonGroup = new javax.swing.ButtonGroup();
pop3ButtonGroup = new javax.swing.ButtonGroup();
tftpPanel = new javax.swing.JPanel();
jRadioButton25 = new javax.swing.JRadioButton();
jRadioButton26 = new javax.swing.JRadioButton();
tftpPanelButtonGroup = new javax.swing.ButtonGroup();
loginDialog = new javax.swing.JDialog();
jLabel9 = new javax.swing.JLabel();
jPanel13 = new javax.swing.JPanel();
jLabel10 = new javax.swing.JLabel();
loginUsername = new javax.swing.JTextField();
jLabel11 = new javax.swing.JLabel();
loginPassword = new javax.swing.JPasswordField();
jPanel14 = new javax.swing.JPanel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
singleValueDialog = new javax.swing.JDialog();
jLabel12 = new javax.swing.JLabel();
jPanel15 = new javax.swing.JPanel();
singleValueLabel = new javax.swing.JLabel();
singleValueField = new javax.swing.JTextField();
jPanel16 = new javax.swing.JPanel();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
multipleValueDialog = new javax.swing.JDialog();
jLabel13 = new javax.swing.JLabel();
jPanel17 = new javax.swing.JPanel();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jPanel18 = new javax.swing.JPanel();
jLabel16 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
messageArea = new javax.swing.JTextArea();
jPanel19 = new javax.swing.JPanel();
jLabel14 = new javax.swing.JLabel();
fromField = new javax.swing.JTextField();
jLabel15 = new javax.swing.JLabel();
subjectField = new javax.swing.JTextField();
variableLabel = new javax.swing.JLabel();
variableField = new javax.swing.JTextField();
jTabbedPane1 = new javax.swing.JTabbedPane();
jPanel1 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
tcpServerResponse = new javax.swing.JTextArea();
jPanel7 = new javax.swing.JPanel();
presetPanel = new javax.swing.JPanel();
defaultPanel = new javax.swing.JPanel();
jLabel5 = new javax.swing.JLabel();
jPanel9 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
commandBox = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
tcpSelectionBox = new javax.swing.JComboBox();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
serverNameField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
portNumberField = new javax.swing.JTextField();
tcpConnectButton = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jPanel10 = new javax.swing.JPanel();
jPanel8 = new javax.swing.JPanel();
jLabel6 = new javax.swing.JLabel();
udpSelectionBox = new javax.swing.JComboBox();
jPanel12 = new javax.swing.JPanel();
jLabel7 = new javax.swing.JLabel();
udpRemoteServerField = new javax.swing.JTextField();
jPanel11 = new javax.swing.JPanel();
udpCommandPanel = new javax.swing.JPanel();
udpStartButton = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
udpServerResponse = new javax.swing.JTextArea();
ftpPanel.setLayout(new java.awt.GridLayout(3, 3));
jRadioButton4.setText("Login");
ftpButtonGroup.add(jRadioButton4);
jRadioButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton4ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton4);
jRadioButton8.setText("Logout");
ftpButtonGroup.add(jRadioButton8);
jRadioButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton8ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton8);
jRadioButton1.setText("Change Working Directory");
ftpButtonGroup.add(jRadioButton1);
jRadioButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton1ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton1);
jRadioButton3.setText("List Files");
ftpButtonGroup.add(jRadioButton3);
jRadioButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton3ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton3);
jRadioButton5.setText("Make Directory");
ftpButtonGroup.add(jRadioButton5);
jRadioButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton5ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton5);
jRadioButton6.setText("Upload File");
ftpButtonGroup.add(jRadioButton6);
jRadioButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton6ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton6);
jRadioButton7.setText("Download File");
ftpButtonGroup.add(jRadioButton7);
jRadioButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton7ActionPerformed(evt);
}
});
ftpPanel.add(jRadioButton7);
nntpPanel.setLayout(new java.awt.GridLayout(3, 3));
jRadioButton10.setText("Login");
nntpButtonGroup.add(jRadioButton10);
jRadioButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton10ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton10);
jRadioButton15.setText("Logout");
nntpButtonGroup.add(jRadioButton15);
jRadioButton15.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton15ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton15);
jRadioButton2.setText("List All NewsGroups");
nntpButtonGroup.add(jRadioButton2);
jRadioButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton2ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton2);
jRadioButton11.setText("List New NewsGroups");
nntpButtonGroup.add(jRadioButton11);
jRadioButton11.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton11ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton11);
jRadioButton12.setText("List New News");
nntpButtonGroup.add(jRadioButton12);
jRadioButton12.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton12ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton12);
jRadioButton13.setText("Post Article");
nntpButtonGroup.add(jRadioButton13);
jRadioButton13.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton13ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton13);
jRadioButton14.setText("Get Article");
nntpButtonGroup.add(jRadioButton14);
jRadioButton14.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton14ActionPerformed(evt);
}
});
nntpPanel.add(jRadioButton14);
smtpPanel.setLayout(new java.awt.GridLayout(1, 1));
jRadioButton17.setText("Login");
smtpButtonGroup.add(jRadioButton17);
jRadioButton17.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton17ActionPerformed(evt);
}
});
smtpPanel.add(jRadioButton17);
jRadioButton18.setText("Logout");
smtpButtonGroup.add(jRadioButton18);
jRadioButton18.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton18ActionPerformed(evt);
}
});
smtpPanel.add(jRadioButton18);
jRadioButton16.setText("Send Simple Message");
smtpButtonGroup.add(jRadioButton16);
jRadioButton16.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton16ActionPerformed(evt);
}
});
smtpPanel.add(jRadioButton16);
pop3Panel.setLayout(new java.awt.GridLayout(2, 0));
jRadioButton19.setText("Login");
pop3ButtonGroup.add(jRadioButton19);
jRadioButton19.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton19ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton19);
jRadioButton20.setText("Logout");
pop3ButtonGroup.add(jRadioButton20);
jRadioButton20.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton20ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton20);
jRadioButton21.setText("List All Messages");
pop3ButtonGroup.add(jRadioButton21);
jRadioButton21.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton21ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton21);
jRadioButton22.setText("Status");
pop3ButtonGroup.add(jRadioButton22);
jRadioButton22.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton22ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton22);
jRadioButton23.setText("Retrieve Message");
pop3ButtonGroup.add(jRadioButton23);
jRadioButton23.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton23ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton23);
jRadioButton24.setText("Delete Message");
pop3ButtonGroup.add(jRadioButton24);
jRadioButton24.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton24ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton24);
jRadioButton9.setText("Reset");
pop3ButtonGroup.add(jRadioButton9);
jRadioButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton9ActionPerformed(evt);
}
});
pop3Panel.add(jRadioButton9);
tftpPanel.setLayout(new java.awt.GridLayout(1, 0));
jRadioButton25.setText("Send A File");
tftpPanelButtonGroup.add(jRadioButton25);
jRadioButton25.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton25ActionPerformed(evt);
}
});
tftpPanel.add(jRadioButton25);
jRadioButton26.setText("Receive A File");
tftpPanelButtonGroup.add(jRadioButton26);
jRadioButton26.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jRadioButton26ActionPerformed(evt);
}
});
tftpPanel.add(jRadioButton26);
loginDialog.getContentPane().setLayout(new java.awt.BorderLayout(0, 5));
loginDialog.setTitle("Input Required");
loginDialog.setModal(true);
loginDialog.setResizable(false);
jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel9.setText("Please Enter Login Details");
loginDialog.getContentPane().add(jLabel9, java.awt.BorderLayout.NORTH);
jPanel13.setLayout(new java.awt.GridLayout(2, 2, 5, 3));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel10.setText("Username:");
jPanel13.add(jLabel10);
loginUsername.setColumns(15);
jPanel13.add(loginUsername);
jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel11.setText("Password:");
jPanel13.add(jLabel11);
loginPassword.setColumns(15);
jPanel13.add(loginPassword);
loginDialog.getContentPane().add(jPanel13, java.awt.BorderLayout.CENTER);
jPanel14.setLayout(new java.awt.GridLayout(1, 0));
jButton1.setText("OK");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel14.add(jButton1);
jButton2.setText("Cancel");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel14.add(jButton2);
loginDialog.getContentPane().add(jPanel14, java.awt.BorderLayout.SOUTH);
singleValueDialog.setTitle("Input Required");
singleValueDialog.setModal(true);
singleValueDialog.setResizable(false);
jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel12.setText("Please enter a value");
singleValueDialog.getContentPane().add(jLabel12, java.awt.BorderLayout.NORTH);
jPanel15.setLayout(new java.awt.GridLayout(1, 0, 3, 0));
singleValueLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jPanel15.add(singleValueLabel);
singleValueField.setColumns(15);
jPanel15.add(singleValueField);
singleValueDialog.getContentPane().add(jPanel15, java.awt.BorderLayout.CENTER);
jPanel16.setLayout(new java.awt.GridLayout(1, 0, 5, 0));
jButton3.setText("OK");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jPanel16.add(jButton3);
jButton4.setText("Cancel");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jPanel16.add(jButton4);
singleValueDialog.getContentPane().add(jPanel16, java.awt.BorderLayout.SOUTH);
multipleValueDialog.setTitle("Input Required");
multipleValueDialog.setModal(true);
jLabel13.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel13.setText("Please enter the following values");
multipleValueDialog.getContentPane().add(jLabel13, java.awt.BorderLayout.NORTH);
jPanel17.setLayout(new java.awt.GridLayout(1, 0, 5, 0));
jButton5.setText("OK");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jPanel17.add(jButton5);
jButton6.setText("Cancel");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jPanel17.add(jButton6);
multipleValueDialog.getContentPane().add(jPanel17, java.awt.BorderLayout.SOUTH);
jPanel18.setLayout(new java.awt.BorderLayout());
jLabel16.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel16.setText("Enter Message:");
jPanel18.add(jLabel16, java.awt.BorderLayout.WEST);
messageArea.setColumns(20);
messageArea.setRows(15);
jScrollPane3.setViewportView(messageArea);
jPanel18.add(jScrollPane3, java.awt.BorderLayout.CENTER);
jPanel19.setLayout(new java.awt.GridLayout(3, 2, 3, 3));
jLabel14.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel14.setText("From:");
jPanel19.add(jLabel14);
fromField.setColumns(15);
jPanel19.add(fromField);
jLabel15.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel15.setText("Subject:");
jPanel19.add(jLabel15);
subjectField.setColumns(15);
jPanel19.add(subjectField);
variableLabel.setText("Newsgroup:");
jPanel19.add(variableLabel);
variableField.setColumns(15);
jPanel19.add(variableField);
jPanel18.add(jPanel19, java.awt.BorderLayout.NORTH);
multipleValueDialog.getContentPane().add(jPanel18, java.awt.BorderLayout.CENTER);
setTitle("Protocol Runner");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel4.setLayout(new java.awt.BorderLayout());
jScrollPane1.setBorder(new javax.swing.border.TitledBorder("Server Output"));
tcpServerResponse.setEditable(false);
tcpServerResponse.setFont(new java.awt.Font("Monospaced", 0, 12));
jScrollPane1.setViewportView(tcpServerResponse);
jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);
jPanel7.setLayout(new java.awt.GridLayout(1, 2, 5, 0));
presetPanel.setLayout(new java.awt.BorderLayout());
presetPanel.setBorder(new javax.swing.border.TitledBorder("Preset Commands"));
jLabel5.setFont(new java.awt.Font("Dialog", 3, 12));
jLabel5.setText("No Preset Commands. Simply Connect");
defaultPanel.add(jLabel5);
presetPanel.add(defaultPanel, java.awt.BorderLayout.CENTER);
jPanel7.add(presetPanel);
jPanel9.setBorder(new javax.swing.border.TitledBorder("Freeflow Commands"));
jLabel4.setText("Type Command Here:");
jPanel9.add(jLabel4);
commandBox.setColumns(15);
commandBox.setEnabled(false);
commandBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
commandBoxActionPerformed(evt);
}
});
jPanel9.add(commandBox);
jPanel7.add(jPanel9);
jPanel4.add(jPanel7, java.awt.BorderLayout.NORTH);
jPanel1.add(jPanel4, java.awt.BorderLayout.CENTER);
jPanel5.setLayout(new java.awt.GridLayout(2, 1, 0, 5));
jPanel6.setBorder(new javax.swing.border.TitledBorder("Protocol"));
jLabel3.setText("Select Protocol:");
jPanel6.add(jLabel3);
tcpSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "CharGen", "Daytime", "Echo", "Finger", "FTP", "NNTP", "POP3", "SMTP", "Time", "Whois" }));
tcpSelectionBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tcpSelectionBoxActionPerformed(evt);
}
});
jPanel6.add(tcpSelectionBox);
jPanel5.add(jPanel6);
jPanel3.setBorder(new javax.swing.border.TitledBorder("Server Connection Details"));
jLabel1.setText("Server:");
jPanel3.add(jLabel1);
serverNameField.setColumns(25);
jPanel3.add(serverNameField);
jLabel2.setText("Port:");
jPanel3.add(jLabel2);
portNumberField.setColumns(4);
portNumberField.setText("19");
jPanel3.add(portNumberField);
tcpConnectButton.setText("CONNECT");
tcpConnectButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tcpConnectButtonActionPerformed(evt);
}
});
jPanel3.add(tcpConnectButton);
jPanel5.add(jPanel3);
jPanel1.add(jPanel5, java.awt.BorderLayout.NORTH);
jTabbedPane1.addTab("TCP", jPanel1);
jPanel2.setLayout(new java.awt.BorderLayout());
jPanel10.setLayout(new java.awt.GridLayout(2, 0));
jPanel8.setBorder(new javax.swing.border.TitledBorder("Protocol"));
jLabel6.setText("Select Protocol:");
jPanel8.add(jLabel6);
udpSelectionBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "CharGen", "Daytime", "Echo", "TFTP", "Time" }));
udpSelectionBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
udpSelectionBoxActionPerformed(evt);
}
});
jPanel8.add(udpSelectionBox);
jPanel10.add(jPanel8);
jPanel12.setBorder(new javax.swing.border.TitledBorder("Remote Server Details"));
jLabel7.setText("Remote Server:");
jPanel12.add(jLabel7);
udpRemoteServerField.setColumns(25);
jPanel12.add(udpRemoteServerField);
jPanel10.add(jPanel12);
jPanel2.add(jPanel10, java.awt.BorderLayout.NORTH);
jPanel11.setLayout(new java.awt.BorderLayout());
udpCommandPanel.setLayout(new java.awt.GridLayout(1, 0));
udpCommandPanel.setBorder(new javax.swing.border.TitledBorder("Command Panel"));
udpStartButton.setText("START");
udpStartButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
udpStartButtonActionPerformed(evt);
}
});
udpCommandPanel.add(udpStartButton);
jPanel11.add(udpCommandPanel, java.awt.BorderLayout.NORTH);
udpServerResponse.setEditable(false);
udpServerResponse.setFont(new java.awt.Font("Monospaced", 0, 12));
jScrollPane2.setViewportView(udpServerResponse);
jPanel11.add(jScrollPane2, java.awt.BorderLayout.CENTER);
jPanel2.add(jPanel11, java.awt.BorderLayout.CENTER);
jTabbedPane1.addTab("UDP", jPanel2);
getContentPane().add(jTabbedPane1, java.awt.BorderLayout.CENTER);
pack();
}//GEN-END:initComponents
private void jRadioButton26ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton26ActionPerformed
// tftp receive a file:
udpRemoteServer = udpRemoteServerField.getText();
if(udpRemoteServer == null || udpRemoteServer.length() == 0) {
showError("Please enter a remote server");
return;
}
// get the name of the file to receive
udpStartButton.doClick();
singleValueLabel.setText("Enter file path (TFTP-Receive):");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton26ActionPerformed
private void jRadioButton25ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton25ActionPerformed
// tftp send a file:
udpRemoteServer = udpRemoteServerField.getText();
if(udpRemoteServer == null || udpRemoteServer.length() == 0) {
showError("Please enter a remote server");
return;
}
// get the name of the file to send
udpStartButton.doClick();
singleValueLabel.setText("Enter file path (TFTP-Send):");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton25ActionPerformed
private void udpStartButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_udpStartButtonActionPerformed
// handler for Start button for UDP:
if(started) { // means a session has already started
try{
handleUDPStop();
}catch(IOException ex) {
showError(ex.getMessage());
}
return;
}
udpRemoteServer = udpRemoteServerField.getText();
if(udpRemoteServer == null || udpRemoteServer.length() == 0) {
showError("Please enter a remote server");
return;
}
try{
udpClient =
ClientFactory.getUDPClientInstance(
udpSelectionBox.getSelectedIndex());
udpClient.open();
}catch(SocketException se){
showError(se.getMessage());
return;
}catch(IOException ioex){
showError(ioex.getMessage());
return;
}
// if we come here means we have opened a port
started = true;
udpStartButton.setText("Stop");
udpSelectionBox.setEnabled(false);
jTabbedPane1.setEnabledAt(0, false);
try {
ProtocolHandler.handleUDPProtocol(
udpSelectionBox.getSelectedIndex(),
udpClient,
this);
}catch (IOException io) {
showError(io.getMessage());
io.printStackTrace();
}
}//GEN-LAST:event_udpStartButtonActionPerformed
private void jRadioButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton9ActionPerformed
// reset for pop3:
if(!checkValidConnection()) return;
try {
((POP3Client)tcpClient).reset();
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton9ActionPerformed
private void jRadioButton24ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton24ActionPerformed
// delete message for pop3:
if(!checkValidConnection()) return;
singleValueLabel.setText("Enter message number to delete:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton24ActionPerformed
private void jRadioButton23ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton23ActionPerformed
// Retrieve message for pop3:
if(!checkValidConnection()) return;
singleValueLabel.setText("Enter message number:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton23ActionPerformed
private void jRadioButton21ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton21ActionPerformed
// list all messages for pop3:
if(!checkValidConnection()) return;
try {
((POP3Client)tcpClient).listMessages();
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton21ActionPerformed
private void jRadioButton22ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton22ActionPerformed
// status for pop3:
if(!checkValidConnection()) return;
try {
((POP3Client)tcpClient).status();
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton22ActionPerformed
private void jRadioButton20ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton20ActionPerformed
// logout for pop3:
if(!checkValidConnection()) return;
try {
((POP3Client)tcpClient).logout();
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
handleDisconnect();
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton20ActionPerformed
private void jRadioButton19ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton19ActionPerformed
// login for pop3:
if(!checkValidConnection()) return;
showDialog(loginDialog);
}//GEN-LAST:event_jRadioButton19ActionPerformed
private void jRadioButton16ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton16ActionPerformed
// Send simple message for SMTP:
if(!checkValidConnection()) return;
variableLabel.setText("To:");
showDialog(multipleValueDialog);
}//GEN-LAST:event_jRadioButton16ActionPerformed
private void jRadioButton18ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton18ActionPerformed
// logout for SMTP:
if(!checkValidConnection()) return;
try {
((SMTPClient)tcpClient).logout();
tcpServerResponse.append(
((SMTPClient)tcpClient).getReplyString() +
"\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton18ActionPerformed
private void jRadioButton17ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton17ActionPerformed
// login for SMTP:
if(!checkValidConnection()) return;
// for SMTP login is simply sending HELO
try {
((SMTPClient)tcpClient).login();
tcpServerResponse.append(
((SMTPClient)tcpClient).getReplyString() +
"\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton17ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
// ok for multiple value dialog:
String fromText = fromField.getText();
String subjectText = subjectField.getText();
String variableText = variableField.getText();
String messageText = messageArea.getText();
DotTerminatedMessageWriter writer;
int selection = tcpSelectionBox.getSelectedIndex();
try{
if(selection == 5) { // means handling NNTP posting of message
writer = (DotTerminatedMessageWriter)
((NNTPClient)tcpClient).postArticle();
if(writer == null) {
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
return;
}
// create simple NNTP headers
SimpleNNTPHeader headers =
new SimpleNNTPHeader(fromText, subjectText);
headers.addNewsgroup(variableText);
// and write the message on
writer.write(headers.toString());
writer.write(messageText);
writer.close();
((NNTPClient)tcpClient).completePendingCommand();
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
} else if(selection == 7) { // means handling SMTP posting of message
((SMTPClient)tcpClient).setSender(fromText);
((SMTPClient)tcpClient).addRecipient(variableText);
writer = (DotTerminatedMessageWriter)
((SMTPClient)tcpClient).sendMessageData();
if(writer == null) {
tcpServerResponse.append(
((SMTPClient)tcpClient).getReplyString() + "\r\n");
return;
}
// create Simple SMTP header
SimpleSMTPHeader headers =
new SimpleSMTPHeader(fromText, variableText, subjectText);
writer.write(headers.toString());
writer.write(messageText);
writer.close();
((SMTPClient)tcpClient).completePendingCommand();
tcpServerResponse.append(
((SMTPClient)tcpClient).getReplyString() + "\r\n");
}
}catch(IOException ioex) { showError(ioex.getMessage()); }
finally{
fromField.setText("");
subjectField.setText("");
variableField.setText("");
messageArea.setText("");
multipleValueDialog.setVisible(false);
}
}//GEN-LAST:event_jButton5ActionPerformed
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
// cancel for multiple value dialog:
multipleValueDialog.setVisible(false);
}//GEN-LAST:event_jButton6ActionPerformed
private void jRadioButton13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton13ActionPerformed
// post article for nntp:
if(!checkValidConnection()) return;
variableLabel.setText("Newsgroup:");
showDialog(multipleValueDialog);
}//GEN-LAST:event_jRadioButton13ActionPerformed
private void jRadioButton14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton14ActionPerformed
// get article for nntp:
if(!checkValidConnection()) return;
singleValueLabel.setText("Enter message id:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton14ActionPerformed
private void jRadioButton12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton12ActionPerformed
// list new news messages for nntp:
if(!checkValidConnection()) return;
singleValueLabel.setText("Full or part name of group:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton12ActionPerformed
private void jRadioButton15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton15ActionPerformed
// logout for nntp:
if(!checkValidConnection()) return;
try {
((NNTPClient)tcpClient).logout();
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
handleDisconnect();
}catch(IOException ioex) { showError(ioex.getMessage()); }
}//GEN-LAST:event_jRadioButton15ActionPerformed
private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton2ActionPerformed
// list all news groups for nntp:
if(!checkValidConnection()) return;
try{
NewsgroupInfo[] newsgroups =
((NNTPClient)tcpClient).listNewsgroups();
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
for(int i=0; i<newsgroups.length; i++) {
tcpServerResponse.append(newsgroups[i].getNewsgroup() + "\r\n");
}
}catch(IOException ioex) { showError(ioex.getMessage()); }
}//GEN-LAST:event_jRadioButton2ActionPerformed
private void jRadioButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton11ActionPerformed
// list new news group for nntp:
if(!checkValidConnection()) return;
// create a query to find new news groups since yesterday
GregorianCalendar today = new GregorianCalendar();
today.roll(Calendar.DAY_OF_YEAR, false);
NewGroupsOrNewsQuery query =
new NewGroupsOrNewsQuery(today, false);
try{
NewsgroupInfo[] newsgroups =
((NNTPClient)tcpClient).listNewNewsgroups(query);
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
if(newsgroups == null) return;
for(int i=0; i<newsgroups.length; i++) {
tcpServerResponse.append(newsgroups[i].getNewsgroup() + "\r\n");
}
if(newsgroups.length == 0)
tcpServerResponse.append("No new NewsGroups\r\n");
}catch(IOException ioex) { showError(ioex.getMessage()); }
}//GEN-LAST:event_jRadioButton11ActionPerformed
private void jRadioButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton10ActionPerformed
// login for nntp:
if(!checkValidConnection()) return;
showDialog(loginDialog);
}//GEN-LAST:event_jRadioButton10ActionPerformed
private void jRadioButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton7ActionPerformed
// Download file for FTP:
if(!checkValidConnection()) return;
singleValueLabel.setText("Remote file:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton7ActionPerformed
private void jRadioButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton6ActionPerformed
// upload file for FTP:
if(!checkValidConnection()) return;
singleValueLabel.setText("Full path to local file:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton6ActionPerformed
private void jRadioButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton5ActionPerformed
// make directory for FTP:
if(!checkValidConnection()) return;
singleValueLabel.setText("New Directory Name:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton5ActionPerformed
private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton3ActionPerformed
// list files for FTP:
if(!checkValidConnection()) return;
try {
FTPFile[] fileList = ((FTPClient)tcpClient).listFiles();
tcpServerResponse.append(
((FTPClient)tcpClient).getReplyString() + "\r\n");
if(fileList == null) return;
for(int i=0; i<fileList.length; i++) {
tcpServerResponse.append(fileList[i].toString() + "\r\n");
}
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
}//GEN-LAST:event_jRadioButton3ActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// Single Value Dialog OK Button
// this method only handles tcp protocols, for udp protocols, another
// method is used
if(jTabbedPane1.getSelectedIndex() == 1) { // means we are in udp tab
udpSingleValOKButton();
return;
}
String valueText = singleValueField.getText();
String valueLabel = singleValueLabel.getText();
int selection = tcpSelectionBox.getSelectedIndex();
try{
if(selection == 4) { // means handling FTP
if("New Directory:".equals(valueLabel)) {
// means CWD
((FTPClient)tcpClient).changeWorkingDirectory(valueText);
} else if(
"New Directory Name:".equals(valueLabel)) {
// means make new directory
((FTPClient)tcpClient).makeDirectory(valueText);
} else if(
"Full path to local file:".equals(
valueLabel)) {
// means uploading file
FileInputStream input =
new FileInputStream(valueText);
((FTPClient)tcpClient).storeFile(
new File(valueText).getName(), input);
input.close();
} else if("Remote file:".equals(valueLabel)) {
// means downloading a file
FileOutputStream output =
new FileOutputStream(
System.getProperty("user.dir") +
System.getProperty("file.separator") +
valueText);
((FTPClient)tcpClient).retrieveFile(valueText, output);
output.close();
}
tcpServerResponse.append(
((FTPClient)tcpClient).getReplyString() + "\r\n");
} else if(selection == 5) { // means handling NNTP
if("Full or part name of group:".equals(valueLabel)) {
// means getting new news of a group
// create a query to get all new messages in this group
// since yesterday
GregorianCalendar today = new GregorianCalendar();
today.roll(Calendar.DAY_OF_YEAR, false);
NewGroupsOrNewsQuery query =
new NewGroupsOrNewsQuery(today, false);
query.addDistribution(valueText);
String[] result =
((NNTPClient)tcpClient).listNewNews(query);
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
// in case the NEWNEWS cmmand is disabled
if(result == null) return;
for(int i=0; i<result.length; i++) {
tcpServerResponse.append(
result[i] + "\r\n");
}
} else if("Enter message id:".equals(valueLabel)) {
// means getting a message based on id
DotTerminatedMessageReader reader =
(DotTerminatedMessageReader)
((NNTPClient)tcpClient).retrieveArticle(
"<" + valueText + ">");
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString() + "\r\n");
if(reader == null) return;
BufferedReader buffReader = new BufferedReader(reader);
String lineRead;
while((lineRead = buffReader.readLine()) != null) {
tcpServerResponse.append(lineRead + "\r\n");
}
}
} else if(selection == 6) { // means handling pop3
if("Enter message number:".equals(valueLabel)) {
// means getting a message based on number
DotTerminatedMessageReader reader =
(DotTerminatedMessageReader)
((POP3Client)tcpClient).retrieveMessage(
Integer.parseInt(valueText));
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
if(reader == null) return;
BufferedReader buffReader = new BufferedReader(reader);
String lineRead;
while((lineRead = buffReader.readLine()) != null) {
tcpServerResponse.append(lineRead + "\r\n");
}
} else if("Enter message number to delete:".equals(valueLabel)){
// means deleting a message based on id
((POP3Client)tcpClient).deleteMessage(
Integer.parseInt(valueText));
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString() +
"\r\n");
}
} else if(selection == 2) { // is echo
BufferedReader reader = new BufferedReader(
new InputStreamReader(
((EchoTCPClient)tcpClient).getInputStream()));
PrintWriter writer =
new PrintWriter(
new OutputStreamWriter(
((EchoTCPClient)tcpClient).getOutputStream()), true);
// write to the server
writer.println(valueText);
// read from the server
tcpServerResponse.append(reader.readLine());
// streams are not closed here as there is no provision for the
// user to send another stream of data. Thus the user has to
// close the connection, which cleans up open streams.
} else if(selection == 3) { // is finger
tcpServerResponse.setText(
((FingerClient)tcpClient).query(false, valueText));
} else if(selection == 9) { // is whois
tcpServerResponse.setText(
((WhoisClient)tcpClient).query(valueText));
}
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
finally {
singleValueField.setText("");
singleValueDialog.setVisible(false);
}
}//GEN-LAST:event_jButton3ActionPerformed
private void udpSingleValOKButton() {
// handles udp single value ok button clicks
String valueText = singleValueField.getText();
String valueLabel = singleValueLabel.getText();
int selection = udpSelectionBox.getSelectedIndex();
try{
if(selection == 2) { // means handling echo
if("Enter echo data (UDP):".equals(valueLabel)) {
((EchoUDPClient)udpClient).send(
valueText.getBytes(),
InetAddress.getByName(udpRemoteServer));
byte[] data = new byte[valueText.length()];
((EchoUDPClient)udpClient).receive(data);
udpServerResponse.append(new String(data) + "\r\n");
}
} else if(selection == 3) { // handling tftp
File localFile = new File(valueText);
if("Enter file path (TFTP-Receive):".equals(valueLabel)) {
// means receiving a file via tftp
FileOutputStream output = new FileOutputStream(localFile);
((TFTPClient)udpClient).receiveFile(
localFile.getName(),
TFTPClient.ASCII_MODE,
output,
InetAddress.getByName(udpRemoteServer));
output.close();
} else if("Enter file path (TFTP-Send):".equals(valueLabel)) {
// means sending a file via tftp
FileInputStream input = new FileInputStream(localFile);
((TFTPClient)udpClient).sendFile(
localFile.getName(),
TFTPClient.ASCII_MODE,
input,
InetAddress.getByName(udpRemoteServer));
input.close();
}
udpClient.close();
}
}catch(IOException ioex) { showError(ioex.getMessage()); return; }
finally {
singleValueField.setText("");
singleValueDialog.setVisible(false);
}
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
singleValueDialog.setVisible(false);
// if this is any of the following protocols disconnect as well
int currentSel = tcpSelectionBox.getSelectedIndex();
int currentUDPSel = udpSelectionBox.getSelectedIndex();
int currentSelTab = jTabbedPane1.getSelectedIndex();
try{
if((currentSel == 2) && (currentSelTab == 0)) {
// is Echo for TCP
handleDisconnect();
} else if((currentUDPSel == 3) && (currentSelTab == 1)) {
// is TFTP for UDP
handleUDPStop();
}
}catch(IOException ioex) {
System.err.println(ioex.getMessage());
}
}//GEN-LAST:event_jButton4ActionPerformed
private void jRadioButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton8ActionPerformed
// logout for ftp:
if(!checkValidConnection()) return;
try{
((FTPClient)tcpClient).logout();
tcpServerResponse.append(((FTPClient)tcpClient).getReplyString());
handleDisconnect();
}catch(IOException ioex) { showError(ioex.getMessage()); }
}//GEN-LAST:event_jRadioButton8ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// login handling code for ftp, nntp, pop3:
String username = loginUsername.getText();
String password = loginPassword.getText();
loginDialog.setVisible(false);
try {
int currentSel = tcpSelectionBox.getSelectedIndex();
if(currentSel == 4) { // is FTP login
((FTPClient)tcpClient).login(username, password);
tcpServerResponse.append(
((FTPClient)tcpClient).getReplyString());
} else if(currentSel == 5) { // is NNTP login
((NNTPClient)tcpClient).authenticate(username, password);
tcpServerResponse.append(
((NNTPClient)tcpClient).getReplyString());
} else if(currentSel == 6) { // is POP3 login
((POP3Client)tcpClient).login(username, password);
tcpServerResponse.append(
((POP3Client)tcpClient).getReplyString());
}
}catch(IOException ioex) { showError(ioex.getMessage()); }
finally{ loginUsername.setText(""); loginPassword.setText(""); }
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// Add your handling code here:
loginDialog.setVisible(false);
}//GEN-LAST:event_jButton2ActionPerformed
private void jRadioButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton4ActionPerformed
// ftp login
if(!checkValidConnection()) return;
showDialog(loginDialog);
}//GEN-LAST:event_jRadioButton4ActionPerformed
private boolean checkValidConnection() {
if(!connected) { showError("Please connect first!"); return false; }
return true;
}
private void commandBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_commandBoxActionPerformed
String commandString = commandBox.getText();
if(commandString == null || commandString.length() == 0) return;
try{
ProtocolHandler.handleTCPProtocol(
tcpSelectionBox.getSelectedIndex(),
tcpClient, this, commandString);
}catch(IOException ioex) { showError(ioex.getMessage()); }
finally{ commandBox.setText(""); }
}//GEN-LAST:event_commandBoxActionPerformed
/**
* This code handles the action events for the Connect button
*/
private void tcpConnectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tcpConnectButtonActionPerformed
// if already connected, simply disconnect
if(connected) {
try {
handleDisconnect();
}catch(IOException e) {
showError(e.getMessage());
}
return;
}
// if not connected, try and make a connection
String server = serverNameField.getText();
String port = portNumberField.getText();
int portNumber;
// check if the port number is a valid number
try{
portNumber = Integer.parseInt(port);
}catch(NumberFormatException nfe){
showError("Invalid port number: " + port);
return;
}
// some basic checking of data
if(server == null || server.trim().length() == 0 ||
portNumber < 1){
showError("Invalid connection attributes");
return;
}
// now using the factory create an instance of the client
// and connect
try{
tcpClient =
ClientFactory.getTCPClientInstance(
tcpSelectionBox.getSelectedIndex());
tcpClient.connect(server, portNumber);
}catch(SocketException se){
showError(se.getMessage());
return;
}catch(IOException ioex){
showError(ioex.getMessage());
return;
}
// if we come here means we have connected
connected = true;
tcpConnectButton.setText("Disconnect");
tcpSelectionBox.setEnabled(false);
jTabbedPane1.setEnabledAt(1, false);
try {
ProtocolHandler.handleTCPProtocol(
tcpSelectionBox.getSelectedIndex(),
tcpClient,
this);
}catch (IOException io) {
showError(io.getMessage());
io.printStackTrace();
}
}//GEN-LAST:event_tcpConnectButtonActionPerformed
private void udpSelectionBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_udpSelectionBoxActionPerformed
// Add your handling code here:
JComboBox box = (JComboBox)evt.getSource();
int selectedProtocolIdx = box.getSelectedIndex();
udpCommandPanel.removeAll();
if(selectedProtocolIdx == 3){ // is TFTP
udpCommandPanel.add(tftpPanel);
}else{
udpCommandPanel.add(udpStartButton);
}
repaint();
}//GEN-LAST:event_udpSelectionBoxActionPerformed
private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton1ActionPerformed
// change working directory for FTP
if(!checkValidConnection()) return;
singleValueLabel.setText("New Directory:");
showDialog(singleValueDialog);
}//GEN-LAST:event_jRadioButton1ActionPerformed
private void tcpSelectionBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tcpSelectionBoxActionPerformed
// Add your handling code here:
// get the protocol selected
JComboBox box = (JComboBox)evt.getSource();
int selectedProtocolIdx = box.getSelectedIndex();
updateTCPPanels(selectedProtocolIdx);
}//GEN-LAST:event_tcpSelectionBoxActionPerformed
private void updateTCPPanels(int index){
// based on what protocol has been selected,
// change the available commands panel
presetPanel.removeAll();
// this local boolean indicates if the protocol currently being
// used requires a different command panel or not
boolean isPanelDifferent = false;
switch(index){
case 4: {
presetPanel.add(ftpPanel);
isPanelDifferent = true;
portNumberField.setText("21");
break;
}// ftp
case 5: {
presetPanel.add(nntpPanel);
isPanelDifferent = true;
portNumberField.setText("119");
break;
} // nntp
case 6: {
presetPanel.add(pop3Panel);
isPanelDifferent = true;
portNumberField.setText("110");
break;
}
case 7: {
presetPanel.add(smtpPanel);
isPanelDifferent = true;
portNumberField.setText("25");
break;
} // smtp
case 0: {
portNumberField.setText("19");
break;
} // chargen
case 1: {
portNumberField.setText("13");
break;
} // daytime
case 2: {
portNumberField.setText("7");
break;
} // echo
case 3: {
portNumberField.setText("79");
break;
} // finger
case 8: {
portNumberField.setText("37");
break;
} // time
case 9: {
portNumberField.setText("43");
break;
} // Whois
}
if(isPanelDifferent) {
commandBox.setEnabled(true);
} else {
commandBox.setEnabled(false);
presetPanel.add(defaultPanel);
}
repaint();
}
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
System.exit(0);
}//GEN-LAST:event_exitForm
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new ProtocolRunner().show();
}
private void showError(String msg){
JOptionPane.showMessageDialog(
this, msg, "Error", JOptionPane.ERROR_MESSAGE);
try {
if(connected) handleDisconnect();
}catch(IOException ioex) { System.err.println(ioex.getMessage()); }
}
void showDialog(JDialog dialog) {
dialog.pack();
dialog.setLocationRelativeTo(this);
dialog.setVisible(true);
}
final void handleUDPStop() throws IOException {
udpClient.close();
started = false;
udpServerResponse.setText("");
udpStartButton.setText("Start");
udpSelectionBox.setEnabled(true);
jTabbedPane1.setEnabledAt(0, true);
return;
}
final void handleDisconnect() throws IOException {
tcpClient.disconnect();
tcpServerResponse.setText("");
connected = false;
tcpConnectButton.setText("Connect");
tcpSelectionBox.setEnabled(true);
jTabbedPane1.setEnabledAt(1, true);
return;
}
final JTextArea getTCPServerResponse() {
return this.tcpServerResponse;
}
final JTextArea getUDPServerResponse() {
return this.udpServerResponse;
}
final JDialog getSingleValueDialog() {
return this.singleValueDialog;
}
final JLabel getSingleValueLabel() {
return this.singleValueLabel;
}
final JTextField getSingleValueText() {
return this.singleValueField;
}
final String getUDPRemoteServer() {
return this.udpRemoteServer;
}
// non GUI variables
// identifies if a connection is made for tcp
private boolean connected;
// identifies if a udp session is started
private boolean started;
// the remote udp server
private String udpRemoteServer;
// the current client for tcp connections
SocketClient tcpClient;
// the current client for udp connections
DatagramSocketClient udpClient;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField commandBox;
private javax.swing.JPanel defaultPanel;
private javax.swing.JTextField fromField;
private javax.swing.ButtonGroup ftpButtonGroup;
private javax.swing.JPanel ftpPanel;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel10;
private javax.swing.JPanel jPanel11;
private javax.swing.JPanel jPanel12;
private javax.swing.JPanel jPanel13;
private javax.swing.JPanel jPanel14;
private javax.swing.JPanel jPanel15;
private javax.swing.JPanel jPanel16;
private javax.swing.JPanel jPanel17;
private javax.swing.JPanel jPanel18;
private javax.swing.JPanel jPanel19;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
private javax.swing.JRadioButton jRadioButton1;
private javax.swing.JRadioButton jRadioButton10;
private javax.swing.JRadioButton jRadioButton11;
private javax.swing.JRadioButton jRadioButton12;
private javax.swing.JRadioButton jRadioButton13;
private javax.swing.JRadioButton jRadioButton14;
private javax.swing.JRadioButton jRadioButton15;
private javax.swing.JRadioButton jRadioButton16;
private javax.swing.JRadioButton jRadioButton17;
private javax.swing.JRadioButton jRadioButton18;
private javax.swing.JRadioButton jRadioButton19;
private javax.swing.JRadioButton jRadioButton2;
private javax.swing.JRadioButton jRadioButton20;
private javax.swing.JRadioButton jRadioButton21;
private javax.swing.JRadioButton jRadioButton22;
private javax.swing.JRadioButton jRadioButton23;
private javax.swing.JRadioButton jRadioButton24;
private javax.swing.JRadioButton jRadioButton25;
private javax.swing.JRadioButton jRadioButton26;
private javax.swing.JRadioButton jRadioButton3;
private javax.swing.JRadioButton jRadioButton4;
private javax.swing.JRadioButton jRadioButton5;
private javax.swing.JRadioButton jRadioButton6;
private javax.swing.JRadioButton jRadioButton7;
private javax.swing.JRadioButton jRadioButton8;
private javax.swing.JRadioButton jRadioButton9;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JDialog loginDialog;
private javax.swing.JPasswordField loginPassword;
private javax.swing.JTextField loginUsername;
private javax.swing.JTextArea messageArea;
private javax.swing.JDialog multipleValueDialog;
private javax.swing.ButtonGroup nntpButtonGroup;
private javax.swing.JPanel nntpPanel;
private javax.swing.ButtonGroup pop3ButtonGroup;
private javax.swing.JPanel pop3Panel;
private javax.swing.JTextField portNumberField;
private javax.swing.JPanel presetPanel;
private javax.swing.JTextField serverNameField;
private javax.swing.JDialog singleValueDialog;
private javax.swing.JTextField singleValueField;
private javax.swing.JLabel singleValueLabel;
private javax.swing.ButtonGroup smtpButtonGroup;
private javax.swing.JPanel smtpPanel;
private javax.swing.JTextField subjectField;
private javax.swing.JButton tcpConnectButton;
private javax.swing.JComboBox tcpSelectionBox;
private javax.swing.JTextArea tcpServerResponse;
private javax.swing.JPanel tftpPanel;
private javax.swing.ButtonGroup tftpPanelButtonGroup;
private javax.swing.JPanel udpCommandPanel;
private javax.swing.JTextField udpRemoteServerField;
private javax.swing.JComboBox udpSelectionBox;
private javax.swing.JTextArea udpServerResponse;
private javax.swing.JButton udpStartButton;
private javax.swing.JTextField variableField;
private javax.swing.JLabel variableLabel;
// End of variables declaration//GEN-END:variables
}
------------------------------------------------------------------
/*
* ClientFactory.java
*
* Created on December 31, 2003, 12:15 PM
*/
import org.apache.commons.net.*;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.pop3.POP3Client;
import org.apache.commons.net.nntp.NNTPClient;
import org.apache.commons.net.tftp.TFTPClient;
/**
* Factory for creation of singleton clients.
* @author vgoyal
*/
class ClientFactory {
public static SocketClient getTCPClientInstance(int clientType) {
switch(clientType) {
case 0: { // is chargen
if(charGenTCPClient == null) {
charGenTCPClient = new CharGenTCPClient();
}
return charGenTCPClient;
}
case 1: { // is daytime
if(daytimeTCPClient == null) {
daytimeTCPClient = new DaytimeTCPClient();
}
return daytimeTCPClient;
}
case 2: { // is echo
if(echoTCPClient == null) {
echoTCPClient = new EchoTCPClient();
}
return echoTCPClient;
}
case 3: { // is finger
if(fingerClient == null) {
fingerClient = new FingerClient();
}
return fingerClient;
}
case 4: { // is ftp
if(ftpClient == null) {
ftpClient = new FTPClient();
}
return ftpClient;
}
case 5: { // is nntp
if(nntpClient == null) {
nntpClient = new NNTPClient();
}
return nntpClient;
}
case 6: { // is pop3
if(pop3Client == null) {
pop3Client = new POP3Client();
}
return pop3Client;
}
case 7: { // is smtp
if(smtpClient == null) {
smtpClient = new SMTPClient();
}
return smtpClient;
}
case 8: { // is time
if(timeTCPClient == null) {
timeTCPClient = new TimeTCPClient();
}
return timeTCPClient;
}
case 9: { // is whois
if(whoisClient == null) {
whoisClient = new WhoisClient();
}
return whoisClient;
}
}
return null;
}
public static DatagramSocketClient getUDPClientInstance(int clientType) {
switch(clientType) {
case 0: { // is chargen
if(charGenUDPClient == null) {
charGenUDPClient = new CharGenUDPClient();
}
return charGenUDPClient;
}
case 1: { // is daytime
if(daytimeUDPClient == null) {
daytimeUDPClient = new DaytimeUDPClient();
}
return daytimeUDPClient;
}
case 2: { // is echo
if(echoUDPClient == null) {
echoUDPClient = new EchoUDPClient();
}
return echoUDPClient;
}
case 3: { // is tftp
if(tftpClient == null) {
tftpClient = new TFTPClient();
}
return tftpClient;
}
case 4: { // is time
if(timeUDPClient == null) {
timeUDPClient = new TimeUDPClient();
}
return timeUDPClient;
}
}
return null;
}
// TCP clients
private static CharGenTCPClient charGenTCPClient;
private static DaytimeTCPClient daytimeTCPClient;
private static EchoTCPClient echoTCPClient;
private static FingerClient fingerClient;
private static FTPClient ftpClient;
private static NNTPClient nntpClient;
private static POP3Client pop3Client;
private static SMTPClient smtpClient;
private static TimeTCPClient timeTCPClient;
private static WhoisClient whoisClient;
// UDP clients
private static CharGenUDPClient charGenUDPClient;
private static DaytimeUDPClient daytimeUDPClient;
private static EchoUDPClient echoUDPClient;
private static TFTPClient tftpClient;
private static TimeUDPClient timeUDPClient;
}
-----------------------------------------------------------
/*
* ProtocolHandler.java
*
* Created on December 28, 2003, 1:05 PM
*/
import org.apache.commons.net.*;
import org.apache.commons.net.ftp.*;
import org.apache.commons.net.nntp.*;
import org.apache.commons.net.pop3.*;
import org.apache.commons.net.smtp.*;
import org.apache.commons.net.tftp.*;
import java.util.Date;
import java.io.InputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* This class handles protocol commands that are either typed in or do not
* require much manual intervention.
* @author vgoyal
*/
public class ProtocolHandler {
public static void handleTCPProtocol(
int protocolId, SocketClient client,
ProtocolRunner runner, String commandString)
throws IOException {
switch(protocolId) {
case 0: { // is chargen
handleTCPChargen((CharGenTCPClient)client, runner);
return;
}
case 1: { // is daytime
handleTCPDaytime((DaytimeTCPClient)client, runner);
return;
}
case 2: { // is echo
handleTCPEcho((EchoTCPClient)client, runner);
return;
}
case 3: { // is finger
handleFinger((FingerClient)client, runner);
return;
}
case 4: { // is ftp
handleFTP((FTPClient)client, runner, commandString);
return;
}
case 5: { // is nntp
handleNNTP((NNTPClient)client, runner, commandString);
return;
}
case 6: { // is pop3
handlePOP3((POP3Client)client, runner, commandString);
return;
}
case 7: { // is smtp
handleSMTP((SMTPClient)client, runner, commandString);
return;
}
case 8: { // is Time
handleTCPTime((TimeTCPClient)client, runner);
return;
}
case 9: { // is Whois
handleWhois((WhoisClient)client, runner);
return;
}
}
}
public static void handleTCPProtocol(
int protocolId, SocketClient client, ProtocolRunner runner)
throws IOException {
handleTCPProtocol(protocolId, client, runner, null);
}
public static void handleUDPProtocol(
int protocolId, DatagramSocketClient client, ProtocolRunner runner)
throws IOException {
switch(protocolId) {
case 0: { // is chargen
handleUDPChargen((CharGenUDPClient)client, runner);
return;
}
case 1: { // is daytime
handleUDPDaytime((DaytimeUDPClient)client, runner);
return;
}
case 2: { // is echo
handleUDPEcho((EchoUDPClient)client, runner);
return;
}
case 4: { // is time
handleUDPTime((TimeUDPClient)client, runner);
return;
}
}
}
private static void handleUDPChargen(
CharGenUDPClient client, ProtocolRunner runner)
throws IOException {
int packets = 500;
while(packets-- > 0) {
client.send(InetAddress.getByName(runner.getUDPRemoteServer()));
runner.getUDPServerResponse().append(new String(client.receive()));
}
}
private static void handleUDPDaytime(
DaytimeUDPClient client, ProtocolRunner runner)
throws IOException {
runner.getUDPServerResponse().append(
client.getTime(
InetAddress.getByName(runner.getUDPRemoteServer()))
+ "\r\n");
}
private static void handleUDPEcho(
EchoUDPClient client, ProtocolRunner runner)
throws IOException {
// use the runner to get data from the user to send to echo server
runner.getSingleValueLabel().setText("Enter echo data (UDP):");
runner.showDialog(runner.getSingleValueDialog());
}
private static void handleUDPTime(
TimeUDPClient client, ProtocolRunner runner)
throws IOException {
long origTime = client.getTime(InetAddress.getByName(
runner.getUDPRemoteServer()));
runner.getUDPServerResponse().append(
"Time returned from server: " + origTime + "\r\n" +
"Converted to Date: " +
new Date(((origTime) - TimeUDPClient.SECONDS_1900_TO_1970)*1000L));
}
private static void handleTCPChargen(
CharGenTCPClient client, ProtocolRunner runner)
throws IOException {
// simply grab the resulting inputstream to show the return by the
// remote server for upto 500 lines
BufferedReader chargenInput =
new BufferedReader(new InputStreamReader(client.getInputStream()));
int lines = 500;
while(lines-- > 0) {
runner.getTCPServerResponse().append(
chargenInput.readLine() + "\r\n");
}
}
private static void handleTCPDaytime(
DaytimeTCPClient client, ProtocolRunner runner)
throws IOException {
runner.getTCPServerResponse().append(client.getTime() + "\r\n");
}
private static void handleTCPTime(
TimeTCPClient client, ProtocolRunner runner)
throws IOException {
long origTime = client.getTime();
// remember that the long time returned from the server is the
// seconds since midnight Jan 1900 and Date in Java is number of
// seconds since midnight Jan 1970. NET TCPClient provides the time
// in both formats but you cannot call them both one after another
// as the internal getDate uses getTime, but the line has already
// been closed if you have called getTime before.
runner.getTCPServerResponse().append(
"Time returned from server: " + origTime + "\r\n" +
"Converted to Date: " +
new Date(((origTime) - TimeTCPClient.SECONDS_1900_TO_1970)*1000L));
}
private static void handleTCPEcho(
EchoTCPClient client, ProtocolRunner runner)
throws IOException {
// use the runner to get data from the user to send to echo server
runner.getSingleValueLabel().setText("Enter echo data:");
runner.showDialog(runner.getSingleValueDialog());
}
private static void handleFinger(
FingerClient client, ProtocolRunner runner)
throws IOException {
// use the runner to get data from the user to send to echo server
runner.getSingleValueLabel().setText("Enter query:");
runner.showDialog(runner.getSingleValueDialog());
}
private static void handleWhois(
WhoisClient client, ProtocolRunner runner)
throws IOException {
// use the runner to get data from the user to send to echo server
runner.getSingleValueLabel().setText("Enter Whois query:");
runner.showDialog(runner.getSingleValueDialog());
}
private static void handleFTP(
FTPClient client,
ProtocolRunner runner,
String commandString)
throws IOException {
if(commandString == null) { // means just connected
// check if the server response was valid
if(!FTPReply.isPositiveCompletion(client.getReplyCode())) {
runner.handleDisconnect();
return;
}
} else { // need to handle a command
client.sendCommand(commandString);
}
runner.getTCPServerResponse().append(client.getReplyString());
}
private static void handleNNTP(
NNTPClient client,
ProtocolRunner runner,
String commandString)
throws IOException {
if(commandString == null) { // means just connected
// check if the server response was valid
if(!NNTPReply.isPositiveCompletion(client.getReplyCode())) {
runner.handleDisconnect();
return;
}
} else { // need to handle a command
client.sendCommand(commandString);
}
runner.getTCPServerResponse().append(client.getReplyString());
}
private static void handlePOP3(
POP3Client client,
ProtocolRunner runner,
String commandString)
throws IOException {
if(commandString == null) { // means just connected
return;
} else { // need to handle a command
client.sendCommand(commandString);
}
runner.getTCPServerResponse().append(client.getReplyString());
}
private static void handleSMTP(
SMTPClient client,
ProtocolRunner runner,
String commandString)
throws IOException {
if(commandString == null) { // means just connected
// check if the server response was valid
if(!SMTPReply.isPositiveCompletion(client.getReplyCode())) {
runner.handleDisconnect();
return;
}
} else { // need to handle a command
client.sendCommand(commandString);
}
runner.getTCPServerResponse().append(client.getReplyString());
}
}
public class MultiProtocolHandler {
}
/*
* Command.java
*
* Created on December 28, 2003, 3:10 PM
*/
import java.util.Vector;
import java.util.Iterator;
import java.lang.IllegalArgumentException;
/**
* A Command is a protocol independent class that implements commands.
* A Command may have arguments, like USER for FTP, or it may be standalone
* as in logout, again for ftp. A command can only be created by calling the
* Command Constructor with the name of the command. To add arguments to the
* command, use the addArgument method.
* @author vgoyal
*/
public class Command {
private String commandName;
private Vector commandArguments;
/** Creates a new instance of Command */
public Command(String commandName) {
if(commandName == null || commandName.length() == 0) {
throw new IllegalArgumentException("Invalid Command Name");
}
this.commandName = commandName;
}
public String getCommandName() {
return this.commandName;
}
public void addArgument(String argValue) {
if(argValue == null ||
argValue.length() == 0) {
throw new IllegalArgumentException("Invalid Command Argument");
}
if(commandArguments == null) commandArguments = new Vector();
commandArguments.add(argValue);
}
public int getCountCommandArguments() {
if(commandArguments == null) return 0;
else return commandArguments.size();
}
/**
* Returns space delimited String containing all arguments to this command
*/
public String getArguments() {
if(getCountCommandArguments() == 0) return "";
String returnVal = "";
Iterator itr = commandArguments.iterator();
while(itr.hasNext()){
returnVal = returnVal + " " + itr.next();
}
return returnVal;
}
}
|