/**************************************************************************** * 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 } }