/*
* Copyright (c) 2009-2014 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2009-2014 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 Oracle 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 com.sun.mail.util.logging.CollectorFormatter;
import com.sun.mail.util.logging.CompactFormatter;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
/**
* A compact formatter used to summarize an error report.
*
* @author Jason Mehrens
*/
public final class SummaryFormatter extends Formatter {
/**
* The line formatter.
*/
private final CompactFormatter format;
/**
* The footer formatter.
*/
private final CollectorFormatter footer;
/**
* Creates the formatter.
*/
public SummaryFormatter() {
format = new CompactFormatter("[%4$s]\t%5$s %6$s%n");
footer = new CollectorFormatter("\nThese {3} messages occurred between "
+ "{7,time,EEE, MMM dd HH:mm:ss:S ZZZ yyyy} and "
+ "{8,time,EEE, MMM dd HH:mm:ss:S ZZZ yyyy}\n", format, null);
}
/**
* Gets the header information.
*
* @param h the handler or null.
* @return the header.
*/
@Override
public String getHead(Handler h) {
footer.getHead(h);
return format.getHead(h);
}
/**
* Formats the given record.
*
* @param record the log record.
* @return the formatted record.
* @throws NullPointerException if record is null.
*/
public String format(LogRecord record) {
String data = format.format(record);
footer.format(record); //Track record times for footer.
return data;
}
/**
* Gets and resets the footer information.
*
* @param h the handler or null.
* @return the footer.
*/
@Override
public String getTail(Handler h) {
format.getTail(h);
return footer.getTail(h);
}
}