X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FBasicReader.java;h=7f79da3a8ec62b854b7bcdba62838a23779fcaf4;hp=008e4d5bd06c22d3851e1c2b9442a13eb41b2adf;hb=d66deb8d8b30cff6b54db352eef34a3508939f84;hpb=a6c830bb1ea8527a3600aa6d0e05d5b2291c4b15 diff --git a/src/be/nikiroo/fanfix/reader/BasicReader.java b/src/be/nikiroo/fanfix/reader/BasicReader.java index 008e4d5..7f79da3 100644 --- a/src/be/nikiroo/fanfix/reader/BasicReader.java +++ b/src/be/nikiroo/fanfix/reader/BasicReader.java @@ -30,7 +30,7 @@ import be.nikiroo.utils.serial.SerialUtils; * @author niki */ public abstract class BasicReader implements Reader { - private static BasicLibrary defaultLibrary = Instance.getLibrary(); + private static BasicLibrary defaultLibrary = Instance.getInstance().getLibrary(); private static ReaderType defaultType = ReaderType.GUI; private BasicLibrary lib; @@ -42,7 +42,7 @@ public abstract class BasicReader implements Reader { * Take the default reader type configuration from the config file. */ static { - String typeString = Instance.getConfig().getString(Config.READER_TYPE); + String typeString = Instance.getInstance().getConfig().getString(Config.READER_TYPE); if (typeString != null && !typeString.isEmpty()) { try { ReaderType type = ReaderType.valueOf(typeString.toUpperCase()); @@ -54,7 +54,7 @@ public abstract class BasicReader implements Reader { } @Override - public synchronized Story getStory(Progress pg) { + public synchronized Story getStory(Progress pg) throws IOException { if (story == null) { story = getLibrary().getStory(meta.getLuid(), pg); } @@ -137,9 +137,8 @@ public abstract class BasicReader implements Reader { .getTypeName()); } } catch (Exception e) { - Instance.getTraceHandler().error( - new Exception("Cannot create a reader of type: " - + defaultType + " (Not compiled in?)", e)); + Instance.getInstance().getTraceHandler() + .error(new Exception("Cannot create a reader of type: " + defaultType + " (Not compiled in?)", e)); } return null; @@ -227,11 +226,20 @@ public abstract class BasicReader implements Reader { tags.append(tag); } + // TODO: i18n metaDesc.put("Author", meta.getAuthor()); metaDesc.put("Publication date", formatDate(meta.getDate())); metaDesc.put("Published on", meta.getPublisher()); metaDesc.put("URL", meta.getUrl()); - metaDesc.put("Word count", format(meta.getWords())); + String count = ""; + if (meta.getWords() > 0) { + count = StringUtils.formatNumber(meta.getWords()); + } + if (meta.isImageDocument()) { + metaDesc.put("Number of images", count); + } else { + metaDesc.put("Number of words", count); + } metaDesc.put("Source", meta.getSource()); metaDesc.put("Subject", meta.getSubject()); metaDesc.put("Language", meta.getLang()); @@ -283,11 +291,9 @@ public abstract class BasicReader implements Reader { throws IOException { String program = null; if (meta.isImageDocument()) { - program = Instance.getUiConfig().getString( - UiConfig.IMAGES_DOCUMENT_READER); + program = Instance.getInstance().getUiConfig().getString(UiConfig.IMAGES_DOCUMENT_READER); } else { - program = Instance.getUiConfig().getString( - UiConfig.NON_IMAGES_DOCUMENT_READER); + program = Instance.getInstance().getUiConfig().getString(UiConfig.NON_IMAGES_DOCUMENT_READER); } if (program != null && program.trim().isEmpty()) { @@ -321,10 +327,8 @@ public abstract class BasicReader implements Reader { for (String starter : new String[] { "xdg-open", "open", "see", "start", "run" }) { try { - Instance.getTraceHandler().trace( - "starting external program"); - proc = Runtime.getRuntime().exec( - new String[] { starter, target.getAbsolutePath() }); + Instance.getInstance().getTraceHandler().trace("starting external program"); + proc = Runtime.getRuntime().exec(new String[] { starter, target.getAbsolutePath() }); ok = true; break; } catch (IOException e) { @@ -334,55 +338,45 @@ public abstract class BasicReader implements Reader { throw new IOException("Cannot find a program to start the file"); } } else { - Instance.getTraceHandler().trace("starting external program"); + Instance.getInstance().getTraceHandler().trace("starting external program"); proc = Runtime.getRuntime().exec( new String[] { program, target.getAbsolutePath() }); } if (proc != null && sync) { - while (proc.isAlive()) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - } - } - - static private String format(long value) { - String display = ""; - - while (value > 0) { - if (!display.isEmpty()) { - display = "." + display; + try { + proc.waitFor(); + } catch (InterruptedException e) { } - display = (value % 1000) + display; - value = value / 1000; } - - return display; } static private String formatDate(String date) { long ms = 0; - try { - ms = StringUtils.toTime(date); - } catch (ParseException e) { - } - - if (ms <= 0) { - SimpleDateFormat sdf = new SimpleDateFormat( - "yyyy-MM-dd'T'HH:mm:ssXXX"); + if (date != null && !date.isEmpty()) { try { - ms = sdf.parse(date).getTime(); + ms = StringUtils.toTime(date); } catch (ParseException e) { } + + if (ms <= 0) { + SimpleDateFormat sdf = new SimpleDateFormat( + "yyyy-MM-dd'T'HH:mm:ssSSS"); + try { + ms = sdf.parse(date).getTime(); + } catch (ParseException e) { + } + } + + if (ms > 0) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(new Date(ms)); + } } - if (ms > 0) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - return sdf.format(new Date(ms)); + if (date == null) { + date = ""; } // :(