Author: sebb
Date: Wed Feb  8 14:09:10 2017
New Revision: 1782174

URL: http://svn.apache.org/viewvc?rev=1782174&view=rev
Log:
Split into smaller methods. Show sent and received counts

Modified:
    commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java

Modified: commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java
URL: 
http://svn.apache.org/viewvc/commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java?rev=1782174&r1=1782173&r2=1782174&view=diff
==============================================================================
--- commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java 
(original)
+++ commons/proper/net/trunk/src/main/java/examples/ftp/TFTPExample.java Wed 
Feb  8 14:09:10 2017
@@ -17,6 +17,7 @@
 
 package examples.ftp;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -108,150 +109,161 @@ public final class TFTPExample
         // We want to timeout if a response takes longer than 60 seconds
         tftp.setDefaultTimeout(60000);
 
-        // Open local socket
+        // We haven't closed the local file yet.
+        closed = false;
+
+        // If we're receiving a file, receive, otherwise send.
+        if (receiveFile)
+        {
+            closed = receive(transferMode, hostname, localFilename, 
remoteFilename, tftp);
+        } else {
+            // We're sending a file
+            closed = send(transferMode, hostname, localFilename, 
remoteFilename, tftp);
+        }
+
+        System.out.println("Recd: "+tftp.getTotalBytesReceived()+" Sent: 
"+tftp.getTotalBytesSent());
+
+        if (!closed) {
+            System.out.println("Failed");
+            System.exit(1);
+        }
+
+        System.out.println("OK");
+    }
+
+    private static boolean send(int transferMode, String hostname, String 
localFilename, String remoteFilename,
+            TFTPClient tftp) {
+        boolean closed;
+        FileInputStream input = null;
+
+        // Try to open local file for reading
         try
         {
-            tftp.open();
+            input = new FileInputStream(localFilename);
         }
-        catch (SocketException e)
+        catch (IOException e)
         {
-            System.err.println("Error: could not open local UDP socket.");
+            tftp.close();
+            System.err.println("Error: could not open local file for 
reading.");
             System.err.println(e.getMessage());
             System.exit(1);
         }
 
-        // We haven't closed the local file yet.
-        closed = false;
+        open(tftp);
 
-        // If we're receiving a file, receive, otherwise send.
-        if (receiveFile)
+        // Try to send local file via TFTP
+        try
+        {
+            tftp.sendFile(remoteFilename, transferMode, input, hostname);
+        }
+        catch (UnknownHostException e)
+        {
+            System.err.println("Error: could not resolve hostname.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+        catch (IOException e)
+        {
+            System.err.println("Error: I/O exception occurred while sending 
file.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+        finally
         {
-            FileOutputStream output = null;
-            File file;
+            // Close local socket and input file
+            closed = close(tftp, input);
+        }
 
-            file = new File(localFilename);
+        return closed;
+    }
 
-            // If file exists, don't overwrite it.
-            if (file.exists())
-            {
-                System.err.println("Error: " + localFilename + " already 
exists.");
-                System.exit(1);
-            }
+    private static boolean receive(int transferMode, String hostname, String 
localFilename, String remoteFilename,
+            TFTPClient tftp) {
+        boolean closed;
+        FileOutputStream output = null;
+        File file;
 
-            // Try to open local file for writing
-            try
-            {
-                output = new FileOutputStream(file);
-            }
-            catch (IOException e)
-            {
-                tftp.close();
-                System.err.println("Error: could not open local file for 
writing.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
+        file = new File(localFilename);
 
-            // Try to receive remote file via TFTP
-            try
-            {
-                tftp.receiveFile(remoteFilename, transferMode, output, 
hostname);
-            }
-            catch (UnknownHostException e)
-            {
-                System.err.println("Error: could not resolve hostname.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
-            catch (IOException e)
-            {
-                System.err.println(
-                    "Error: I/O exception occurred while receiving file.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
-            finally
-            {
-                // Close local socket and output file
-                tftp.close();
-                try
-                {
-                    if (output != null) {
-                        output.close();
-                    }
-                    closed = true;
-                }
-                catch (IOException e)
-                {
-                    closed = false;
-                    System.err.println("Error: error closing file.");
-                    System.err.println(e.getMessage());
-                }
-            }
+        // If file exists, don't overwrite it.
+        if (file.exists())
+        {
+            System.err.println("Error: " + localFilename + " already exists.");
+            System.exit(1);
+        }
 
-            if (!closed) {
-                System.exit(1);
-            }
+        // Try to open local file for writing
+        try
+        {
+            output = new FileOutputStream(file);
+        }
+        catch (IOException e)
+        {
+            tftp.close();
+            System.err.println("Error: could not open local file for 
writing.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
 
-        } else {
-            // We're sending a file
-            FileInputStream input = null;
+        open(tftp);
 
-            // Try to open local file for reading
-            try
-            {
-                input = new FileInputStream(localFilename);
-            }
-            catch (IOException e)
-            {
-                tftp.close();
-                System.err.println("Error: could not open local file for 
reading.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
+        // Try to receive remote file via TFTP
+        try
+        {
+            tftp.receiveFile(remoteFilename, transferMode, output, hostname);
+        }
+        catch (UnknownHostException e)
+        {
+            System.err.println("Error: could not resolve hostname.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+        catch (IOException e)
+        {
+            System.err.println(
+                "Error: I/O exception occurred while receiving file.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
+        finally
+        {
+            // Close local socket and output file
+            closed = close(tftp, output);
+        }
 
-            // Try to send local file via TFTP
-            try
-            {
-                tftp.sendFile(remoteFilename, transferMode, input, hostname);
-            }
-            catch (UnknownHostException e)
-            {
-                System.err.println("Error: could not resolve hostname.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
-            catch (IOException e)
-            {
-                System.err.println(
-                    "Error: I/O exception occurred while sending file.");
-                System.err.println(e.getMessage());
-                System.exit(1);
-            }
-            finally
-            {
-                // Close local socket and input file
-                tftp.close();
-                try
-                {
-                    if (input != null) {
-                        input.close();
-                    }
-                    closed = true;
-                }
-                catch (IOException e)
-                {
-                    closed = false;
-                    System.err.println("Error: error closing file.");
-                    System.err.println(e.getMessage());
-                }
-            }
+        return closed;
+    }
 
-            if (!closed) {
-                System.exit(1);
+    private static boolean close(TFTPClient tftp, Closeable output) {
+        boolean closed;
+        tftp.close();
+        try
+        {
+            if (output != null) {
+                output.close();
             }
-
+            closed = true;
         }
+        catch (IOException e)
+        {
+            closed = false;
+            System.err.println("Error: error closing file.");
+            System.err.println(e.getMessage());
+        }
+        return closed;
+    }
 
+    private static void open(TFTPClient tftp) {
+        try
+        {
+            tftp.open();
+        }
+        catch (SocketException e)
+        {
+            System.err.println("Error: could not open local UDP socket.");
+            System.err.println(e.getMessage());
+            System.exit(1);
+        }
     }
 
 }


Reply via email to