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