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