package jas.util; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; public class Debug { public static void init() { if (debugInitialized) return; try { theStdOutFile = new File(theStdOutFileName); theStdErrFile = new File(theStdErrFileName); PrintStream outFile = new PrintStream( new BufferedOutputStream( new FileOutputStream(theStdOutFile))); PrintStream errFile = new PrintStream( new BufferedOutputStream( new FileOutputStream(theStdErrFile))); theFileOutWriter = new PrintWriter(outFile, true); theFileErrWriter = new PrintWriter(errFile, true); } catch (IOException eh) { System.out.println("IOException initializing Debug system!"); eh.printStackTrace(); } debugInitialized = true; } public static void setFileOutput() { redirectToFile = true; } public static void setNormalOutput() { redirectToFile = false; } public static void pushFileOutput() { oldRedirectValue = redirectToFile; redirectToFile = true; } public static void pushNormalOutput() { oldRedirectValue = redirectToFile; redirectToFile = false; } public static void popOutput() { redirectToFile = oldRedirectValue; } public static void say(String s) { init(); if (redirectToFile) { theFileOutWriter.println(s); } else { theConsoleOutWriter.println(s); } } public static void complain(String s) { init(); if (redirectToFile) { theFileErrWriter.println(s); } else { theConsoleErrWriter.println(s); } } public static void debugSay(String s) { if (debugMode) { say(s); } } public static void debugComplain(String s) { if (debugMode) { complain(s); } } private static File theStdOutFile; private static File theStdErrFile; private static final PrintWriter theConsoleOutWriter = new PrintWriter(System.out, true); private static final PrintWriter theConsoleErrWriter = new PrintWriter(System.err, true); private static PrintWriter theFileOutWriter; private static PrintWriter theFileErrWriter; private static final String theStdOutFileName = "stdout.txt"; private static final String theStdErrFileName = "stderr.txt"; private static final boolean debugMode = true; private static boolean debugInitialized = false; private static boolean redirectToFile = false; private static boolean oldRedirectValue = false; }