⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utility.java

📁 java Email you can use it to send email to others
💻 JAVA
字号:
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License").  You * may not use this file except in compliance with the License. You can obtain * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html * or glassfish/bootstrap/legal/LICENSE.txt.  See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt. * Sun designates this particular file as subject to the "Classpath" exception * as provided by Sun in the GPL Version 2 section of the License file that * accompanied this code.  If applicable, add the following below the License * Header, with the fields enclosed by brackets [] replaced by your own * identifying information: "Portions Copyrighted [year] * [name of copyright owner]" * * Contributor(s): * * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license."  If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above.  However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. *//* * @(#)Utility.java	1.7 07/05/04 */package com.sun.mail.imap;import java.util.Vector;import javax.mail.*;import com.sun.mail.util.*;import com.sun.mail.imap.protocol.MessageSet;import com.sun.mail.imap.protocol.UIDSet;/** * Holder for some static utility methods. * * @version 1.7, 07/05/04 * @author  John Mani * @author  Bill Shannon */public final class Utility {    // Cannot be initialized    private Utility() { }    /**     * Run thru the given array of messages, apply the given     * Condition on each message and generate sets of contiguous      * sequence-numbers for the successful messages. If a message      * in the given array is found to be expunged, it is ignored.     *     * ASSERT: Since this method uses and returns message sequence     * numbers, you should use this method only when holding the     * messageCacheLock.     */    public static     MessageSet[] toMessageSet(Message[] msgs, Condition cond) {	Vector v = new Vector(1);	int current, next;	IMAPMessage msg;	for (int i = 0; i < msgs.length; i++) {	    msg = (IMAPMessage)msgs[i];	    if (msg.isExpunged()) // expunged message, skip it		continue;	    current = msg.getSequenceNumber();	    // Apply the condition. If it fails, skip it.	    if ((cond != null) && !cond.test(msg))		continue;	    	    MessageSet set = new MessageSet();	    set.start = current;	    // Look for contiguous sequence numbers	    for (++i; i < msgs.length; i++) {		// get next message		msg = (IMAPMessage)msgs[i];		if (msg.isExpunged()) // expunged message, skip it		    continue;		next = msg.getSequenceNumber();		// Does this message match our condition ?		if ((cond != null) && !cond.test(msg))		    continue;				if (next == current+1)		    current = next;		else { // break in sequence		    // We need to reexamine this message at the top of		    // the outer loop, so decrement 'i' to cancel the		    // outer loop's autoincrement 		    i--;		    break;		}	    }	    set.end = current;	    v.addElement(set);	}		if (v.isEmpty()) // No valid messages	    return null;	else {	    MessageSet[] sets = new MessageSet[v.size()];	    v.copyInto(sets);	    return sets;	}    }    /**     * Return UIDSets for the messages.  Note that the UIDs     * must have already been fetched for the messages.     */    public static UIDSet[] toUIDSet(Message[] msgs) {	Vector v = new Vector(1);	long current, next;	IMAPMessage msg;	for (int i = 0; i < msgs.length; i++) {	    msg = (IMAPMessage)msgs[i];	    if (msg.isExpunged()) // expunged message, skip it		continue;	    current = msg.getUID(); 	    UIDSet set = new UIDSet();	    set.start = current;	    // Look for contiguous UIDs	    for (++i; i < msgs.length; i++) {		// get next message		msg = (IMAPMessage)msgs[i];		if (msg.isExpunged()) // expunged message, skip it		    continue;		next = msg.getUID();		if (next == current+1)		    current = next;		else { // break in sequence		    // We need to reexamine this message at the top of		    // the outer loop, so decrement 'i' to cancel the		    // outer loop's autoincrement 		    i--;		    break;		}	    }	    set.end = current;	    v.addElement(set);	}	if (v.isEmpty()) // No valid messages	    return null;	else {	    UIDSet[] sets = new UIDSet[v.size()];	    v.copyInto(sets);	    return sets;	}    }    /**     * This interface defines the test to be executed in      * <code>toMessageSet()</code>.      */    public static interface Condition {	public boolean test(IMAPMessage message);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -