1ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski/*
2ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Copyright (C) 2008 The Android Open Source Project
3ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski *
4ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * you may not use this file except in compliance with the License.
6ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * You may obtain a copy of the License at
7ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski *
8ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski *
10ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * Unless required by applicable law or agreed to in writing, software
11ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * See the License for the specific language governing permissions and
14ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski * limitations under the License.
15ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski */
16ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
17ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipackage com.android.tools.layoutlib.create;
18ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
19ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport java.io.PrintWriter;
20ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskiimport java.io.StringWriter;
21ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
22ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinskipublic class Log {
23ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
24ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    private boolean mVerbose = false;
25ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
26ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void setVerbose(boolean verbose) {
27ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        mVerbose = verbose;
28ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
29ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
30ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void debug(String format, Object... args) {
31ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        if (mVerbose) {
32ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski            info(format, args);
33ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        }
34ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
35ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
36ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    /** Similar to debug() but doesn't do a \n automatically. */
37ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void debugNoln(String format, Object... args) {
38ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        if (mVerbose) {
39ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski            String s = String.format(format, args);
40ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski            System.out.print(s);
41ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        }
42ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
43ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
44ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void info(String format, Object... args) {
45ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        String s = String.format(format, args);
46ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        outPrintln(s);
47ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
48ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
49ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void error(String format, Object... args) {
50ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        String s = String.format(format, args);
51ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        errPrintln(s);
52ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
53ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
54ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    public void exception(Throwable t, String format, Object... args) {
55ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        StringWriter sw = new StringWriter();
56ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        PrintWriter pw = new PrintWriter(sw);
57ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        t.printStackTrace(pw);
58ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        pw.flush();
59ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        error(format + "\n" + sw.toString(), args);
60ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
61ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
62ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    /** for unit testing */
63ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    protected void errPrintln(String msg) {
64ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        System.err.println(msg);
65ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
66ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
67ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    /** for unit testing */
68ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    protected void outPrintln(String msg) {
69ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski        System.out.println(msg);
70ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski    }
71ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski
72ab775ecdd189b32e35b0d3f4a821502f88b03a4bAdam Lesinski}
73