X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FMain.java;h=70f71ed58a17be21ba36cb5505adcc52056e8596;hb=62c63b0724f4bc45999cb2e7186b4b3ada479a0a;hp=6a8a4a5af7542dccb07e8ffd5ba97dccd1abb05a;hpb=5e848e6a19a87f4e14b13147f628667376503d74;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/Main.java b/src/be/nikiroo/fanfix/Main.java index 6a8a4a5..70f71ed 100644 --- a/src/be/nikiroo/fanfix/Main.java +++ b/src/be/nikiroo/fanfix/Main.java @@ -4,9 +4,11 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.List; import be.nikiroo.fanfix.bundles.StringId; import be.nikiroo.fanfix.data.Chapter; +import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.library.BasicLibrary; import be.nikiroo.fanfix.library.CacheLibrary; @@ -21,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. @@ -62,9 +65,10 @@ public class Main { *
  • --set-reader [reader type]: set the reader type to CLI, TUI or LOCAL * for this command
  • *
  • --version: get the version of the program
  • - *
  • --server [port]: start a server on this port
  • - *
  • --stop-server [port]: stop the running server on this port if any
  • - *
  • --remote [host] [port]: use a the given remote library
  • + *
  • --server [key] [port]: start a server on this port
  • + *
  • --stop-server [key] [port]: stop the running server on this port if + * any
  • + *
  • --remote [key] [host] [port]: use a the given remote library
  • * * * @param args @@ -76,6 +80,7 @@ public class Main { String sourceString = null; String chapString = null; String target = null; + String key = null; MainAction action = MainAction.START; Boolean plusInfo = null; String host = null; @@ -94,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; } } @@ -179,20 +185,24 @@ public class Main { break; case SERVER: case STOP_SERVER: - if (port == null) { + if (key == null) { + key = args[i]; + } else if (port == null) { port = Integer.parseInt(args[i]); } else { exitCode = 255; } break; case REMOTE: - if (host == null) { + if (key == null) { + key = args[i]; + } else if (host == null) { host = args[i]; } else if (port == null) { port = Integer.parseInt(args[i]); File remoteCacheDir = Instance.getRemoteDir(host); - BasicLibrary lib = new RemoteLibrary(host, port); + BasicLibrary lib = new RemoteLibrary(key, host, port); lib = new CacheLibrary(remoteCacheDir, lib); BasicReader.setDefaultLibrary(lib); @@ -264,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; } @@ -273,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; } @@ -282,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; } @@ -306,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; } @@ -319,11 +333,11 @@ public class Main { break; } try { - Server server = new RemoteLibraryServer(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: @@ -333,19 +347,20 @@ public class Main { } try { - new ConnectActionClient(host, port, true) { + final String fkey = key; + new ConnectActionClientObject(host, port, true) { @Override public void action(Version serverVersion) throws Exception { try { - send(new Object[] { "EXIT" }); + 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: @@ -380,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; } @@ -406,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; } @@ -432,7 +447,18 @@ public class Main { * @return the exit return code (0 = success) */ private static int list(String source) { - BasicReader.getReader().browse(source); + List stories; + stories = BasicReader.getReader().getLibrary().getListBySource(source); + + for (MetaData story : stories) { + String author = ""; + if (story.getAuthor() != null && !story.getAuthor().isEmpty()) { + author = " (" + story.getAuthor() + ")"; + } + + System.out.println(story.getLuid() + ": " + story.getTitle() + + author); + } return 0; } @@ -465,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; } @@ -511,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 { @@ -534,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; } @@ -618,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; } }