Java tutorial
/* * Copyright 2008-2011 UnboundID Corp. All Rights Reserved. */ /* * Copyright (C) 2008-2011 UnboundID Corp. This program is free * software; you can redistribute it and/or modify it under the terms of * the GNU General Public License (GPLv2 only) or the terms of the GNU * Lesser General Public License (LGPLv2.1 only) as published by the * Free Software Foundation. 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. You * should have received a copy of the GNU General Public License along * with this program; if not, see <http://www.gnu.org/licenses>. */ package samplecode.tools; import com.unboundid.ldap.sdk.ResultCode; import com.unboundid.util.CommandLineTool; import org.apache.commons.logging.Log; import samplecode.annotation.Author; import samplecode.annotation.CodeVersion; import samplecode.annotation.Since; import samplecode.util.StaticData; import java.io.PrintStream; import static com.unboundid.util.Validator.ensureNotNull; /** * Provides a generic message for logging when a {@link CommandLineTool} * object has completed processing. * {@link CommandLineTool#doToolProcessing()} does not throw an * exception but provides a result code. */ @Author("terry.gardner@unboundid.com") @Since("Dec 24, 2011") @CodeVersion("1.4") public class BasicToolCompletedProcessing implements ToolCompletedProcessing { private static final String KEY_COMPLETED_MSG_FORMAT = "tool-completed-message-fmt"; /** * Creates a {@code BasicToolCompletedProcessing} with default state. * * @param tool * the {@code CommandLineTool} that has completed processing. * {@code tool} is not permitted to be {@code null}. * @param resultCode * the result code returned from the tool. @code resultCode} * is not permitted to be {@code null}. */ public BasicToolCompletedProcessing(final CommandLineTool tool, final ResultCode resultCode) { ensureNotNull(tool, resultCode); this.tool = tool; this.resultCode = resultCode; } /** * {@inheritDoc} */ @Override public String createMsg() { final String fmt = StaticData.getResourceBundle().getString(KEY_COMPLETED_MSG_FORMAT); return String.format(fmt, tool.getToolName(), resultCode); } /** * {@inheritDoc} * <p/> * precondition: result code, tool, outStream and errStream cannot be * {@code null}. */ @Override public void displayMessage(PrintStream outStream, PrintStream errStream) { if (outStream == null) { throw new IllegalArgumentException("outStream must not be null."); } if (errStream == null) { throw new IllegalArgumentException("errStream must not be null."); } PrintStream str; if (resultCode.equals(ResultCode.SUCCESS)) { str = outStream; } else { str = errStream; } str.println(createMsg()); } /** * {@inheritDoc} */ @Override public void displayMessage(final Log logger) { if (resultCode.equals(ResultCode.SUCCESS)) { logger.info(createMsg()); } else { logger.fatal(createMsg()); } } // the result code generated by the processing of CommandLineTool private final ResultCode resultCode; // The tool the completed processing. private final CommandLineTool tool; }