blob: 6cff739d90c00e0a0fa5d10b80c84a2af8934d1e [file] [log] [blame]
/****************************************************************************
* Copyright (c) 2004 Composent, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Composent, Inc. - initial API and implementation
*****************************************************************************/
package org.eclipse.ecf.internal.example.collab;
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.core.runtime.Platform;
public class Trace {
private static final String TRACENAME = "org.eclipse.ecf.example.collab.Trace"; //$NON-NLS-1$
public static final String tracePrefix = "(trace)"; //$NON-NLS-1$
public static boolean ON = false;
protected static boolean isEclipse = false;
protected static String pluginName = ""; //$NON-NLS-1$
protected static String debugPrefix = "/debug/"; //$NON-NLS-1$
protected static PrintStream getPrintStream(String outputFileName) {
if (outputFileName != null)
try {
File f = new File(outputFileName);
PrintStream ps = new PrintStream(new FileOutputStream(f, true));
System.out.println(TRACENAME + " directed to " //$NON-NLS-1$
+ f.getCanonicalPath());
return ps;
} catch (Exception e) {
System.err.println("Exception opening output file '" //$NON-NLS-1$
+ outputFileName + "' for tracing...using System.out"); //$NON-NLS-1$
}
return System.out;
}
protected static PrintStream printStream = null;
static {
String val = System.getProperty(TRACENAME);
printStream = getPrintStream(val);
if (val != null) {
ON = true;
isEclipse = false;
} else {
try {
ON = Platform.inDebugMode();
pluginName = ClientPlugin.getDefault().getBundle()
.getSymbolicName();
} catch (Exception e) {
System.out.println("WARNING: Platform not available for trace"); //$NON-NLS-1$
}
isEclipse = true;
}
}
public static Trace create(String key) {
if (isEclipse) {
String res = Platform
.getDebugOption(pluginName + debugPrefix + key);
if (res != null) {
if (Boolean.valueOf(res).booleanValue())
return new Trace(pluginName + "(" + key + ")"); //$NON-NLS-1$ //$NON-NLS-2$
else
return null;
} else {
return null;
}
} else
return new Trace(key);
}
String name;
public void dumpStack(Throwable e, String msg) {
msg(msg);
e.printStackTrace(printStream);
}
public void msg(String msg) {
StringBuffer sb = new StringBuffer(name);
sb.append(getTimeString()).append(msg);
printStream.println(sb.toString());
}
protected static String getTimeString() {
Date d = new Date();
SimpleDateFormat df = new SimpleDateFormat("[MM/dd/yy;HH:mm:ss:SSS]"); //$NON-NLS-1$
return df.format(d);
}
protected Trace(String str) {
name = tracePrefix + str;
}
public static String convertStringAToString(String[] strings) {
if (strings == null)
return ""; //$NON-NLS-1$
StringBuffer sb = new StringBuffer();
for (int i = 0; i < strings.length; i++) {
if (strings[i] == null)
sb.append("(null)"); //$NON-NLS-1$
else
sb.append(strings[i]);
if (i != (strings.length - 1))
sb.append(";"); //$NON-NLS-1$
}
return sb.toString();
}
public static String convertObjectAToString(Object[] objs) {
if (objs == null)
return ""; //$NON-NLS-1$
StringBuffer sb = new StringBuffer();
for (int i = 0; i < objs.length; i++) {
if (objs[i] == null)
sb.append("(null)"); //$NON-NLS-1$
else
sb.append(objs[i].toString());
if (i != (objs.length - 1))
sb.append(";"); //$NON-NLS-1$
}
return sb.toString();
}
public static void setThreadDebugGroup(Object obj) {
// Do nothing
}
}