[tuxdroid-svn] r5603 - software_suite_v3/software/plugin/plugin-email/trunk/plugin-email/src/net/ka
Status: Beta
Brought to you by:
ks156
|
From: remi <c2m...@c2...> - 2009-10-06 12:29:55
|
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
;
|