X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FInstance.java;h=4cf6e86113e46c620ae50ed87022ddc49e4f0eeb;hb=a8209dd0972f751e59153dd80a53f3062042897a;hp=f9060f440b5e2cc9fecd95090508bfd45d692291;hpb=68e2c6d20049d713de1bd31b749450b2f60d8340;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/Instance.java b/src/be/nikiroo/fanfix/Instance.java index f9060f4..4cf6e86 100644 --- a/src/be/nikiroo/fanfix/Instance.java +++ b/src/be/nikiroo/fanfix/Instance.java @@ -9,6 +9,8 @@ import be.nikiroo.fanfix.bundles.ConfigBundle; import be.nikiroo.fanfix.bundles.StringIdBundle; import be.nikiroo.fanfix.bundles.UiConfig; import be.nikiroo.fanfix.bundles.UiConfigBundle; +import be.nikiroo.fanfix.library.BasicLibrary; +import be.nikiroo.fanfix.library.LocalLibrary; import be.nikiroo.fanfix.output.BasicOutput.OutputType; import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.resources.Bundles; @@ -19,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(); @@ -82,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); @@ -246,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 * @@ -253,10 +316,30 @@ 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()); + } + } + } + + /** + * Notify of a debug message. + * + * @param message + * the message + */ + public static void trace(String message) { + if (trace) { + if (traceHandler != null) { + traceHandler.trace(message); + } else { + System.out.println(message); + } } }