// Path: src/conf/DefaultUserConf.java
// public class DefaultUserConf
// {
// 	public static final String NAME         = "";
//     public static final String EMAIL        = "";
//     public static final String PHONE_NUMBER = "";
//     public static final String PASSWORD     = "";
// }
// 
// Path: src/log/Logger.java
// public class Logger
// {
//     private static final String    infoKey  = "INFO";
//     private static final String    errorKey = "ERROR";
// 
//     private static final Printer   out      = new Printer();
// 
//     public static SimpleDateFormat sdf      = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// 
//     private static String getCallingClass()
//     {
//         final Throwable t = new Throwable();
//         final StackTraceElement methodCaller = t.getStackTrace()[3];
//         String filename = methodCaller.getFileName();
//         return filename.substring(0, filename.lastIndexOf('.'));
//     }
// 
//     private static String baseLogMessage(String key, String msg)
//     {
//         return sdf.format(new Date()) + " [" + key + "] [" + getCallingClass() + "] " + msg;
//     }
// 
//     public static void traceINFO(String msg)
//     {
//         out.println(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoNewLine(String msg)
//     {
//         out.print(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoBaseLine(String msg)
//     {
//         out.println(msg);
//     }
// 
//     public static void traceERROR(String msg)
//     {
//         out.println(baseLogMessage(errorKey, msg));
//     }
// 
//     public static void traceINFO(int level, long[] array)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         sBuilder.append(level + " : ");
//         for (int i = 0; i < array.length; i++)
//         {
//             if (i == array.length - 1)
//             {
// 
//                 sBuilder.append(array[i]);
//             }
//             else
//             {
//                 sBuilder.append(array[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceINFO(String... msgs)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         for (int i = 0; i < msgs.length; i++)
//         {
//             if (i == msgs.length - 1)
//             {
// 
//                 sBuilder.append(msgs[i]);
//             }
//             else
//             {
//                 sBuilder.append(msgs[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceERROR(Exception e)
//     {
//         if (e != null)
//         {
//             out.println(baseLogMessage(errorKey, e.getMessage()));
//             e.printStackTrace(System.out);
//         }
//     }
// 
//     public static void endLogging()
//     {
//         out.close();
//     }
// }
// 
// Path: src/mail/processing/MessageProcess.java
// public interface MessageProcess
// {
//     void treatMessage(Message message) throws Exception;
// }


import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;
import conf.DefaultUserConf;
import log.Logger;
import mail.processing.MessageProcess;

			props.setProperty("mail.smtp.host", "smtp.gmail.com");
			props.setProperty("mail.smtp.socketFactory.port", "465");
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			props.setProperty("mail.smtp.auth", "true");
			props.setProperty("mail.smtp.port", "465");
			
			Session session = Session.getDefaultInstance(props, null);
			Store store = session.getStore("imaps");
			store.connect("smtp.gmail.com", DefaultUserConf.EMAIL,
					DefaultUserConf.PASSWORD);

			Folder inbox = store.getFolder("Inbox");
			inbox.open(Folder.READ_WRITE);

			// Get directory
			Flags seen = new Flags(Flags.Flag.SEEN);
			FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
			Message messages[] = inbox.search(unseenFlagTerm);

			for (int i = 0; i < messages.length; i++) {
				f.treatMessage(messages[i]);
			}

			// Close connection
			inbox.close(true);
			store.close();

			return true;
		} catch (Exception e) {
			Logger.traceERROR(e);

// Path: src/conf/DefaultUserConf.java
// public class DefaultUserConf
// {
// 	public static final String NAME         = "";
//     public static final String EMAIL        = "";
//     public static final String PHONE_NUMBER = "";
//     public static final String PASSWORD     = "";
// }
// 
// Path: src/log/Logger.java
// public class Logger
// {
//     private static final String    infoKey  = "INFO";
//     private static final String    errorKey = "ERROR";
// 
//     private static final Printer   out      = new Printer();
// 
//     public static SimpleDateFormat sdf      = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
// 
//     private static String getCallingClass()
//     {
//         final Throwable t = new Throwable();
//         final StackTraceElement methodCaller = t.getStackTrace()[3];
//         String filename = methodCaller.getFileName();
//         return filename.substring(0, filename.lastIndexOf('.'));
//     }
// 
//     private static String baseLogMessage(String key, String msg)
//     {
//         return sdf.format(new Date()) + " [" + key + "] [" + getCallingClass() + "] " + msg;
//     }
// 
//     public static void traceINFO(String msg)
//     {
//         out.println(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoNewLine(String msg)
//     {
//         out.print(baseLogMessage(infoKey, msg));
//     }
// 
//     public static void traceINFO_NoBaseLine(String msg)
//     {
//         out.println(msg);
//     }
// 
//     public static void traceERROR(String msg)
//     {
//         out.println(baseLogMessage(errorKey, msg));
//     }
// 
//     public static void traceINFO(int level, long[] array)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         sBuilder.append(level + " : ");
//         for (int i = 0; i < array.length; i++)
//         {
//             if (i == array.length - 1)
//             {
// 
//                 sBuilder.append(array[i]);
//             }
//             else
//             {
//                 sBuilder.append(array[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceINFO(String... msgs)
//     {
//         StringBuilder sBuilder = new StringBuilder();
//         for (int i = 0; i < msgs.length; i++)
//         {
//             if (i == msgs.length - 1)
//             {
// 
//                 sBuilder.append(msgs[i]);
//             }
//             else
//             {
//                 sBuilder.append(msgs[i] + ", ");
//             }
//         }
//         traceINFO(sBuilder.toString());
//     }
// 
//     public static void traceERROR(Exception e)
//     {
//         if (e != null)
//         {
//             out.println(baseLogMessage(errorKey, e.getMessage()));
//             e.printStackTrace(System.out);
//         }
//     }
// 
//     public static void endLogging()
//     {
//         out.close();
//     }
// }
// 
// Path: src/mail/processing/MessageProcess.java
// public interface MessageProcess
// {
//     void treatMessage(Message message) throws Exception;
// }


// Path: src/mail/MailManager.java
import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;
import conf.DefaultUserConf;
import log.Logger;
import mail.processing.MessageProcess;

			props.setProperty("mail.smtp.host", "smtp.gmail.com");
			props.setProperty("mail.smtp.socketFactory.port", "465");
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
			props.setProperty("mail.smtp.auth", "true");
			props.setProperty("mail.smtp.port", "465");
			
			Session session = Session.getDefaultInstance(props, null);
			Store store = session.getStore("imaps");
			store.connect("smtp.gmail.com", DefaultUserConf.EMAIL,
					DefaultUserConf.PASSWORD);

			Folder inbox = store.getFolder("Inbox");
			inbox.open(Folder.READ_WRITE);

			// Get directory
			Flags seen = new Flags(Flags.Flag.SEEN);
			FlagTerm unseenFlagTerm = new FlagTerm(seen, false);
			Message messages[] = inbox.search(unseenFlagTerm);

			for (int i = 0; i < messages.length; i++) {
				f.treatMessage(messages[i]);
			}

			// Close connection
			inbox.close(true);
			store.close();

			return true;
		} catch (Exception e) {
			Logger.traceERROR(e);

			Logger.traceERROR("Attempts : " + attempts + " / " + MAX_ATTEMPS);
