blob: d62e1d562c822679a0be4c54698e4e5f030acdcd [file] [log] [blame]
/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
*
* Use is subject to license terms.
*
* Licensed 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. You can also
* obtain a copy of the License at http://odftoolkit.org/docs/license.txt
*
* 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.odftoolkit.odfxsltrunner;
import javax.xml.transform.TransformerException;
import org.xml.sax.SAXParseException;
/**
* Base class for logging messages.
*/
public abstract class Logger {
private static final String ERROR_PREFIX = "Error";
private static final String FATAL_PREFIX = "Fatal";
private static final String INFO_PREFIX = "Info";
private static final String WARNING_PREFIX = "Warning";
private String m_aEntryName;
private String m_aFileName = "(none)";
private boolean m_bError = false;
/**
* Error log level.
*/
public static final int ERROR = 0;
/**
* Warning log level.
*/
public static final int WARNING = 1;
/**
* Information log level.
*/
public static final int INFO = 2;
/**
* Create a new Logger instance.
*/
protected Logger()
{
}
void setName( String aFileName )
{
setName( aFileName, null );
}
void setName( String aFileName, String aEntryName )
{
m_aFileName = aFileName;
m_aEntryName = aEntryName;
}
/**
* Get name of the file for which messagea are logged.
*
* @return file name
*/
protected String getName() {
StringBuffer aName = new StringBuffer(m_aFileName);
if (m_aEntryName != null && m_aEntryName.length() > 0) {
aName.append('/');
aName.append(m_aEntryName);
}
return aName.toString();
}
/**
* Was an error or fatal error logged.
*
* @return true if an error was logged.
*/
public boolean hasError() {
return m_bError;
}
void logError(String aMsg) {
logMessage(ERROR_PREFIX, aMsg, ERROR );
m_bError = true;
}
void logError(TransformerException e) {
logMessage(ERROR_PREFIX, e, ERROR );
m_bError = true;
}
void logError(SAXParseException e) {
logMessage(ERROR_PREFIX, e, ERROR );
m_bError = true;
}
void logFatalError(String aMsg) {
logMessage(FATAL_PREFIX, aMsg, ERROR );
m_bError = true;
}
void logFatalError(TransformerException e) {
logMessage(FATAL_PREFIX, e, ERROR);
m_bError = true;
}
void logFatalError(SAXParseException e) {
logMessage(FATAL_PREFIX, e, ERROR);
m_bError = true;
}
void logInfo(String aMsg) {
logMessage(INFO_PREFIX, aMsg, INFO );
}
void logWarning(String aMsg) {
logMessage(WARNING_PREFIX, aMsg, WARNING );
}
void logWarning(TransformerException e) {
logMessage(WARNING_PREFIX, e, WARNING );
}
void logWarning(SAXParseException e) {
logMessage(WARNING_PREFIX, e, WARNING );
}
private void logMessage( String aPrefix, TransformerException e, int nLevel )
{
logMessageWithLocation( aPrefix, e.getMessageAndLocation(), nLevel );
}
private void logMessage( String aPrefix, SAXParseException e, int nLevel )
{
StringBuffer aLocation = new StringBuffer( e.getSystemId() );
aLocation.append(':');
aLocation.append(e.getLineNumber());
aLocation.append(": ");
aLocation.append(e.getColumnNumber());
logMessage( aPrefix, e.getMessage(), aLocation.toString(), nLevel );
}
private void logMessage( String aPrefix, String aMsg, int nLevel )
{
logMessage( aPrefix, aMsg, null, nLevel );
}
/**
* Log a message.
*
* @param aPrefix Message prefix
* @param aMsg Message text
* @param aLocation file, row and column number as text (optional)
* @param nLevel the warning level (one of INFO, WARNING or ERROR)
*/
protected abstract void logMessage( String aPrefix, String aMsg, String aLocation, int nLevel );
/**
* Log a message.
*
* @param aPrefix Message prefix
* @param aMsgWithLocation Message text including location information
* @param nLevel the warning level (one of INFO, WARNING or ERROR)
*/
protected abstract void logMessageWithLocation( String aPrefix, String aMsgWithLocation, int nLevel );
}