package pkg.crawler.data.conn; import java.util.Properties; import java.util.concurrent.ScheduledThreadPoolExecutor; import javax.mail.Folder; import javax.mail.MessagingException; import javax.mail.Session; import pkg.crawler.tread.CrawlerThread; import com.sun.mail.imap.ACL; import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPStore; import com.sun.mail.imap.Rights; import com.sun.mail.imap.Rights.Right; public class Crawler{ private String host; private String user; private String password; private String mbox; private String hostSolr; private ACL acl; public Crawler(String host, String password, String hostSolr) { this.host = host; this.user = "expresso-admin"; this.password = password; this.mbox = "user"; this.hostSolr = hostSolr; //Cria a ACL a ser configurada acl = new ACL("expresso-admin"); //Define direito de leitura Rights rights = new Rights(); rights.add(Right.READ); //Configura direito de leitura para a ACL acl.setRights(rights); } public void run() { int iAux0 = 0; while (iAux0 == 0) { iAux0 = 1; //Inicializando as propriedades default da máquina para conexão //com o servidor IMAP Properties props = System.getProperties(); Session session = Session.getInstance(props, null); IMAPStore store = new IMAPStore(session, null); try { //Conectando com o servidor IMAP store.connect(host, user, password); //Definindo a pasta base a ser usada IMAPFolder imapFolder = (IMAPFolder)store.getFolder(mbox); ScheduledThreadPoolExecutor doAll = new ScheduledThreadPoolExecutor(4); //Faz a iteração entre os usuários/pastas do usuário for (Folder fINBOXAux : imapFolder.list()) { System.out.println(fINBOXAux.getFullName()); try { CrawlerThread crawlerThread = new CrawlerThread((IMAPFolder)fINBOXAux, hostSolr); doAll.execute(crawlerThread); } catch (Exception e) { continue; } } } catch (MessagingException e) { System.out.println(e.getMessage()); e.printStackTrace(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } } }