FileDocCategorySizeDatePackage
MessageSet.javaAPI DocJavaMail 1.4.33990Tue Nov 17 10:38:10 GMT 2009com.sun.mail.imap.protocol

MessageSet

public class MessageSet extends Object
This class holds the 'start' and 'end' for a range of messages

Fields Summary
public int
start
public int
end
Constructors Summary
public MessageSet()

 
public MessageSet(int start, int end)

	this.start = start;
	this.end = end;
    
Methods Summary
public static com.sun.mail.imap.protocol.MessageSet[]createMessageSets(int[] msgs)

	Vector v = new Vector();
	int i,j;

	for (i=0; i < msgs.length; i++) {
	    MessageSet ms = new MessageSet();
	    ms.start = msgs[i];

	    // Look for contiguous elements
	    for (j=i+1; j < msgs.length; j++) {
		if (msgs[j] != msgs[j-1] +1)
		    break;
	    }
	    ms.end = msgs[j-1];
	    v.addElement(ms);
	    i = j-1; // i gets incremented @ top of the loop
	}
	MessageSet[] msgsets = new MessageSet[v.size()];	
	v.copyInto(msgsets);
	return msgsets;
    
public intsize()
Count the total number of elements in a MessageSet

	return end - start + 1;
    
public static intsize(com.sun.mail.imap.protocol.MessageSet[] msgsets)

	int count = 0;

	if (msgsets == null) // Null msgset
	    return 0; 

	for (int i=0; i < msgsets.length; i++)
	    count += msgsets[i].size();
	
	return count;
    
public static java.lang.StringtoString(com.sun.mail.imap.protocol.MessageSet[] msgsets)
Convert an array of MessageSets into an IMAP sequence range

	if (msgsets == null || msgsets.length == 0) // Empty msgset
	    return null; 

	int i = 0;  // msgset index
	StringBuffer s = new StringBuffer();
	int size = msgsets.length;
	int start, end;

	for (;;) {
	    start = msgsets[i].start;
	    end = msgsets[i].end;

	    if (end > start)
		s.append(start).append(':").append(end);
	    else // end == start means only one element
		s.append(start);
	
	    i++; // Next MessageSet
	    if (i >= size) // No more MessageSets
		break;
	    else
		s.append(',");
	}
	return s.toString();