Author: remi
Date: 2009-10-06 14:29:36 +0200 (Tue, 06 Oct 2009)
New Revision: 5603

Modified:
   
software_suite_v3/software/plugin/plugin-email/trunk/plugin-email/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
Log:
* Applied same changes than gmail plugin

Modified: 
software_suite_v3/software/plugin/plugin-email/trunk/plugin-email/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
===================================================================
--- 
software_suite_v3/software/plugin/plugin-email/trunk/plugin-email/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
 2009-10-06 12:13:32 UTC (rev 5602)
+++ 
software_suite_v3/software/plugin/plugin-email/trunk/plugin-email/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
 2009-10-06 12:29:36 UTC (rev 5603)
@@ -50,9 +50,9 @@
     {
                new MailPlugin().boot(args, new Configuration());
        }
-    
+
     /**
-        * 
+        *
         */
        @Override
        public void start() throws Exception
@@ -70,16 +70,18 @@
             run();
         }
        }
-    
-       
+
+
     /**
         * @throws MessagingException
         * @throws IOException
         * @throws ClassNotFoundException
         */
-       public void check() throws MessagingException, IOException, 
ClassNotFoundException
+       public void check() throws MessagingException, IOException, 
ClassNotFoundException, Exception
     {
+        boolean notify = false;
                Message messages[] = connectToMailBox();
+
                if (messages == null)
                {
                        throwResult(false);
@@ -89,63 +91,81 @@
                State stateAlert = readState(State.class, sessionId + "ALERT");
         /* Check if you have a new message */
                boolean newMessageAlert = false;
-               for (int i = 0; i < messages.length; i++)
+               for (int i = messages.length - 1; i >= 0; i--)
                {
                        if (!messages[i].getFlags().contains(Flag.SEEN))
                        {
-                               if 
(!stateAlert.getLastMessages().contains(messages[i].getSubject()))
-                               {
-                                       newMessageAlert = true;
-                                       break;
-                               }
+                String subject = messages[i].getSubject();
+                if (subject != null)
+                {
+                    if (!stateAlert.getLastMessages().contains(subject))
+                    {
+                        newMessageAlert = true;
+                        break;
+                    }
+                }
                        }
                }
                /* If new message */
                if (newMessageAlert)
                {
-                       Vector<Boolean> ver = new Vector<Boolean>();
-                       boolean notify = false;
-                       //Check for allowed messages.
-                       for(int i = 0; i < messages.length; i++)
+                       /* Check for allowed messages. */
+                       for(int i = messages.length - 1; i >= 0; i--)
                        {
-                               String subject = messages[i].getSubject();
-                               String mail = 
((InternetAddress)messages[i].getFrom()[0]).getAddress();
-                               boolean mFilter = this.filterSender(mail);
-                               boolean sFilter = this.filterSubject(subject);
-                               if(mFilter)
-                               {
-                                       ver.add(new Boolean(false));
-                               }
-                               else if(sFilter)
-                               {
-                                       ver.add(new Boolean(false));
-                               }
-                               
stateAlert.getLastMessages().add(messages[i].getSubject());
-                       }
-                       for(Boolean bool : ver)
-                       {
-                               if(!bool.booleanValue())
+                               String subject;
+                               String mail;
+                boolean seen;
+
+                try
                 {
-                                       notify = true;
-                    break;
+                    /* Get mail data */
+                    subject = messages[i].getSubject();
+                    mail = 
((InternetAddress)messages[i].getFrom()[0]).getAddress();
+                    seen = messages[i].getFlags().contains(Flag.SEEN);
+                    /* Pass if mail is already seen */
+                    if (seen)
+                    {
+                        continue;
+                    }
+                    /* Pass if empty subject */
+                    if (subject == null)
+                    {
+                        continue;
+                    }
+                    /* Check if the mail already read */
+                    for (int j = 0; j < stateAlert.getLastMessages().size(); 
j++)
+                    {
+                        if 
(!subject.equals(stateAlert.getLastMessages().get(j)))
+                        {
+                            notify = true;
+                            break;
+                        }
+                    }
+                    /* Referencing the current mail */
+                    stateAlert.getLastMessages().add(subject);
                 }
+                catch (Exception e)
+                {
+                    /* Prevent unhandled errors */
+                    ;
+                }
                        }
-                       if(notify)
-                       {
-                throwResult(true);
-                throwMessage("You have a new message.");
-                       }
-            else
-            {
-                throwResult(false);
-            }
                }
+        if(notify)
+        {
+            throwResult(true);
+            throwMessage("You have a new message.");
+        }
+        else
+        {
+            throwResult(false);
+        }
                /* Save the current referenced mails */
                writeState(stateAlert, sessionId + "ALERT");
        }
-       
+
        /**
-        * 
+        *
         * @throws MessagingException
         * @throws IOException
         * @throws ClassNotFoundException
@@ -159,9 +179,9 @@
                }
         String sessionId = configuration().getHost() + "_" + 
configuration().getPort() + "_" + configuration().getUser();
                State stateRun = readState(State.class, sessionId + "RUN");
-        /* Check if you have a new message */
+        /* Check for new message */
                boolean newMessageRun = false;
-        for (int i = 0; i < messages.length; i++)
+        for (int i = messages.length - 1; i >= 0; i--)
         {
                        if (!messages[i].getFlags().contains(Flag.SEEN))
                        {
@@ -172,80 +192,92 @@
                                }
                        }
                }
-        boolean notifyNoNewMail = true;
-               /* If new message */
+               /* If new message found */
                if (newMessageRun)
                {
                        int mailCounter = 0;
-                       
+            boolean notifyNoNewMail = true;
                        /* For all unread mails */
-                       for (int i = 0; i < messages.length; i++)
+                       for (int i = messages.length - 1; i >= 0; i--)
                        {
-                               /* Get the subject and the sender of the 
current mail */
-                               String subject = messages[i].getSubject();
-                               String sender = ((InternetAddress) 
messages[i].getFrom()[0]).getPersonal();
-                               String mail = 
((InternetAddress)messages[i].getFrom()[0]).getAddress();
-                               if (sender == null)
-                               {
-                                       sender = ((InternetAddress) 
messages[i].getFrom()[0]).getAddress();
-                               }
-                               /* Filtering the mail address */
-                               if (sender.contains("<"))
-                               {
-                                       sender = sender.substring(0, 
sender.indexOf("<"));
-                               }
-                               /* Filtering the mail subject */
-                               subject = subject.replace("*", " ");
-                               subject = subject.replace("_", " ");
-                               subject = subject.replace("{", " ");
-                               subject = subject.replace("}", " ");
-                               subject = subject.replace("[", " ");
-                               subject = subject.replace("]", " ");
-                               subject = subject.replace("/", " ");
-                               subject = subject.replace("\\", " ");
-                               subject = subject.replace("  ", " ");
-                               /* If the mail is marked as not seen */
-                               if (!messages[i].getFlags().contains(Flag.SEEN))
-                               {
-                                       boolean mailAlreadyRead = false;
-                                       
if(this.configuration().isSenderFiltered())
-                                       {
-                                               //Set sender filter.
-                                               mailAlreadyRead = 
filterSender(mail);
-                                       }
-                                       else 
if(this.configuration().isSubjectFiltered())
-                                       {
-                                               //Set subject filter.
-                                               mailAlreadyRead = 
filterSubject(subject);
-                                       }
-                                       else
-                                       {
-                                               /* Check if the mail is not 
already read */
-                                               for (int j = 0; j < 
stateRun.getLastMessages().size(); j++)
-                                               {
-                                                       if 
(subject.equals(stateRun.getLastMessages().get(j)))
-                                                       {
-                                                               mailAlreadyRead 
= true;
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                                       /* If the mail is not already read */
-                                       if (!mailAlreadyRead)
-                                       {
-                                               notifyNoNewMail = false;
-                                               /* Read max 5 mails */
-                                               mailCounter++;
-                                               if (mailCounter <= 5)
-                                               {
-                                                       throwMessage("Mail sent 
by {0}", sender);
-                                                       throwMessage("The 
message subject is : {0}", subject);
-                                               }
-                                               /* Referencing the current mail 
*/
-                                               
stateRun.getLastMessages().add(messages[i].getSubject());
+                String subject;
+                String filteredSubject;
+                String sender;
+                String senderPersonal;
+                String senderAddress;
+                boolean seen;
+                boolean mailAlreadyRead;
 
-                                       }
-                               }
+                try
+                {
+                    /* Get current mail data */
+                    subject = messages[i].getSubject();
+                    senderPersonal = ((InternetAddress) 
messages[i].getFrom()[0]).getPersonal();
+                    senderAddress = 
((InternetAddress)messages[i].getFrom()[0]).getAddress();
+                    seen = messages[i].getFlags().contains(Flag.SEEN);
+                    /* Pass if mail is already seen */
+                    if (seen)
+                    {
+                        continue;
+                    }
+                    /* Pass if subject is empty */
+                    if (subject == null)
+                    {
+                        continue;
+                    }
+                    /* Filtering the mail address */
+                    if (senderPersonal == null)
+                    {
+                        sender = senderAddress;
+                    }
+                    else
+                    {
+                        sender = senderPersonal;
+                    }
+                    if (sender.contains("<"))
+                    {
+                        sender = sender.substring(0, sender.indexOf("<"));
+                    }
+                    /* Filtering the mail subject */
+                    filteredSubject = subject.replace("*", " ");
+                    filteredSubject = filteredSubject.replace("_", " ");
+                    filteredSubject = filteredSubject.replace("{", " ");
+                    filteredSubject = filteredSubject.replace("}", " ");
+                    filteredSubject = filteredSubject.replace("[", " ");
+                    filteredSubject = filteredSubject.replace("]", " ");
+                    filteredSubject = filteredSubject.replace("/", " ");
+                    filteredSubject = filteredSubject.replace("\\", " ");
+                    filteredSubject = filteredSubject.replace("  ", " ");
+                    mailAlreadyRead = false;
+                    /* Check if the mail has already be read */
+                    for (int j = 0; j < stateRun.getLastMessages().size(); j++)
+                    {
+                        if 
(filteredSubject.equals(stateRun.getLastMessages().get(j)))
+                        {
+                            mailAlreadyRead = true;
+                            break;
+                        }
+                    }
+                    /* If the mail is not already read */
+                    if (!mailAlreadyRead)
+                    {
+                        notifyNoNewMail = false;
+                        /* Read max 5 mails */
+                        mailCounter++;
+                        if (mailCounter <= 5)
+                        {
+                            throwMessage("Mail sent by {0}", sender);
+                            throwMessage("The message subject is : {0}", 
filteredSubject);
+                        }
+                        /* Referencing the current mail */
+                        stateRun.getLastMessages().add(filteredSubject);
+                    }
+                }
+                catch (Exception e)
+                {
+                    /* Prevent unhandled errors */
+                    ;
+                }
                        }
                        if(notifyNoNewMail)
                        {
@@ -260,9 +292,9 @@
                /* Save the current referenced mails */
                writeState(stateRun, sessionId + "RUN");
        }
-    
+
        /**
-        * 
+        *
         * @return
         * @throws MessagingException
         * @throws IOException
@@ -348,7 +380,7 @@
                }
                return false;
        }
-       
+
        /**
         * Return true if subject is not allowed.
         * @param subject
@@ -375,14 +407,14 @@
        }
 
        @Override
-       protected void onPluginEvent(String arg0, String[] arg1) throws 
Throwable 
+       protected void onPluginEvent(String arg0, String[] arg1) throws 
Throwable
        {
                // TODO Auto-generated method stub
                ;
        }
 
        @Override
-       protected void onPluginStop() throws Throwable 
+       protected void onPluginStop() throws Throwable
        {
                // TODO Auto-generated method stub
                ;


------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tux-droid-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tux-droid-svn

Reply via email to