X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FBasicReader.java;fp=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FBasicReader.java;h=83f2d3c266db52c936b0fe58d5b99e617d61109a;hp=71f19a101bc8b5b3216b66bc2fea24bcde24f7ee;hb=df6e2d88153be63b85aa8c0dfd4dae47762b6f0e;hpb=e87071039531d19e3b075365b7c7d7b80768b996 diff --git a/src/be/nikiroo/fanfix/reader/BasicReader.java b/src/be/nikiroo/fanfix/reader/BasicReader.java index 71f19a1..83f2d3c 100644 --- a/src/be/nikiroo/fanfix/reader/BasicReader.java +++ b/src/be/nikiroo/fanfix/reader/BasicReader.java @@ -4,6 +4,13 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map.Entry; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; @@ -14,6 +21,7 @@ import be.nikiroo.fanfix.library.BasicLibrary; import be.nikiroo.fanfix.library.LocalLibrary; import be.nikiroo.fanfix.supported.BasicSupport; import be.nikiroo.utils.Progress; +import be.nikiroo.utils.StringUtils; import be.nikiroo.utils.serial.SerialUtils; /** @@ -199,6 +207,45 @@ public abstract class BasicReader implements Reader { return source; } + /** + * Describe a {@link Story} from its {@link MetaData} and return a list of + * title/value that represent this {@link Story}. + * + * @param meta + * the {@link MetaData} to represent + * + * @return the information + */ + public static List> getMetaDesc(MetaData meta) { + List> metaDesc = new ArrayList>(); + + // TODO: i18n + + StringBuilder tags = new StringBuilder(); + for (String tag : meta.getTags()) { + if (tags.length() > 0) { + tags.append(", "); + } + tags.append(tag); + } + + metaDesc.add(new SimpleEntry("Author", meta.getAuthor())); + metaDesc.add(new SimpleEntry("Publication date", + formatDate(meta.getDate()))); + metaDesc.add(new SimpleEntry("Published on", meta + .getPublisher())); + metaDesc.add(new SimpleEntry("URL", meta.getUrl())); + metaDesc.add(new SimpleEntry("Word count", format(meta + .getWords()))); + metaDesc.add(new SimpleEntry("Source", meta.getSource())); + metaDesc.add(new SimpleEntry("Subject", meta + .getSubject())); + metaDesc.add(new SimpleEntry("Language", meta.getLang())); + metaDesc.add(new SimpleEntry("Tags", tags.toString())); + + return metaDesc; + } + /** * Open the {@link Story} with an external reader (the program will be * passed the main file associated with this {@link Story}). @@ -307,4 +354,44 @@ public abstract class BasicReader implements Reader { } } } + + static private String format(long value) { + String display = ""; + + while (value > 0) { + if (!display.isEmpty()) { + display = "." + display; + } + 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"); + 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)); + } + + // :( + return date; + } }