11b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick/*
21b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * Copyright (C) 2010 The Android Open Source Project
31b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick *
41b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * Licensed under the Apache License, Version 2.0 (the "License");
51b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * you may not use this file except in compliance with the License.
61b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * You may obtain a copy of the License at
71b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick *
81b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick *      http://www.apache.org/licenses/LICENSE-2.0
91b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick *
101b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * Unless required by applicable law or agreed to in writing, software
111b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * distributed under the License is distributed on an "AS IS" BASIS,
121b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * See the License for the specific language governing permissions and
141b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * limitations under the License.
151b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick */
161b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick
171b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrickpackage android.util;
181b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick
191b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick/**
201b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * PrefixPrinter is a Printer which prefixes all lines with a given
211b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * prefix.
221b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick *
231b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick * @hide
241b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick */
251b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrickpublic class PrefixPrinter implements Printer {
261b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    private final Printer mPrinter;
271b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    private final String mPrefix;
281b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick
291b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    /**
301b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick     * Creates a new PrefixPrinter.
311b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick     *
321b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick     * <p>If prefix is null or empty, the provided printer is returned, rather
331b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick     * than making a prefixing printer.
341b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick     */
351b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    public static Printer create(Printer printer, String prefix) {
361b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        if (prefix == null || prefix.equals("")) {
371b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick            return printer;
381b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        }
391b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        return new PrefixPrinter(printer, prefix);
401b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    }
411b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick
421b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    private PrefixPrinter(Printer printer, String prefix) {
431b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        mPrinter = printer;
441b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        mPrefix = prefix;
451b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    }
461b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick
471b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    public void println(String str) {
481b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick        mPrinter.println(mPrefix + str);
491b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick    }
501b29825cca9edda7ae4b3a3f27420c42fd13eef8Brad Fitzpatrick}
51