Source for gnu.inet.imap.ListEntry

   1: /*
   2:  * ListEntry.java
   3:  * Copyright (C) 2003 The Free Software Foundation
   4:  * 
   5:  * This file is part of GNU inetlib, a library.
   6:  * 
   7:  * GNU inetlib is free software; you can redistribute it and/or modify
   8:  * it under the terms of the GNU General Public License as published by
   9:  * the Free Software Foundation; either version 2 of the License, or
  10:  * (at your option) any later version.
  11:  * 
  12:  * GNU inetlib is distributed in the hope that it will be useful,
  13:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:  * GNU General Public License for more details.
  16:  * 
  17:  * You should have received a copy of the GNU General Public License
  18:  * along with this library; if not, write to the Free Software
  19:  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20:  * 
  21:  * Linking this library statically or dynamically with other modules is
  22:  * making a combined work based on this library.  Thus, the terms and
  23:  * conditions of the GNU General Public License cover the whole
  24:  * combination.
  25:  *
  26:  * As a special exception, the copyright holders of this library give you
  27:  * permission to link this library with independent modules to produce an
  28:  * executable, regardless of the license terms of these independent
  29:  * modules, and to copy and distribute the resulting executable under
  30:  * terms of your choice, provided that you also meet, for each linked
  31:  * independent module, the terms and conditions of the license of that
  32:  * module.  An independent module is a module which is not derived from
  33:  * or based on this library.  If you modify this library, you may extend
  34:  * this exception to your version of the library, but you are not
  35:  * obliged to do so.  If you do not wish to do so, delete this
  36:  * exception statement from your version.
  37:  */
  38: 
  39: package gnu.inet.imap;
  40: 
  41: import java.util.List;
  42: 
  43: /**
  44:  * An item in an IMAP LIST or LSUB response.
  45:  *
  46:  * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
  47:  */
  48: public class ListEntry
  49:   implements IMAPConstants
  50: {
  51: 
  52:   private String mailbox;
  53: 
  54:   private char delimiter;
  55: 
  56:   private boolean noinferiors;
  57:   private boolean noselect;
  58:   private boolean marked;
  59:   private boolean unmarked;
  60: 
  61:   /*
  62:    * Constructor.
  63:    * The list entry is otherwise immutable.
  64:    */
  65:   ListEntry(String mailbox, char delimiter, boolean noinferiors,
  66:             boolean noselect, boolean marked, boolean unmarked)
  67:   {
  68:     this.mailbox = mailbox;
  69:     this.delimiter = delimiter;
  70:     this.noinferiors = noinferiors;
  71:     this.noselect = noselect;
  72:     this.marked = marked;
  73:     this.unmarked = unmarked;
  74:   }
  75:   
  76:   /**
  77:    * Returns the mailbox this list entry refers to.
  78:    */
  79:   public String getMailbox()
  80:   {
  81:     return mailbox;
  82:   }
  83:   
  84:   /**
  85:    * Returns the mailbox hierarchy delimiter.
  86:    */
  87:   public char getDelimiter()
  88:   {
  89:     return delimiter;
  90:   }
  91: 
  92:   /**
  93:    * If true: it is not possible for any child levels of hierarchy to
  94:    * exist under this name; no child levels exist now and none can be
  95:    * created in the future.
  96:    */
  97:   public boolean isNoinferiors()
  98:   {
  99:     return noinferiors;
 100:   }
 101:   
 102:   /**
 103:    * If true: it is not possible to use this name as a selectable
 104:    * mailbox.
 105:    */
 106:   public boolean isNoselect()
 107:   {
 108:     return noselect;
 109:   }
 110: 
 111:   /**
 112:    * If true: the mailbox has been marked "interesting" by the server;
 113:    * the mailbox probably contains messages that have been added since
 114:    * the last time the mailbox was selected.
 115:    */
 116:   public boolean isMarked()
 117:   {
 118:     return marked;
 119:   }
 120: 
 121:   /**
 122:    * If true: the mailbox does not contain any additional messages since
 123:    * the last time the mailbox was selected.
 124:    */
 125:   public boolean isUnmarked()
 126:   {
 127:     return unmarked;
 128:   }
 129: 
 130:   /**
 131:    * Debugging
 132:    */
 133:   public String toString()
 134:   {
 135:     StringBuffer buffer = new StringBuffer();
 136:     if (noinferiors || noselect || marked || unmarked)
 137:       {
 138:         buffer.append("(\u001b[00;35m");
 139:         boolean seq = false;
 140:         seq = conditionalAppend(buffer, seq, noinferiors, LIST_NOINFERIORS);
 141:         seq = conditionalAppend(buffer, seq, noselect, LIST_NOSELECT);
 142:         seq = conditionalAppend(buffer, seq, marked, LIST_MARKED);
 143:         seq = conditionalAppend(buffer, seq, unmarked, LIST_UNMARKED);
 144:         buffer.append("\u001b[00m) ");
 145:       }
 146:     buffer.append("\"\u001b[00;31m");
 147:     buffer.append(delimiter);
 148:     buffer.append("\u001b[00m\" ");
 149:     buffer.append(mailbox);
 150:     return buffer.toString();
 151:   }
 152:   
 153:   private static boolean conditionalAppend(StringBuffer buffer,
 154:                                            boolean seq, boolean test,
 155:                                            String value)
 156:   {
 157:     if (test)
 158:       {
 159:         if (seq)
 160:           {
 161:             buffer.append(' ');
 162:           }
 163:         buffer.append(value);
 164:         seq = true;
 165:       }
 166:     return seq;
 167:   }
 168:   
 169: }