manage remote and io exception in fanfix
[fanfix.git] / src / be / nikiroo / fanfix / reader / BasicReader.java
index c2a650cf73af2d809d3c609f3bf957c246dbc312..61769c01f87951c5546ae59cc12948e88c1ebe9e 100644 (file)
@@ -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);
                }
@@ -227,14 +227,19 @@ 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());
+               String count = "";
+               if (meta.getWords() > 0) {
+                       count = StringUtils.formatNumber(meta.getWords());
+               }
                if (meta.isImageDocument()) {
-                       metaDesc.put("Number of images", format(meta.getWords()));
+                       metaDesc.put("Number of images", count);
                } else {
-                       metaDesc.put("Number of words", format(meta.getWords()));
+                       metaDesc.put("Number of words", count);
                }
                metaDesc.put("Source", meta.getSource());
                metaDesc.put("Subject", meta.getSubject());
@@ -351,46 +356,32 @@ public abstract class BasicReader implements Reader {
                }
        }
 
-       static private String format(long value) {
-               String display = "";
-               String suffix = "";
-
-               if (value > 4000) {
-                       value = value / 1000;
-                       suffix = "k";
-               }
-
-               while (value > 0) {
-                       if (!display.isEmpty()) {
-                               display = "." + display;
-                       }
-                       display = (value % 1000) + display;
-                       value = value / 1000;
-               }
-
-               return display + suffix;
-       }
-
        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:ssSSS");
+               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 = "";
                }
 
                // :(