001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.log4j.pattern;
019
020
021/**
022
023   <p>PatternConverter is an abstract class that provides the
024   formatting functionality that derived classes need.
025
026   <p>Conversion specifiers in a conversion patterns are parsed to
027   individual PatternConverters. Each of which is responsible for
028   converting an object in a converter specific manner.
029
030   @author <a href="mailto:cakalijp@Maritz.com">James P. Cakalic</a>
031   @author Ceki G&uuml;lc&uuml;
032   @author Chris Nokes
033   @author Curt Arnold
034
035 */
036public abstract class PatternConverter {
037  /**
038   * Converter name.
039   */
040  private final String name;
041
042  /**
043   * Converter style name.
044   */
045  private final String style;
046
047  /**
048   * Create a new pattern converter.
049   * @param name name for pattern converter.
050   * @param style CSS style for formatted output.
051   */
052  protected PatternConverter(final String name, final String style) {
053    this.name = name;
054    this.style = style;
055  }
056
057  /**
058   * Formats an object into a string buffer.
059   * @param obj event to format, may not be null.
060   * @param toAppendTo string buffer to which the formatted event will be appended.  May not be null.
061   */
062  public abstract void format(final Object obj, final StringBuffer toAppendTo);
063
064  /**
065   * This method returns the name of the conversion pattern.
066   *
067   * The name can be useful to certain Layouts such as HTMLLayout.
068   *
069   * @return        the name of the conversion pattern
070   */
071  public final String getName() {
072    return name;
073  }
074
075  /**
076   * This method returns the CSS style class that should be applied to
077   * the LoggingEvent passed as parameter, which can be null.
078   *
079   * This information is currently used only by HTMLLayout.
080   *
081   * @param e null values are accepted
082   * @return  the name of the conversion pattern
083   */
084  public String getStyleClass(Object e) {
085    return style;
086  }
087}