From 62c63b0724f4bc45999cb2e7186b4b3ada479a0a Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Tue, 28 Nov 2017 13:50:46 +0100 Subject: [PATCH] Update nikiroo-utils, remove Instance.syserr/trace --- ...es.jar => nikiroo-utils-3.0.0-sources.jar} | Bin 260661 -> 271032 bytes src/be/nikiroo/fanfix/DataLoader.java | 4 +- src/be/nikiroo/fanfix/Instance.java | 52 ++++------- src/be/nikiroo/fanfix/Main.java | 87 ++++++++++-------- src/be/nikiroo/fanfix/VersionCheck.java | 2 +- .../nikiroo/fanfix/library/BasicLibrary.java | 2 +- .../nikiroo/fanfix/library/CacheLibrary.java | 2 +- .../nikiroo/fanfix/library/LocalLibrary.java | 12 +-- .../nikiroo/fanfix/library/RemoteLibrary.java | 10 +- .../fanfix/library/RemoteLibraryServer.java | 8 +- src/be/nikiroo/fanfix/output/InfoCover.java | 4 +- src/be/nikiroo/fanfix/reader/BasicReader.java | 2 +- src/be/nikiroo/fanfix/reader/GuiReader.java | 10 +- .../nikiroo/fanfix/reader/GuiReaderBook.java | 6 +- .../nikiroo/fanfix/reader/GuiReaderFrame.java | 6 +- src/be/nikiroo/fanfix/reader/TuiReader.java | 4 +- .../fanfix/reader/TuiReaderMainWindow.java | 2 +- .../fanfix/supported/BasicSupport.java | 4 +- src/be/nikiroo/fanfix/supported/Cbz.java | 4 +- src/be/nikiroo/fanfix/supported/EHentai.java | 2 +- src/be/nikiroo/fanfix/supported/Epub.java | 2 +- .../nikiroo/fanfix/supported/Fanfiction.java | 4 +- .../nikiroo/fanfix/supported/Fimfiction.java | 2 +- src/be/nikiroo/fanfix/supported/InfoText.java | 2 +- src/be/nikiroo/fanfix/supported/MangaFox.java | 10 +- src/be/nikiroo/fanfix/supported/Text.java | 4 +- 26 files changed, 122 insertions(+), 125 deletions(-) rename libs/{nikiroo-utils-2.2.3-sources.jar => nikiroo-utils-3.0.0-sources.jar} (80%) diff --git a/libs/nikiroo-utils-2.2.3-sources.jar b/libs/nikiroo-utils-3.0.0-sources.jar similarity index 80% rename from libs/nikiroo-utils-2.2.3-sources.jar rename to libs/nikiroo-utils-3.0.0-sources.jar index 55e697f78d6e10fd86287141f04ed0be09b162da..82feb00ed344bcc6ad54ea0ec897f03e8f454406 100644 GIT binary patch delta 25389 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

;--+|VQ=48$^&$>8SV-7{08Z#HSMGz@qIrU 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 delta 15367 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 V!F~XNID{{xHuy6pe} diff --git a/src/be/nikiroo/fanfix/DataLoader.java b/src/be/nikiroo/fanfix/DataLoader.java index e4f40a30..2fd59d89 100644 --- a/src/be/nikiroo/fanfix/DataLoader.java +++ b/src/be/nikiroo/fanfix/DataLoader.java @@ -99,8 +99,8 @@ public class DataLoader { // MUST NOT return null try { InputStream in = cache.load(originalUrl, false, stable); - Instance.trace("Cache " + (in != null ? "hit" : "miss") + ": " - + url); + Instance.getTraceHandler().trace( + "Cache " + (in != null ? "hit" : "miss") + ": " + url); if (in == null) { try { diff --git a/src/be/nikiroo/fanfix/Instance.java b/src/be/nikiroo/fanfix/Instance.java index 97e9868b..ef0ba15e 100644 --- a/src/be/nikiroo/fanfix/Instance.java +++ b/src/be/nikiroo/fanfix/Instance.java @@ -35,6 +35,9 @@ public class Instance { private static TraceHandler tracer; static { + // Before we can configure it: + tracer = new TraceHandler(true, checkEnv("DEBUG"), false); + // Most of the rest is dependent upon this: config = new ConfigBundle(); @@ -58,13 +61,13 @@ public class Instance { config = new ConfigBundle(); config.updateFile(configDir); } catch (IOException e) { - syserr(e); + tracer.error(e); } try { uiconfig = new UiConfigBundle(); uiconfig.updateFile(configDir); } catch (IOException e) { - syserr(e); + tracer.error(e); } // No updateFile for this one! (we do not want the user to have custom @@ -100,15 +103,14 @@ public class Instance { debug = true; } - tracer = new TraceHandler(); - tracer.setShowErrorDetails(debug); - tracer.setShowTraces(trace); + tracer = new TraceHandler(true, debug, trace); try { lib = new LocalLibrary(getFile(Config.LIBRARY_DIR)); } catch (Exception e) { - syserr(new IOException("Cannot create library for directory: " - + getFile(Config.LIBRARY_DIR), e)); + tracer.error(new IOException( + "Cannot create library for directory: " + + getFile(Config.LIBRARY_DIR), e)); } // Could have used: System.getProperty("java.io.tmpdir") @@ -121,7 +123,7 @@ public class Instance { // if (coverDir != null && !coverDir.exists()) { - syserr(new IOException( + tracer.error(new IOException( "The 'default covers' directory does not exists: " + coverDir)); coverDir = null; @@ -135,15 +137,17 @@ public class Instance { cache = new DataLoader(tmp, ua, hours, hoursLarge); } catch (IOException e) { - syserr(new IOException( + tracer.error(new IOException( "Cannot create cache (will continue without cache)", e)); } } /** * The traces handler for this {@link Cache}. + *

+ * It is never NULL. * - * @return the traces handler or NULL + * @return the traces handler (never NULL) */ public static TraceHandler getTraceHandler() { return tracer; @@ -156,6 +160,10 @@ public class Instance { * the new traces handler or NULL */ public static void setTraceHandler(TraceHandler tracer) { + if (tracer == null) { + tracer = new TraceHandler(false, false, false); + } + Instance.tracer = tracer; } @@ -281,34 +289,10 @@ public class Instance { IOUtils.writeSmallFile(new File(configDir), "LAST_UPDATE", Long.toString(new Date().getTime())); } catch (IOException e) { - syserr(e); - } - } - - /** - * Report an error to the user - * - * @param e - * the {@link Exception} to report - */ - public static void syserr(Exception e) { - if (tracer != null) { tracer.error(e); } } - /** - * Notify of a debug message. - * - * @param message - * the message - */ - public static void trace(String message) { - if (tracer != null) { - tracer.trace(message); - } - } - /** * Return a path, but support the special $HOME variable. * diff --git a/src/be/nikiroo/fanfix/Main.java b/src/be/nikiroo/fanfix/Main.java index 813a9b40..70f71ed5 100644 --- a/src/be/nikiroo/fanfix/Main.java +++ b/src/be/nikiroo/fanfix/Main.java @@ -23,9 +23,10 @@ import be.nikiroo.fanfix.reader.Reader.ReaderType; import be.nikiroo.fanfix.supported.BasicSupport; import be.nikiroo.fanfix.supported.BasicSupport.SupportType; import be.nikiroo.utils.Progress; +import be.nikiroo.utils.TraceHandler; import be.nikiroo.utils.Version; -import be.nikiroo.utils.serial.ConnectActionClient; -import be.nikiroo.utils.serial.Server; +import be.nikiroo.utils.serial.server.ConnectActionClientObject; +import be.nikiroo.utils.serial.server.ServerObject; /** * Main program entry point. @@ -98,8 +99,9 @@ public class Main { action = MainAction.valueOf(args[i].substring(2) .toUpperCase().replace("-", "_")); } catch (Exception e) { - Instance.syserr(new IllegalArgumentException( - "Unknown action: " + args[i], e)); + Instance.getTraceHandler().error( + new IllegalArgumentException("Unknown action: " + + args[i], e)); exitCode = 255; } } @@ -272,8 +274,9 @@ public class Main { break; case LIST: if (BasicReader.getReader() == null) { - Instance.syserr(new Exception( - "No reader type has been configured")); + Instance.getTraceHandler() + .error(new Exception( + "No reader type has been configured")); exitCode = 10; break; } @@ -281,8 +284,9 @@ public class Main { break; case READ: if (BasicReader.getReader() == null) { - Instance.syserr(new Exception( - "No reader type has been configured")); + Instance.getTraceHandler() + .error(new Exception( + "No reader type has been configured")); exitCode = 10; break; } @@ -290,8 +294,9 @@ public class Main { break; case READ_URL: if (BasicReader.getReader() == null) { - Instance.syserr(new Exception( - "No reader type has been configured")); + Instance.getTraceHandler() + .error(new Exception( + "No reader type has been configured")); exitCode = 10; break; } @@ -314,8 +319,9 @@ public class Main { break; case START: if (BasicReader.getReader() == null) { - Instance.syserr(new Exception( - "No reader type has been configured")); + Instance.getTraceHandler() + .error(new Exception( + "No reader type has been configured")); exitCode = 10; break; } @@ -327,11 +333,11 @@ public class Main { break; } try { - Server server = new RemoteLibraryServer(key, port); + ServerObject server = new RemoteLibraryServer(key, port); + server.setTraceHandler(new TraceHandler(true, true, true)); server.start(); - System.out.println("Remote server started on: " + port); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } return; case STOP_SERVER: @@ -342,19 +348,19 @@ public class Main { try { final String fkey = key; - new ConnectActionClient(host, port, true) { + new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { try { send(new Object[] { fkey, "EXIT" }); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } }.connect(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } break; case REMOTE: @@ -389,7 +395,7 @@ public class Main { System.out.println(story.getMeta().getLuid() + ": \"" + story.getMeta().getTitle() + "\" imported."); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); return 1; } @@ -415,15 +421,15 @@ public class Main { Progress pg) { OutputType type = OutputType.valueOfNullOkUC(typeString, null); if (type == null) { - Instance.syserr(new Exception(trans(StringId.OUTPUT_DESC, - typeString))); + Instance.getTraceHandler().error( + new Exception(trans(StringId.OUTPUT_DESC, typeString))); return 1; } try { Instance.getLibrary().export(luid, type, target, pg); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); return 4; } @@ -485,15 +491,16 @@ public class Main { reader.setChapter(Integer.parseInt(chapString)); reader.read(); } catch (NumberFormatException e) { - Instance.syserr(new IOException( - "Chapter number cannot be parsed: " + chapString, e)); + Instance.getTraceHandler().error( + new IOException("Chapter number cannot be parsed: " + + chapString, e)); return 2; } } else { reader.read(); } } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); return 1; } @@ -531,8 +538,9 @@ public class Main { OutputType type = OutputType.valueOfAllOkUC(typeString, null); if (type == null) { - Instance.syserr(new IOException(trans( - StringId.ERR_BAD_OUTPUT_TYPE, typeString))); + Instance.getTraceHandler().error( + new IOException(trans(StringId.ERR_BAD_OUTPUT_TYPE, + typeString))); exitCode = 2; } else { @@ -554,25 +562,29 @@ public class Main { BasicOutput.getOutput(type, infoCover).process( story, target, pgOut); } catch (IOException e) { - Instance.syserr(new IOException(trans( - StringId.ERR_SAVING, target), e)); + Instance.getTraceHandler().error( + new IOException(trans(StringId.ERR_SAVING, + target), e)); exitCode = 5; } } else { - Instance.syserr(new IOException(trans( - StringId.ERR_NOT_SUPPORTED, source))); + Instance.getTraceHandler().error( + new IOException(trans( + StringId.ERR_NOT_SUPPORTED, source))); exitCode = 4; } } catch (IOException e) { - Instance.syserr(new IOException(trans(StringId.ERR_LOADING, - sourceName), e)); + Instance.getTraceHandler().error( + new IOException(trans(StringId.ERR_LOADING, + sourceName), e)); exitCode = 3; } } } catch (MalformedURLException e) { - Instance.syserr(new IOException(trans(StringId.ERR_BAD_URL, - sourceName), e)); + Instance.getTraceHandler() + .error(new IOException(trans(StringId.ERR_BAD_URL, + sourceName), e)); exitCode = 1; } @@ -638,8 +650,9 @@ public class Main { BasicReader.setDefaultReaderType(readerType); return 0; } catch (IllegalArgumentException e) { - Instance.syserr(new IOException("Unknown reader type: " - + readerTypeString, e)); + Instance.getTraceHandler().error( + new IOException("Unknown reader type: " + readerTypeString, + e)); return 1; } } diff --git a/src/be/nikiroo/fanfix/VersionCheck.java b/src/be/nikiroo/fanfix/VersionCheck.java index 93244958..62ee8140 100644 --- a/src/be/nikiroo/fanfix/VersionCheck.java +++ b/src/be/nikiroo/fanfix/VersionCheck.java @@ -140,7 +140,7 @@ public class VersionCheck { reader.close(); } } catch (IOException e) { - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot download latest changelist on github.com", e)); } } diff --git a/src/be/nikiroo/fanfix/library/BasicLibrary.java b/src/be/nikiroo/fanfix/library/BasicLibrary.java index d324008f..66fb9435 100644 --- a/src/be/nikiroo/fanfix/library/BasicLibrary.java +++ b/src/be/nikiroo/fanfix/library/BasicLibrary.java @@ -326,7 +326,7 @@ abstract public class BasicLibrary { } catch (IOException e) { // We should not have not-supported files in the // library - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot load file from library: " + file, e)); } finally { pgProcess.done(); diff --git a/src/be/nikiroo/fanfix/library/CacheLibrary.java b/src/be/nikiroo/fanfix/library/CacheLibrary.java index d653332a..da6f56d3 100644 --- a/src/be/nikiroo/fanfix/library/CacheLibrary.java +++ b/src/be/nikiroo/fanfix/library/CacheLibrary.java @@ -80,7 +80,7 @@ public class CacheLibrary extends BasicLibrary { pgImport.done(); clearCache(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } pgImport.done(); diff --git a/src/be/nikiroo/fanfix/library/LocalLibrary.java b/src/be/nikiroo/fanfix/library/LocalLibrary.java index 11c36630..917ce093 100644 --- a/src/be/nikiroo/fanfix/library/LocalLibrary.java +++ b/src/be/nikiroo/fanfix/library/LocalLibrary.java @@ -122,7 +122,7 @@ public class LocalLibrary extends BasicLibrary { meta = InfoReader.readMeta(infoFile, true); return meta.getCover(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } @@ -183,7 +183,7 @@ public class LocalLibrary extends BasicLibrary { InfoCover.writeInfo(newDir, name, meta); relatedFile.delete(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } else { relatedFile.renameTo(new File(newDir, relatedFile.getName())); @@ -209,7 +209,7 @@ public class LocalLibrary extends BasicLibrary { try { ImageIO.write(sourceCovers.get(source), "png", cover); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); sourceCovers.remove(source); } } @@ -472,7 +472,7 @@ public class LocalLibrary extends BasicLibrary { } catch (IOException e) { // We should not have not-supported files in the // library - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot load file from library: " + infoFile, e)); } pgFiles.add(1); @@ -489,7 +489,7 @@ public class LocalLibrary extends BasicLibrary { in.close(); } } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -516,7 +516,7 @@ public class LocalLibrary extends BasicLibrary { try { ImageIO.write(sourceCovers.get(source), "png", cover); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); sourceCovers.remove(source); } } diff --git a/src/be/nikiroo/fanfix/library/RemoteLibrary.java b/src/be/nikiroo/fanfix/library/RemoteLibrary.java index 0a747bdc..f4e8264e 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibrary.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibrary.java @@ -11,7 +11,7 @@ import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.Progress; import be.nikiroo.utils.Version; -import be.nikiroo.utils.serial.ConnectActionClient; +import be.nikiroo.utils.serial.server.ConnectActionClientObject; /** * This {@link BasicLibrary} will access a remote server to list the available @@ -145,25 +145,25 @@ public class RemoteLibrary extends BasicLibrary { private T getRemoteObject(final Object[] command) { final Object[] result = new Object[1]; try { - new ConnectActionClient(host, port, true) { + new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { try { Object rep = send(command); result[0] = rep; } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } }.connect(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } try { return (T) result[0]; } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); return null; } } diff --git a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java index d2d9a6e6..58362938 100644 --- a/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java +++ b/src/be/nikiroo/fanfix/library/RemoteLibraryServer.java @@ -8,8 +8,8 @@ import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.Version; -import be.nikiroo.utils.serial.ConnectActionServer; -import be.nikiroo.utils.serial.Server; +import be.nikiroo.utils.serial.server.ConnectActionServerObject; +import be.nikiroo.utils.serial.server.ServerObject; /** * Create a new remote server that will listen for order on the given port. @@ -32,7 +32,7 @@ import be.nikiroo.utils.serial.Server; * * @author niki */ -public class RemoteLibraryServer extends Server { +public class RemoteLibraryServer extends ServerObject { private final String key; /** @@ -53,7 +53,7 @@ public class RemoteLibraryServer extends Server { } @Override - protected Object onRequest(ConnectActionServer action, + protected Object onRequest(ConnectActionServerObject action, Version clientVersion, Object data) throws Exception { String key = ""; String command = ""; diff --git a/src/be/nikiroo/fanfix/output/InfoCover.java b/src/be/nikiroo/fanfix/output/InfoCover.java index c7c80cc0..a1b37913 100644 --- a/src/be/nikiroo/fanfix/output/InfoCover.java +++ b/src/be/nikiroo/fanfix/output/InfoCover.java @@ -75,8 +75,8 @@ public class InfoCover { targetName + "." + format)); } catch (IOException e) { // Allow to continue without cover - Instance.syserr(new IOException( - "Failed to save the cover image", e)); + Instance.getTraceHandler().error( + new IOException("Failed to save the cover image", e)); } } } diff --git a/src/be/nikiroo/fanfix/reader/BasicReader.java b/src/be/nikiroo/fanfix/reader/BasicReader.java index eef3aef5..0ea403c4 100644 --- a/src/be/nikiroo/fanfix/reader/BasicReader.java +++ b/src/be/nikiroo/fanfix/reader/BasicReader.java @@ -133,7 +133,7 @@ public abstract class BasicReader implements Reader { .getTypeName()); } } catch (Exception e) { - Instance.syserr(new Exception("Cannot create a reader of type: " + Instance.getTraceHandler().error(new Exception("Cannot create a reader of type: " + defaultType + " (Not compiled in?)", e)); } diff --git a/src/be/nikiroo/fanfix/reader/GuiReader.java b/src/be/nikiroo/fanfix/reader/GuiReader.java index 9353794b..b9d59548 100644 --- a/src/be/nikiroo/fanfix/reader/GuiReader.java +++ b/src/be/nikiroo/fanfix/reader/GuiReader.java @@ -117,9 +117,9 @@ class GuiReader extends BasicReader { try { Desktop.getDesktop().browse(e.getURL().toURI()); } catch (IOException ee) { - Instance.syserr(ee); + Instance.getTraceHandler().error(ee); } catch (URISyntaxException ee) { - Instance.syserr(ee); + Instance.getTraceHandler().error(ee); } } }); @@ -152,7 +152,7 @@ class GuiReader extends BasicReader { try { cacheLib.clearFromCache(luid); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -161,7 +161,7 @@ class GuiReader extends BasicReader { try { cacheLib.delete(luid); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -177,7 +177,7 @@ class GuiReader extends BasicReader { try { cacheLib.changeSource(luid, newSource, null); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } diff --git a/src/be/nikiroo/fanfix/reader/GuiReaderBook.java b/src/be/nikiroo/fanfix/reader/GuiReaderBook.java index bf2b5ed9..c70f30a8 100644 --- a/src/be/nikiroo/fanfix/reader/GuiReaderBook.java +++ b/src/be/nikiroo/fanfix/reader/GuiReaderBook.java @@ -384,7 +384,7 @@ class GuiReaderBook extends JPanel { in.close(); in = null; } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -424,9 +424,9 @@ class GuiReaderBook extends JPanel { in = null; } } catch (MalformedURLException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } diff --git a/src/be/nikiroo/fanfix/reader/GuiReaderFrame.java b/src/be/nikiroo/fanfix/reader/GuiReaderFrame.java index 1b4cb66e..cd321ab4 100644 --- a/src/be/nikiroo/fanfix/reader/GuiReaderFrame.java +++ b/src/be/nikiroo/fanfix/reader/GuiReaderFrame.java @@ -556,7 +556,7 @@ class GuiReaderFrame extends JFrame { selectedBook.getMeta().getLuid(), type, path, pg); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } }); @@ -817,7 +817,7 @@ class GuiReaderFrame extends JFrame { }); } catch (IOException e) { // TODO: error message? - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } }); @@ -940,7 +940,7 @@ class GuiReaderFrame extends JFrame { pgOnSuccess.setProgress(0); if (!ok) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { diff --git a/src/be/nikiroo/fanfix/reader/TuiReader.java b/src/be/nikiroo/fanfix/reader/TuiReader.java index c71cf95f..30b9dce5 100644 --- a/src/be/nikiroo/fanfix/reader/TuiReader.java +++ b/src/be/nikiroo/fanfix/reader/TuiReader.java @@ -54,7 +54,7 @@ class TuiReader extends BasicReader { guessBackendType()); new Thread(app).start(); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -65,7 +65,7 @@ class TuiReader extends BasicReader { guessBackendType()); new Thread(app).start(); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } diff --git a/src/be/nikiroo/fanfix/reader/TuiReaderMainWindow.java b/src/be/nikiroo/fanfix/reader/TuiReaderMainWindow.java index f32070cd..10c6466c 100644 --- a/src/be/nikiroo/fanfix/reader/TuiReaderMainWindow.java +++ b/src/be/nikiroo/fanfix/reader/TuiReaderMainWindow.java @@ -151,7 +151,7 @@ class TuiReaderMainWindow extends TWindow { reader.setMeta(meta); reader.read(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport.java b/src/be/nikiroo/fanfix/supported/BasicSupport.java index fb261fb3..ae7521ef 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport.java @@ -398,7 +398,7 @@ public abstract class BasicSupport { try { close(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } if (in != null) { @@ -519,7 +519,7 @@ public abstract class BasicSupport { try { close(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } if (in != null) { diff --git a/src/be/nikiroo/fanfix/supported/Cbz.java b/src/be/nikiroo/fanfix/supported/Cbz.java index b041b6d4..02c667c1 100644 --- a/src/be/nikiroo/fanfix/supported/Cbz.java +++ b/src/be/nikiroo/fanfix/supported/Cbz.java @@ -97,7 +97,7 @@ class Cbz extends Epub { File tmp = Instance.getCache().addToCache(zipIn, uuid); images.add(tmp.toURI().toURL().toString()); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } @@ -113,7 +113,7 @@ class Cbz extends Epub { try { chap.getParagraphs().add(new Paragraph(new URL(uuid))); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } diff --git a/src/be/nikiroo/fanfix/supported/EHentai.java b/src/be/nikiroo/fanfix/supported/EHentai.java index fe993a1d..a25a9949 100644 --- a/src/be/nikiroo/fanfix/supported/EHentai.java +++ b/src/be/nikiroo/fanfix/supported/EHentai.java @@ -267,7 +267,7 @@ class EHentai extends BasicSupport { try { pages.add(new URL(line)); } catch (MalformedURLException e) { - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Parsing error, a link is not correctly parsed: " + line, e)); } diff --git a/src/be/nikiroo/fanfix/supported/Epub.java b/src/be/nikiroo/fanfix/supported/Epub.java index b8c4af07..ad4d65f5 100644 --- a/src/be/nikiroo/fanfix/supported/Epub.java +++ b/src/be/nikiroo/fanfix/supported/Epub.java @@ -128,7 +128,7 @@ class Epub extends InfoText { try { cover = ImageUtils.fromStream(zipIn); } catch (Exception e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } else if (entry.getName().equals(getDataPrefix() + "URL")) { diff --git a/src/be/nikiroo/fanfix/supported/Fanfiction.java b/src/be/nikiroo/fanfix/supported/Fanfiction.java index fd514931..43f16c89 100644 --- a/src/be/nikiroo/fanfix/supported/Fanfiction.java +++ b/src/be/nikiroo/fanfix/supported/Fanfiction.java @@ -161,7 +161,7 @@ class Fanfiction extends BasicSupport { return sdf .format(new Date(1000 * Long.parseLong(line))); } catch (NumberFormatException e) { - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot convert publication date: " + line, e)); } } @@ -261,7 +261,7 @@ class Fanfiction extends BasicSupport { } }); } catch (MalformedURLException e) { - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot parse chapter " + i + " url: " + (base + i + suffix), e)); } diff --git a/src/be/nikiroo/fanfix/supported/Fimfiction.java b/src/be/nikiroo/fanfix/supported/Fimfiction.java index cb26ac6f..24aca5d4 100644 --- a/src/be/nikiroo/fanfix/supported/Fimfiction.java +++ b/src/be/nikiroo/fanfix/supported/Fimfiction.java @@ -251,7 +251,7 @@ class Fimfiction extends BasicSupport { } }); } catch (MalformedURLException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } diff --git a/src/be/nikiroo/fanfix/supported/InfoText.java b/src/be/nikiroo/fanfix/supported/InfoText.java index 771d5102..9ede8448 100644 --- a/src/be/nikiroo/fanfix/supported/InfoText.java +++ b/src/be/nikiroo/fanfix/supported/InfoText.java @@ -67,7 +67,7 @@ class InfoText extends Text { file = new File(url.toURI()); file = new File(file.getPath() + ".info"); } catch (URISyntaxException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); file = null; } diff --git a/src/be/nikiroo/fanfix/supported/MangaFox.java b/src/be/nikiroo/fanfix/supported/MangaFox.java index d6f14642..502cb101 100644 --- a/src/be/nikiroo/fanfix/supported/MangaFox.java +++ b/src/be/nikiroo/fanfix/supported/MangaFox.java @@ -103,7 +103,7 @@ class MangaFox extends BasicSupport { try { in.reset(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } line = getLine(in, "/artist/", 0, false); @@ -262,7 +262,7 @@ class MangaFox extends BasicSupport { } }); } catch (MalformedURLException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } } @@ -309,7 +309,7 @@ class MangaFox extends BasicSupport { try { in.reset(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } String linkImageLine = getLine(in, "return enlarge()", 1); @@ -348,7 +348,7 @@ class MangaFox extends BasicSupport { try { in.close(); } catch (IOException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); } } @@ -361,7 +361,7 @@ class MangaFox extends BasicSupport { setCurrentReferer(url); pg.setProgress((i++) % pg.getMax()); } catch (IOException e) { - Instance.syserr(new IOException( + Instance.getTraceHandler().error(new IOException( "Cannot get the next manga page which is: " + linkNext, e)); } diff --git a/src/be/nikiroo/fanfix/supported/Text.java b/src/be/nikiroo/fanfix/supported/Text.java index c9ebd18d..ff9d264f 100644 --- a/src/be/nikiroo/fanfix/supported/Text.java +++ b/src/be/nikiroo/fanfix/supported/Text.java @@ -156,7 +156,7 @@ class Text extends BasicSupport { try { path = new File(source.toURI()).getPath(); } catch (URISyntaxException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); path = null; } @@ -242,7 +242,7 @@ class Text extends BasicSupport { file = new File(url.toURI()); file = new File(file.getPath() + ".info"); } catch (URISyntaxException e) { - Instance.syserr(e); + Instance.getTraceHandler().error(e); file = null; } -- 2.27.0