private HashSet<String> returnSubfolders( Folder folder ) throws KettleException { HashSet<String> list = new HashSet<String>(); try { if ( ( folder.getType() & Folder.HOLDS_FOLDERS ) != 0 ) { Folder[] f = folder.list(); for ( int i = 0; i < f.length; i++ ) { // Search for sub folders if ( ( f[i].getType() & Folder.HOLDS_FOLDERS ) != 0 ) { list.add( f[i].getFullName() ); list.addAll( returnSubfolders( f[i] ) ); } } } } catch ( MessagingException m ) { throw new KettleException( m ); } return list; }
private void buildFoldersTree( Folder folder, TreeItem parentTreeItem, boolean topfolder ) throws MessagingException { if ( ( folder.getType() & Folder.HOLDS_FOLDERS ) != 0 ) { Folder[] f = folder.list(); for ( int i = 0; i < f.length; i++ ) { tiTree = topfolder ? new TreeItem( wTree, SWT.NONE ) : new TreeItem( parentTreeItem, SWT.NONE ); tiTree.setImage( guiresource.getImageBol() ); tiTree.setText( f[i].getName() ); // Search for sub folders if ( ( f[i].getType() & Folder.HOLDS_FOLDERS ) != 0 ) { buildFoldersTree( f[i], tiTree, false ); } } } }
if ( ( folder.getType() & Folder.HOLDS_MESSAGES ) == 0 ) { throw new KettleException( BaseMessages.getString( PKG, "MailConnection.DefaultFolderCanNotHoldMessage" ) );
@Override public int getType() throws RuntimeMessagingException { try { return delegate.getType(); } catch (MessagingException e) { throw new RuntimeMessagingException(e); } }
protected void recurseFolders(final Folder folder) { // folder can hold messages if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) { // process them } // folder can hold other folders if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) { for (final Folder subfolder : folder.list()) { // process them recursive recurseFolders(subfolder); } } }
private List<Message> getMessages(Folder folder) throws MessagingException { List<Message> ret = new ArrayList<>(); if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) { if (!folder.isOpen()) { folder.open(Folder.READ_ONLY); } Message[] messages = folder.getMessages(); Collections.addAll(ret, messages); } if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) { Folder[] f = folder.list(); for (Folder aF : f) { ret.addAll(getMessages(aF)); } } return ret; } }
public static void open(final Folder folder) throws MessagingException { if (folder != null && folder.exists() && !folder.isOpen() && (folder.getType() & Folder.HOLDS_MESSAGES) != 0) { folder.open(Folder.READ_ONLY); } }
protected void recurseFolders(final Folder folder, final Pattern pattern) throws MessagingException, IOException { if (folder != null) { if (es == null || es.isShutdown() || es.isTerminated() || Thread.currentThread().isInterrupted()) { logger.warn("Stop processing of mails due to mail source is closed"); return; } if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) { if (pattern != null && !pattern.matcher(folder.getFullName()).matches()) { logger.debug("Pattern {} does not match {}", pattern.pattern(), folder.getFullName()); return; } IMAPUtils.open(folder); try { fetch(folder); } finally { IMAPUtils.close(folder); } } if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) { for (final Folder subfolder : folder.list()) { recurseFolders(subfolder, pattern); } } } }
protected void recurseFolders(final Folder folder, final Pattern pattern) throws MessagingException, IOException { if (folder != null) { if (es == null || es.isShutdown() || es.isTerminated() || Thread.currentThread().isInterrupted()) { logger.warn("Stop processing of mails due to mail source is closed"); return; } if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) { if (pattern != null && !pattern.matcher(folder.getFullName()).matches()) { logger.debug("Pattern {} does not match {}", pattern.pattern(), folder.getFullName()); return; } IMAPUtils.open(folder); try { fetch(folder); } finally { IMAPUtils.close(folder); logger.debug("fetch {} done", folder.getFullName()); } } if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) { for (final Folder subfolder : folder.list()) { recurseFolders(subfolder, pattern); } } } }
if (rf.getType() == Folder.HOLDS_FOLDERS) { Folder[] fs = rf.list(); for (Folder f : fs) {
/** Process one folder. */ static void listFolder(FolderNode top, FolderNode folder, boolean recurse) throws Exception { if ((folder.f.getType() & Folder.HOLDS_MESSAGES) != 0) { Message[] msgs = folder.f.getMessages(); for (Message ms : msgs) { MessageNode m = new MessageNode(ms); Address from = m.m.getFrom()[0]; String fromAddress; if (from instanceof InternetAddress) fromAddress = ((InternetAddress)from).getAddress(); else fromAddress = from.toString(); top.add(new MessageNode(ms)); } } if ((folder.f.getType() & Folder.HOLDS_FOLDERS) != 0) { if (recurse) { Folder[] fs = folder.f.list(); for (Folder f : fs) { listFolder(new FolderNode(f), top, recurse); } } } }
if (top.f.getType() == Folder.HOLDS_FOLDERS) { Folder[] fs = top.f.list(); for (Folder f : fs)
@SuppressWarnings({ "rawtypes", "unchecked" }) protected void fetch(final Folder folder) throws MessagingException, IOException { if ((folder.getType() & Folder.HOLDS_MESSAGES) == 0) { logger.warn("Folder {} cannot hold messages", folder.getFullName()); return;
@SuppressWarnings({ "rawtypes", "unchecked" }) protected void fetch(final Folder folder) throws MessagingException, IOException { if ((folder.getType() & Folder.HOLDS_MESSAGES) == 0) { logger.warn("Folder {} cannot hold messages", folder.getFullName()); return;