Mega Code Archive

 
Categories / Java / Email
 

List information about folders

/*  * @(#)folderlist.java  1.30 05/04/10  *  * Copyright 1996-2005 Sun Microsystems, Inc. All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *   * - Redistributions of source code must retain the above copyright  *   notice, this list of conditions and the following disclaimer.  *   * - Redistribution in binary form must reproduce the above copyright  *   notice, this list of conditions and the following disclaimer in the  *   documentation and/or other materials provided with the distribution.  *   * Neither the name of Sun Microsystems, Inc. or the names of contributors  * may be used to endorse or promote products derived from this software  * without specific prior written permission.  *   * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND  * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES  * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION  * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE  * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,  * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *   * You acknowledge that Software is not designed, licensed or intended  * for use in the design, construction, operation or maintenance of any  * nuclear facility.  */ import java.util.Properties; import javax.mail.Folder; import javax.mail.Session; import javax.mail.Store; import javax.mail.URLName; import com.sun.mail.imap.IMAPFolder; /**  * Demo app that exercises the Message interfaces. List information about  * folders.  *   * @author John Mani  * @author Bill Shannon  */ public class MainClass {   static String protocol = null;   static String host = null;   static String user = null;   static String password = null;   static String url = null;   static String root = null;   static String pattern = "%";   static boolean recursive = false;   static boolean verbose = false;   static boolean debug = false;   public static void main(String argv[]) throws Exception {     int optind;     for (optind = 0; optind < argv.length; optind++) {       if (argv[optind].equals("-T")) {         protocol = argv[++optind];       } else if (argv[optind].equals("-H")) {         host = argv[++optind];       } else if (argv[optind].equals("-U")) {         user = argv[++optind];       } else if (argv[optind].equals("-P")) {         password = argv[++optind];       } else if (argv[optind].equals("-L")) {         url = argv[++optind];       } else if (argv[optind].equals("-R")) {         root = argv[++optind];       } else if (argv[optind].equals("-r")) {         recursive = true;       } else if (argv[optind].equals("-v")) {         verbose = true;       } else if (argv[optind].equals("-D")) {         debug = true;       } else if (argv[optind].equals("--")) {         optind++;         break;       } else if (argv[optind].startsWith("-")) {         System.out             .println("Usage: folderlist [-T protocol] [-H host] [-U user] [-P password] [-L url]");         System.out.println("\t[-R root] [-r] [-v] [-D] [pattern]");         System.exit(1);       } else {         break;       }     }     if (optind < argv.length)       pattern = argv[optind];     // Get a Properties object     Properties props = System.getProperties();     // Get a Session object     Session session = Session.getInstance(props, null);     session.setDebug(debug);     // Get a Store object     Store store = null;     Folder rf = null;     if (url != null) {       URLName urln = new URLName(url);       store = session.getStore(urln);       store.connect();     } else {       if (protocol != null)         store = session.getStore(protocol);       else         store = session.getStore();       // Connect       if (host != null || user != null || password != null)         store.connect(host, user, password);       else         store.connect();     }     // List namespace     if (root != null)       rf = store.getFolder(root);     else       rf = store.getDefaultFolder();     dumpFolder(rf, false, "");     if ((rf.getType() & Folder.HOLDS_FOLDERS) != 0) {       Folder[] f = rf.list(pattern);       for (int i = 0; i < f.length; i++)         dumpFolder(f[i], recursive, "    ");     }     store.close();   }   static void dumpFolder(Folder folder, boolean recurse, String tab) throws Exception {     System.out.println(tab + "Name:      " + folder.getName());     System.out.println(tab + "Full Name: " + folder.getFullName());     System.out.println(tab + "URL:       " + folder.getURLName());     if (verbose) {       if (!folder.isSubscribed())         System.out.println(tab + "Not Subscribed");       if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) {         if (folder.hasNewMessages())           System.out.println(tab + "Has New Messages");         System.out.println(tab + "Total Messages:  " + folder.getMessageCount());         System.out.println(tab + "New Messages:    " + folder.getNewMessageCount());         System.out.println(tab + "Unread Messages: " + folder.getUnreadMessageCount());       }       if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0)         System.out.println(tab + "Is Directory");       /*        * Demonstrate use of IMAP folder attributes returned by the IMAP LIST        * response.        */       if (folder instanceof IMAPFolder) {         IMAPFolder f = (IMAPFolder) folder;         String[] attrs = f.getAttributes();         if (attrs != null && attrs.length > 0) {           System.out.println(tab + "IMAP Attributes:");           for (int i = 0; i < attrs.length; i++)             System.out.println(tab + "    " + attrs[i]);         }       }     }     System.out.println();     if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {       if (recurse) {         Folder[] f = folder.list();         for (int i = 0; i < f.length; i++)           dumpFolder(f[i], recurse, tab + "    ");       }     }   } }