Author: remi
Date: 2009-10-06 14:13:32 +0200 (Tue, 06 Oct 2009)
New Revision: 5602

Modified:
   
software_suite_v3/software/plugin/plugin-gmail/trunk/plugin-gmail/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
Log:
* Fixed :
 - Check email from new->old instead of old->new
 - Disabled senders and subjects filters
 - Case of mail without subject
 - Bad condition for email seen
 - History storage

Modified: 
software_suite_v3/software/plugin/plugin-gmail/trunk/plugin-gmail/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
===================================================================
--- 
software_suite_v3/software/plugin/plugin-gmail/trunk/plugin-gmail/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
 2009-10-06 10:04:24 UTC (rev 5601)
+++ 
software_suite_v3/software/plugin/plugin-gmail/trunk/plugin-gmail/src/net/karmaLab/tuxDroid/plugins/MailPlugin.java
 2009-10-06 12:13:32 UTC (rev 5602)
@@ -86,8 +86,9 @@
         */
        public void check() throws MessagingException, IOException, 
ClassNotFoundException, Exception
     {
+        boolean notify = false;
+               Message messages[] = connectToMailBox();
 
-               Message messages[] = connectToMailBox();
                if (messages == null)
                {
                        throwResult(false);
@@ -97,57 +98,75 @@
                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");
        }
@@ -167,9 +186,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))
                        {
@@ -180,80 +199,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)
                        {


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