X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Fjvcard%2Flauncher%2FMain.java;h=7feaaa4cee28563aa0cdb945e6f99bd1e39d7b03;hb=aa5b4ad473f730a6d780cef9387a79c41ddf47a9;hp=66625f7e37d892f9585c4a21a041191dd1f7e945;hpb=6435013a3d3feabc7b5a4536ca766ffede0c4d5b;p=jvcard.git diff --git a/src/be/nikiroo/jvcard/launcher/Main.java b/src/be/nikiroo/jvcard/launcher/Main.java index 66625f7..7feaaa4 100644 --- a/src/be/nikiroo/jvcard/launcher/Main.java +++ b/src/be/nikiroo/jvcard/launcher/Main.java @@ -15,6 +15,7 @@ import be.nikiroo.jvcard.Contact; import be.nikiroo.jvcard.Data; import be.nikiroo.jvcard.TypeInfo; import be.nikiroo.jvcard.launcher.CardResult.MergeCallback; +import be.nikiroo.jvcard.launcher.Optional.NotSupportedException; import be.nikiroo.jvcard.parsers.Format; import be.nikiroo.jvcard.remote.Command; import be.nikiroo.jvcard.remote.SimpleSocket; @@ -37,7 +38,7 @@ import be.nikiroo.jvcard.resources.enums.StringId; */ public class Main { static public final String APPLICATION_TITLE = "jVcard"; - static public final String APPLICATION_VERSION = "1.0-dev"; + static public final String APPLICATION_VERSION = "1.1-dev"; static private final int ERR_NO_FILE = 1; static private final int ERR_SYNTAX = 2; @@ -63,7 +64,7 @@ public class Main { * @return the translated text with the given value where required */ static public String trans(StringId id, Object... values) { - return transService.getString(id, (Object[]) values); + return transService.getString(id, values); } /** @@ -278,6 +279,7 @@ public class Main { new RemoteBundle().updateFile(dir); } catch (IOException e) { e.printStackTrace(); + System.err.flush(); System.exit(ERR_INTERNAL); } break; @@ -285,14 +287,19 @@ public class Main { case SERVER: { try { Optional.runServer(port); - } catch (Exception e) { - if (e instanceof IOException) { - System.err - .println("I/O Exception: Cannot start the server"); - } else { + } catch (IOException e) { + ERR(StringId.CLI_ERR, StringId.CLI_ERR_CANNOT_START, + ERR_INTERNAL); + return; + } catch (NotSupportedException e) { + if (!e.isCompiledIn()) { ERR(StringId.CLI_ERR, StringId.CLI_ERR_NO_REMOTING, ERR_INTERNAL); return; + } else { + e.printStackTrace(); + ERR(StringId.CLI_ERR, StringId.CLI_ERR, ERR_INTERNAL); + return; } } break; @@ -301,9 +308,9 @@ public class Main { try { transService.updateFile(dir); } catch (IOException e) { - System.err.println(trans(StringId.CLI_ERR_CANNOT_CREATE_LANG, - dir)); - e.printStackTrace(); + ERR(StringId.CLI_ERR, StringId.CLI_ERR_CANNOT_CREATE_LANG, + ERR_INTERNAL); + return; } break; } @@ -316,9 +323,17 @@ public class Main { File f = new File(dir, filename); if (f.exists()) { + System.out.println("Loading " + f); try { - String b64 = StringUtils.fromImage(ImageIO - .read(f)); + String type = "jpeg"; + int dotIndex = filename.indexOf('.'); + if (dotIndex >= 0 + && (dotIndex + 1) < filename.length()) { + type = filename.substring(dotIndex + 1) + .toLowerCase(); + } + + String b64 = StringUtils.fromImage(f); // remove previous photos: for (Data photo = contact @@ -330,7 +345,7 @@ public class Main { List types = new LinkedList(); types.add(new TypeInfo("ENCODING", "b")); - types.add(new TypeInfo("TYPE", "png")); + types.add(new TypeInfo("TYPE", type)); Data photo = new Data(types, "PHOTO", b64, null); contact.add(photo); } catch (IOException e) { @@ -356,6 +371,7 @@ public class Main { if (photo != null) { String filename = contact.toString(format, ""); File f = new File(dir, filename + ".png"); + System.out.println("Saving " + f); try { ImageIO.write( StringUtils.toImage(photo.getValue()), @@ -377,13 +393,17 @@ public class Main { case CONTACT_MANAGER: { try { Optional.startTui(textMode, files); - } catch (Exception e) { - if (e instanceof IOException) { - ERR(StringId.CLI_ERR, StringId.CLI_ERR_CANNOT_START, - ERR_NO_FILE); + } catch (IOException e) { + ERR(StringId.CLI_ERR, StringId.CLI_ERR_CANNOT_START, + ERR_NO_FILE); + return; + } catch (NotSupportedException e) { + if (!e.isCompiledIn()) { + ERR(StringId.CLI_ERR, StringId.CLI_ERR_NO_TUI, ERR_INTERNAL); return; } else { - ERR(StringId.CLI_ERR, StringId.CLI_ERR_NO_TUI, ERR_INTERNAL); + e.printStackTrace(); + ERR(StringId.CLI_ERR, StringId.CLI_ERR, ERR_INTERNAL); return; } } @@ -419,7 +439,8 @@ public class Main { + trans(StringId.CLI_HELP_LANG)); System.out.println("\t--tui : " + trans(StringId.CLI_HELP_TUI)); System.out.println("\t--gui : " + trans(StringId.CLI_HELP_GUI)); - System.out.println("\t--noutf : " + trans(StringId.CLI_HELP_NOUTF)); + System.out.println("\t--noutf : " + + trans(StringId.CLI_HELP_NOUTF_OPTION)); System.out.println("\t--config : " + trans(StringId.CLI_HELP_CONFIG)); System.out.println(); @@ -479,7 +500,7 @@ public class Main { } } catch (IOException ioe) { throw ioe; - } catch (Exception e) { + } catch (NotSupportedException e) { throw new IOException("Remoting support not available", e); } @@ -490,7 +511,7 @@ public class Main { Data name = contact.getPreferredData("FN"); if (name == null || name.getValue().length() == 0 || forceComputedFn) { - name.setValue(contact.toString(defaultFn, "")); + name.setValue(contact.toString(defaultFn, "").trim()); } } } catch (Exception e) { @@ -630,6 +651,7 @@ public class Main { else System.err.println(trans(err, trans(suberr, subvalues))); + System.err.flush(); System.exit(CODE); } }