X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FInstance.java;h=4cf6e86113e46c620ae50ed87022ddc49e4f0eeb;hb=a8209dd0972f751e59153dd80a53f3062042897a;hp=9b6448ecb1cb89d490dfe6642d404069382a8868;hpb=d9a94285b568e80cba1d5b85d67829839d1d5029;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/Instance.java b/src/be/nikiroo/fanfix/Instance.java index 9b6448e..4cf6e86 100644 --- a/src/be/nikiroo/fanfix/Instance.java +++ b/src/be/nikiroo/fanfix/Instance.java @@ -21,17 +21,57 @@ import be.nikiroo.utils.resources.Bundles; * @author niki */ public class Instance { + /** + * A handler when a recoverable exception was caught by the program. + * + * @author niki + */ + public interface SyserrHandler { + /** + * An exception happened, log it. + * + * @param e + * the exception + * @param showDetails + * show more details (usually equivalent to the value of + * DEBUG) + */ + public void notify(Exception e, boolean showDetails); + } + + /** + * A handler when a trace message is sent. + * + * @author niki + */ + public interface TraceHandler { + /** + * A trace happened, show it. + *

+ * Will only be called if TRACE is true. + * + * @param message + * the trace message + */ + public void trace(String message); + } + private static ConfigBundle config; private static UiConfigBundle uiconfig; private static StringIdBundle trans; private static Cache cache; private static LocalLibrary lib; private static boolean debug; + private static boolean trace; private static File coverDir; private static File readerTmp; private static File remoteDir; private static String configDir; + private static SyserrHandler syserrHandler; + + private static TraceHandler traceHandler; + static { // Most of the rest is dependent upon this: config = new ConfigBundle(); @@ -84,6 +124,7 @@ public class Instance { } debug = Instance.getConfig().getBoolean(Config.DEBUG_ERR, false); + trace = Instance.getConfig().getBoolean(Config.DEBUG_TRACE, false); coverDir = getFile(Config.DEFAULT_COVERS_DIR); File tmp = getFile(Config.CACHE_DIR); readerTmp = getFile(UiConfig.CACHE_DIR_LOCAL_READER); @@ -248,6 +289,26 @@ public class Instance { } } + /** + * Replace the global syserr handler. + * + * @param syserrHandler + * the new syserr handler + */ + public static void setSyserrHandler(SyserrHandler syserrHandler) { + Instance.syserrHandler = syserrHandler; + } + + /** + * Replace the global trace handler. + * + * @param traceHandler + * the new trace handler + */ + public static void setTraceHandler(TraceHandler traceHandler) { + Instance.traceHandler = traceHandler; + } + /** * Report an error to the user * @@ -255,20 +316,31 @@ public class Instance { * the {@link Exception} to report */ public static void syserr(Exception e) { - if (debug) { - e.printStackTrace(); + if (syserrHandler != null) { + syserrHandler.notify(e, debug); } else { - System.err.println(e.getMessage()); + if (debug) { + e.printStackTrace(); + } else { + System.err.println(e.getMessage()); + } } } /** - * The program is in DEBUG mode (more verbose). + * Notify of a debug message. * - * @return TRUE if it is + * @param message + * the message */ - public static boolean isDebug() { - return debug; + public static void trace(String message) { + if (trace) { + if (traceHandler != null) { + traceHandler.trace(message); + } else { + System.out.println(message); + } + } } /**