1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski/*
2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Copyright (C) 2008 The Android Open Source Project
3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * you may not use this file except in compliance with the License.
6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * You may obtain a copy of the License at
7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski *
10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * Unless required by applicable law or agreed to in writing, software
11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * See the License for the specific language governing permissions and
14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski * limitations under the License.
15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski */
16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipackage com.android.tools.layoutlib.create;
18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport java.io.PrintWriter;
20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiimport java.io.StringWriter;
21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic class Log {
23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    private boolean mVerbose = false;
25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void setVerbose(boolean verbose) {
27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        mVerbose = verbose;
28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void debug(String format, Object... args) {
31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        if (mVerbose) {
32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            info(format, args);
33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        }
34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /** Similar to debug() but doesn't do a \n automatically. */
37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void debugNoln(String format, Object... args) {
38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        if (mVerbose) {
39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            String s = String.format(format, args);
40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski            System.out.print(s);
41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        }
42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void info(String format, Object... args) {
45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        String s = String.format(format, args);
46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        outPrintln(s);
47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void error(String format, Object... args) {
50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        String s = String.format(format, args);
51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        errPrintln(s);
52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    public void exception(Throwable t, String format, Object... args) {
55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        StringWriter sw = new StringWriter();
56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        PrintWriter pw = new PrintWriter(sw);
57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        t.printStackTrace(pw);
58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        pw.flush();
59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        error(format + "\n" + sw.toString(), args);
60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /** for unit testing */
63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    protected void errPrintln(String msg) {
64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        System.err.println(msg);
65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    /** for unit testing */
68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    protected void outPrintln(String msg) {
69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski        System.out.println(msg);
70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    }
71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}
73