/******************************************************************************* | |
* 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(); | |
} | |
} |