Package

Source Code of SummaryNameFormatter

/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2009 Jason Mehrens. 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.
*
*   - Redistributions 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 nor the names of its
*     contributors may be used to endorse or promote products derived
*     from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/


import java.text.MessageFormat;
import java.util.logging.*;
import com.sun.mail.util.logging.MailHandler;

/**
* Creates an attachment name based on the number of records and errors.
* The pattern is a <tt>java.text.MesageFormat</tt> with two parameters.
* The first parameter is the number of records formatted.  The second is the
* number of records with errors.
* @author Jason Mehrens
*/
public class SummaryNameFormatter extends Formatter {

    private final String pattern;
    private long count;
    private long errors;

    /**
     * Creates a simple pattern.
     */
    public SummaryNameFormatter() {
        this("{0} records and {1} errors");
    }

    /**
     * Creates formatter using a message format style pattern.
     * @param pattern the pattern.
     * @throws NullPointerException if pattern is null.
     */
    public SummaryNameFormatter(final String pattern) {
        if (pattern == null) {
            throw new NullPointerException();
        }
        this.pattern = pattern;
    }

    public synchronized String format(LogRecord r) {
        count++;
        if (r.getThrown() != null) {
            errors++;
        }
        return "";
    }

    public synchronized String getTail(Handler h) {
        final long records = this.count; //read
        final long thrown = this.errors;
        this.count = 0; //reset
        this.errors = 0;
        return toString(records, thrown) + extFrom(h);
    }

    public synchronized String toString() {
        return toString(count, errors);
    }

    private String toString(final long count, final long errors) {
        return MessageFormat.format(pattern, new Object[]{new Long(count), new Long(errors)});
    }

    private String extFrom(Handler h) {
        if(h instanceof MailHandler) {
            MailHandler mh = (MailHandler)h;
            Formatter[] content = mh.getAttachmentFormatters();
            Formatter[] names = mh.getAttachmentNames();
            assert content.length == names.length;
            for(int i=0; i<content.length; i++) {
                if(names[i] == this) {
                    if(content[i] instanceof XMLFormatter) {
                        return ".xml";
                    }
                }
            }
        }
        return ".txt";
    }
}
TOP

Related Classes of SummaryNameFormatter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.