blob: bd01ccfde23c9a06bb0abc21c1269104cdc6e672 [file] [log] [blame]
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*******************************************************************************/
package org.apache.ofbiz.htmlreport;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* Base report class.
*
*/
public abstract class AbstractReport implements InterfaceReport {
/** Contains all error messages generated by the report. */
private List<Object> errors;
/** The locale this report is written in. */
private Locale locale;
/** Runtime of the report. */
private long startTime;
/** Contains all warning messages generated by the report. */
private List<Object> warnings = new ArrayList<Object>();
/** Day constant. */
private static final long DAYS = 1000 * 60 * 60 * 24;
/** Hour constant. */
private static final long HOURS = 1000 * 60 * 60;
/** Minute constant. */
private static final long MINUTES = 1000 * 60;
/** Second constant. */
private static final long SECONDS = 1000;
public static final String SESSION_REPORT_CLASS = "OFBIZ_HTML_REPORT";
public void addError(Object obj) {
errors.add(obj);
}
public void addWarning(Object obj) {
warnings.add(obj);
}
public String formatRuntime() {
long runtime = getRuntime();
long seconds = (runtime / SECONDS) % 60;
long minutes = (runtime / MINUTES) % 60;
long hours = (runtime / HOURS) % 24;
long days = runtime / DAYS;
StringBuffer strBuf = new StringBuffer();
if (days > 0) {
if (days < 10) {
strBuf.append('0');
}
strBuf.append(days);
strBuf.append(':');
}
if (hours < 10) {
strBuf.append('0');
}
strBuf.append(hours);
strBuf.append(':');
if (minutes < 10) {
strBuf.append('0');
}
strBuf.append(minutes);
strBuf.append(':');
if (seconds < 10) {
strBuf.append('0');
}
strBuf.append(seconds);
return strBuf.toString();
}
public List<Object> getErrors() {
return errors;
}
public Locale getLocale() {
return locale;
}
public long getRuntime() {
return System.currentTimeMillis() - startTime;
}
public List<Object> getWarnings() {
return warnings;
}
public boolean hasError() {
return (errors.size() > 0);
}
public boolean hasWarning() {
return (warnings.size() > 0);
}
public void resetRuntime() {
startTime = System.currentTimeMillis();
}
/**
* Initializes some member variables for this report.<p>
*
* @param locale the locale for this report
*/
protected void init(Locale locale) {
startTime = System.currentTimeMillis();
this.locale = locale;
errors = new ArrayList<Object>();
}
/**
* Prints a String to the report.<p>
*
* @param value the String to add
*/
public void print(String value) {
print(value, FORMAT_DEFAULT);
}
/**
* Prints a String to the report, using the indicated formatting.<p>
*
* Use the contants starting with <code>FORMAT</code> from this interface
* to indicate which formatting to use.<p>
*
* @param value the message container to add
* @param format the formatting to use for the output
*/
public abstract void print(String value, int format);
/**
* Prints a String with line break to the report.<p>
*
* @param value the message container to add
*/
public void println(String value) {
println(value, FORMAT_DEFAULT);
}
/**
* Prints a String with line break to the report, using the indicated formatting.<p>
*
* Use the contants starting with <code>FORMAT</code> from this interface
* to indicate which formatting to use.<p>
*
* @param value the String to add
* @param format the formatting to use for the output
*/
public void println(String value, int format) {
print(value, format);
println();
}
}