/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License, version 2 as published by the Free Software * Foundation. * * You should have received a copy of the GNU General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/gpl-2.0.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * * Copyright 2005 - 2008 Pentaho Corporation. All rights reserved. * * @created Jul 28, 2005 * @author James Dixon */ package org.pentaho.platform.engine.services; import java.io.CharArrayWriter; import java.io.PrintWriter; import java.text.DateFormat; import java.util.List; import org.pentaho.platform.api.engine.ActionSequenceException; import org.pentaho.platform.api.engine.ILogger; import org.pentaho.platform.engine.core.system.PentahoBase; import org.pentaho.platform.engine.services.messages.Messages; import org.pentaho.platform.util.messages.LocaleHelper; public abstract class PentahoMessenger extends PentahoBase { private List messages; DateFormat dateFormat = LocaleHelper.getFullDateFormat(true, true); public List getMessages() { return messages; } public void setMessages(final List messages) { this.messages = messages; } @Override public void trace(final String message) { if (loggingLevel <= ILogger.TRACE) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_DEBUG", message, getClass().getName())); //$NON-NLS-1$ } super.trace(message); } } @Override public void debug(final String message) { if (loggingLevel <= ILogger.DEBUG) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_DEBUG", message, getClass().getName())); //$NON-NLS-1$ } super.debug(message); } } @Override public void info(final String message) { if (loggingLevel <= ILogger.INFO) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_INFO", message, getClass().getName())); //$NON-NLS-1$ } super.info(message); } } @Override public void warn(final String message) { if (loggingLevel <= ILogger.WARN) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_WARNING", message, getClass().getName())); //$NON-NLS-1$ } super.warn(message); } } @SuppressWarnings("unchecked") public void error(ActionSequenceException exception) { if (loggingLevel <= ILogger.ERROR) { if (messages != null) { messages.add(exception); } CharArrayWriter charWriter = new CharArrayWriter(); PrintWriter printWriter = new PrintWriter(charWriter); printWriter.println(getLogId() + Messages.getInstance().getString("MessageFormatter.ACTION_SEQUENCE_EXECUTION_FAILED")); //$NON-NLS-1$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_TIME", dateFormat.format(exception.getDate()))); //$NON-NLS-1$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_SESSION_ID", (exception.getSessionId() == null ? "" : exception.getSessionId()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_INSTANCE_ID", (exception.getInstanceId() == null ? "" : exception.getInstanceId()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_ACTION_SEQUENCE", (exception.getActionSequenceName() == null ? "" : exception.getActionSequenceName()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_ACTION_SEQUENCE_EXECUTION_STACK")); //$NON-NLS-1$ exception.printActionExecutionStack(printWriter); printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_ACTION_CLASS", (exception.getActionClass() == null ? Messages.getInstance().getString("MessageFormatter.EXCEPTION_FIELD_NOT_APPLICABLE") : exception.getActionClass()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_ACTION_DESC", (exception.getStepDescription() == null ? "" : exception.getStepDescription()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_LOOP_INDEX", (exception.getLoopIndex() == null ? Messages.getInstance().getString("MessageFormatter.EXCEPTION_FIELD_NOT_APPLICABLE") : exception.getLoopIndex().toString()))); //$NON-NLS-1$ //$NON-NLS-2$ //STEP_NUM isn't working yet // printWriter.println(Messages.getInstance().getString("MessageFormatter.LOG_EXCEPTION_STEP_NUM", (exception.getStepNumber() == null ? Messages.getInstance().getString("MessageFormatter.EXCEPTION_FIELD_NOT_APPLICABLE") : exception.getStepNumber().toString()))); //$NON-NLS-1$ //$NON-NLS-2$ printWriter.print(Messages.getInstance().getString("MessageFormatter.EXCEPTION_STACK_TRACE")); //$NON-NLS-1$ exception.printStackTrace(printWriter); getLogger().error(charWriter.toString()); } } @Override public void error(final String message) { if (loggingLevel <= ILogger.ERROR) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_ERROR", message, getClass().getName())); //$NON-NLS-1$ } super.error(message); } } @Override public void fatal(final String message) { if (loggingLevel <= ILogger.FATAL) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_ERROR", message, getClass().getName())); //$NON-NLS-1$ } super.fatal(message); } } @Override public void trace(final String message, final Throwable error) { if (loggingLevel <= ILogger.TRACE) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_DEBUG", message, getClass().getName())); //$NON-NLS-1$ } super.trace(message, error); } } @Override public void debug(final String message, final Throwable error) { if (loggingLevel <= ILogger.DEBUG) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_DEBUG", message, getClass().getName())); //$NON-NLS-1$ } super.debug(message, error); } } @Override public void info(final String message, final Throwable error) { if (loggingLevel <= ILogger.INFO) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_INFO", message, getClass().getName())); //$NON-NLS-1$ } super.info(message, error); } } @Override public void warn(final String message, final Throwable error) { if (loggingLevel <= ILogger.WARN) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_WARNING", message, getClass().getName())); //$NON-NLS-1$ } super.warn(message, error); } } @Override public void error(final String message, final Throwable error) { if (loggingLevel <= ILogger.ERROR) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_ERROR_EX", message, getClass().getName(), error.toString())); //$NON-NLS-1$ } super.error(message, error); } } @Override public void fatal(final String message, final Throwable error) { if (loggingLevel <= ILogger.FATAL) { if (messages != null) { messages.add(Messages.getInstance().getString("Message.USER_ERROR_EX", message, getClass().getName(), error.toString())); //$NON-NLS-1$ } super.fatal(message, error); } } public static String getUserString(final String type) { return Messages.getInstance().getString("Message.USER_" + type); //$NON-NLS-1$ } }