001 package util; 002 003 /** 004 * Debug management class. 005 * 006 * <p>You can use calls to {@link #print Debug.print} for any debug message you want to print 007 * in your program.</p> 008 * 009 * @author Steffen Zschaler 010 * @version 1.0 011 * @since v1.0 012 */ 013 public class Debug extends Object { 014 015 /** 016 * The current debug level. 017 */ 018 private static int s_nDebugLevel = 10; 019 /** 020 * Show system messages (level == -1)? 021 */ 022 private static boolean s_fSysMsg = false; 023 024 /** 025 * Set the maximum debug level. 026 * 027 * <p>When printing messages with {@link #print}, only messages with a debug level less or 028 * equal the maximum debug level will be printed.</p> 029 * 030 * @param nLevel the maximum debug level. Defaults to 10. 031 * 032 * @return the former maximum debug level. 033 */ 034 public static synchronized int setMaxDebugLevel(int nLevel) { 035 int nOld = s_nDebugLevel; 036 037 s_nDebugLevel = nLevel; 038 039 return nOld; 040 } 041 042 /** 043 * Switch on printing of framework internal debug messages. 044 */ 045 public static void traceSystemMessages() { 046 traceSystemMessages(true); 047 } 048 049 /** 050 * Switch off printing of framework internal debug messages. 051 */ 052 public static void untraceSystemMessages() { 053 traceSystemMessages(false); 054 } 055 056 /** 057 * Switch printing of framework internal debug messages. 058 * 059 * @param fSwitch if true, framework internal debug messages will henceforward be printed. 060 */ 061 public static synchronized void traceSystemMessages(boolean fSwitch) { 062 s_fSysMsg = fSwitch; 063 } 064 065 /** 066 * Print a message to STDERR. 067 * 068 * <p>Prints <code>s</code> to {@link java.lang.System#err}, if <code>nLevel</code> is less 069 * or equal the maximum debug level.</p> 070 * 071 * @param s the debug message. 072 * @param nLevel the message's debug level. Must be greater or equal zero. 073 */ 074 public static synchronized void print(String s, int nLevel) { 075 if (((nLevel == -1) && (s_fSysMsg)) || ((nLevel >= 0) && (nLevel <= s_nDebugLevel))) { 076 System.err.println(s); 077 } 078 } 079 }