OSDN Git Service

MOD: Error message typo.
[mdc/BetaProject.git] / src / org / jent / checksmtp / Processer.java
index a86b0de..8905ab5 100644 (file)
@@ -19,7 +19,7 @@ import java.util.ListIterator;
 import java.util.regex.Pattern;
 
 
-public class Processer implements Runnable {
+public class Processer implements Runnable, ResultNotify {
   private Socket client;
 
   //Conform status.
@@ -35,10 +35,10 @@ public class Processer implements Runnable {
   private final int R502CommandNotImplemented = 502;
 
   //SMTP command
-  private final String COMMAND_RCPT_TO = "RCPT TO:";
-  private final String COMMAND_DATA = "DATA";
-  private final String COMMAND_RESET = "RSET";
-  private final String COMMAND_TURN = "TURN";
+  private final String COMMAND_RCPT_TO = "RCPT TO:"; // NOI18N
+  private final String COMMAND_DATA = "DATA"; // NOI18N
+  private final String COMMAND_RESET = "RSET"; // NOI18N
+  private final String COMMAND_TURN = "TURN"; // NOI18N
 
   //private final String COMMAND_NOOP = "NOOP";
   //private final String COMAMND_QUIT = "QUIT";
@@ -57,6 +57,8 @@ public class Processer implements Runnable {
     BufferedReader clientReader;
     PrintWriter clientWriter;
 
+    Socket server = null;
+      
     try {
       //Connect to SMTP Server host 
       String servername = ApplicationProperties.getSmtpServerHost();
@@ -65,7 +67,7 @@ public class Processer implements Runnable {
       int serverport = ApplicationProperties.getSmtpServerPort();
 
       //Connection to true SMTP server.
-      Socket server = new Socket(servername, serverport);
+      server = new Socket(servername, serverport);
       serverInput = server.getInputStream();
       serverOutput = server.getOutputStream();
       clientInput = client.getInputStream();
@@ -75,12 +77,12 @@ public class Processer implements Runnable {
                   server.getInputStream()));
       serverWriter = new PrintWriter(new SmtpBufferedWriter(
                   new OutputStreamWriter(server.getOutputStream(),
-                      "ISO-8859-1")), true);
+                      "ISO-8859-1")), true); // NOI18N
       clientReader = new BufferedReader(new InputStreamReader(
                   client.getInputStream()));
       clientWriter = new PrintWriter(new SmtpBufferedWriter(
                   new OutputStreamWriter(client.getOutputStream(),
-                      "ISO-8859-1")), true);
+                      "ISO-8859-1")), true); // NOI18N
 
       smtpStart(serverReader, clientWriter, clientReader, serverWriter);
 
@@ -92,10 +94,34 @@ public class Processer implements Runnable {
       //forServerThread.start();
       ////Use this ThreadforClientThread.run();
       server.close();
+      server = null;
       client.close();
+      client = null;
     } catch (IOException e) {
-      System.err.println("Execption occurred in Processer.");
-      e.printStackTrace();
+      String errorMessage = java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Execption_occurred_at_starting_SMTP_thread.");
+      System.err.println(errorMessage);
+      new MessageDialogUI(errorMessage, e, MessageDialogUI.ERROR_MODE);
+    } catch (RuntimeException runEx) {
+      new MessageDialogUI(java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Runtime_Exception_occurred_in_SMTP_parse"),
+              runEx, MessageDialogUI.ERROR_MODE);
+    } finally {
+      //for failsafe Socket close.
+      if (server != null) { 
+        try { 
+          server.close();
+        } catch (IOException ioEx ) {
+          //IGNORE close Exception
+        }
+      }
+      if (client != null) { 
+        try {
+          client.close();
+        } catch (IOException ioEx ) {
+          //IGNORE close Exception
+        }
+      }
+      //LDAP Connection close.
+      LDAPSearch.close();
     }
   }
 
@@ -177,7 +203,7 @@ public class Processer implements Runnable {
             line = clientReader.readLine();
             serverWriter.println(line);
 
-            if (line.equals(".")) {
+            if (line.equals(".")) { // NOI18N
               break; //end of mail dara.
             }
           }
@@ -185,6 +211,12 @@ public class Processer implements Runnable {
           while (true) {
             line = clientReader.readLine();
 
+            if (line == null) {
+              //Finish client stream.
+              System.err.println("Client disconnected.");
+              break; //force disconnect.
+            }
+
             if (isRcptTo(line)) {
               //stored To: address.
               toList.add(formatToAddress(line));
@@ -202,7 +234,7 @@ public class Processer implements Runnable {
               }
 
               //checkout toList
-              new ToListDialog(this, toList);
+              new ToListUI(this, toList);
 
               while (result == RESULT_UNKNOWN) {
                 try {
@@ -210,12 +242,12 @@ public class Processer implements Runnable {
                         wait();
                     }
                 } catch (InterruptedException e) {
-                    System.err.println("Dialg wait interrupted");
+                    System.err.println("Confirm dialog wait interrupted");
                     e.printStackTrace();
                 }
               }
 
-              if (result == RESULT_NG) {
+              if (result != RESULT_OK ) {
                 System.out.println("CANCEL sending mail.");
                 serverWriter.println(COMMAND_RESET);
                 line = serverReader.readLine(); //Server MUST retrun "250 OK"
@@ -229,12 +261,20 @@ public class Processer implements Runnable {
             break; // client read while(true);
           }
 
+          if (line == null ) {
+            break;
+          }
           serverWriter.println(line);
           System.out.println(line);
         }
       }
     } catch (IOException e) {
-      e.printStackTrace();
+      String errorMessage = java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Error_occurred_in_SMTP_parse.");
+      System.err.println(errorMessage);
+      new MessageDialogUI(errorMessage, e, MessageDialogUI.ERROR_MODE);
+    } catch (RuntimeException runEx) {
+      new MessageDialogUI(java.util.ResourceBundle.getBundle("org/jent/checksmtp/Bundle").getString("Processer.error.Runtime_Exception_occurred_in_SMTP_parse"),
+              runEx, MessageDialogUI.ERROR_MODE);
     }
 
     System.out.println("End of Session.");
@@ -245,18 +285,18 @@ public class Processer implements Runnable {
 
     //Splitting Mail address.
     String str = line.substring(COMMAND_RCPT_TO.length() + 1);
-    Pattern pattern = Pattern.compile("[< >]+");
+    Pattern pattern = Pattern.compile("[< >]+"); // NOI18N
     String[] address = pattern.split(str); // 0<1>2 3
     int i;
 
     for (i = 0; i < address.length; i++) {
-      if (!address[i].equals("")) {
+      if (!address[i].equals("")) { // NOI18N
         break;
       }
     }
 
     //Search LDAP
-    str = address[i] + " " + LDAPSearch.search(address[i]);
+    str = address[i] + " " + LDAPSearch.search(address[i]); // NOI18N
     return str;
   }
 }