001/**
002 * Logback: the reliable, generic, fast and flexible logging framework.
003 * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
004 *
005 * This program and the accompanying materials are dual-licensed under
006 * either the terms of the Eclipse Public License v1.0 as published by
007 * the Eclipse Foundation
008 *
009 *   or (per the licensee's choosing)
010 *
011 * under the terms of the GNU Lesser General Public License version 2.1
012 * as published by the Free Software Foundation.
013 */
014package ch.qos.logback.core.pattern.color;
015
016import ch.qos.logback.core.pattern.CompositeConverter;
017import static ch.qos.logback.core.pattern.color.ANSIConstants.*;
018
019/**
020 * Base class for all foreground color setting composite converters.
021 *
022 * @param <E>
023 * @since 1.0.5
024 */
025abstract public class ForegroundCompositeConverterBase<E> extends CompositeConverter<E> {
026
027    final private static String SET_DEFAULT_COLOR = ESC_START + "0;" + DEFAULT_FG + ESC_END;
028
029    @Override
030    protected String transform(E event, String in) {
031        StringBuilder sb = new StringBuilder();
032        sb.append(ESC_START);
033        sb.append(getForegroundColorCode(event));
034        sb.append(ESC_END);
035        sb.append(in);
036        sb.append(SET_DEFAULT_COLOR);
037        return sb.toString();
038    }
039
040    /**
041     * Derived classes return the foreground color specific to the derived class
042     * instance.
043     * 
044     * @return the foreground color for this instance
045     */
046    abstract protected String getForegroundColorCode(E event);
047}