package be.nikiroo.fanfix.reader.ui;
+import java.io.IOException;
+
import be.nikiroo.fanfix.bundles.StringIdGui;
import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.data.Story;
* @author niki
*/
public class GuiReaderBookInfo {
+ /**
+ * The type of {@link GuiReaderBook} (i.e., related to a story or to something else that
+ * can encompass stories).
+ *
+ * @author niki
+ */
public enum Type {
/** A normal story, which can be "read". */
STORY,
this.id = id;
this.value = value;
}
+
+ /**
+ * The type of {@link GuiReaderBookInfo}.
+ *
+ * @return the type
+ */
+ public Type getType() {
+ return type;
+ }
/**
* Get the main info to display for this book (a title, an author, a
* the {@link BasicLibrary} to use to fetch the image
*
* @return the base image
+ *
+ * @throws IOException
+ * in case of I/O error
*/
- public Image getBaseImage(BasicLibrary lib) {
+ public Image getBaseImage(BasicLibrary lib) throws IOException {
switch (type) {
case STORY:
- return lib.getCover(meta.getLuid());
+ if (meta.getCover() != null) {
+ return meta.getCover();
+ }
+
+ if (meta.getLuid() != null) {
+ return lib.getCover(meta.getLuid());
+ }
+
+ return null;
case SOURCE:
return lib.getSourceCover(value);
case AUTHOR:
if (uid == null || uid.trim().isEmpty()) {
uid = meta.getLuid();
}
+ if (uid == null || uid.trim().isEmpty()) {
+ uid = meta.getUrl();
+ }
GuiReaderBookInfo info = new GuiReaderBookInfo(Type.STORY, uid,
meta.getTitle());
info.meta = meta;
- info.count = formatNumber(meta.getWords());
+ info.count = StringUtils.formatNumber(meta.getWords());
if (!info.count.isEmpty()) {
info.count = GuiReader.trans(
meta.isImageDocument() ? StringIdGui.BOOK_COUNT_IMAGES
GuiReaderBookInfo info = new GuiReaderBookInfo(Type.SOURCE, "source_"
+ source, source);
- info.count = formatNumber(lib.getListBySource(source).size());
+ int size = 0;
+ try {
+ size = lib.getList().filter(source, null, null).size();
+ } catch (IOException e) {
+ }
+
+ info.count = StringUtils.formatNumber(size);
if (!info.count.isEmpty()) {
info.count = GuiReader.trans(StringIdGui.BOOK_COUNT_STORIES,
info.count);
GuiReaderBookInfo info = new GuiReaderBookInfo(Type.AUTHOR, "author_"
+ author, author);
- info.count = formatNumber(lib.getListByAuthor(author).size());
+ int size = 0;
+ try {
+ size = lib.getList().filter(null, author, null).size();
+ } catch (IOException e) {
+ }
+
+ info.count = StringUtils.formatNumber(size);
if (!info.count.isEmpty()) {
info.count = GuiReader.trans(StringIdGui.BOOK_COUNT_STORIES,
info.count);
return info;
}
-
- /**
- * Format a number for display (use the "k" notation if higher or equal to
- * 4000).
- *
- * @param number
- * the number to parse
- *
- * @return the displayable version of the number
- *
- * @deprecated use {@link StringUtils} after update instead
- */
- @Deprecated
- static private String formatNumber(long number) {
- // TODO: replace with StringUtils after update
- String displayNumber;
- if (number >= 4000) {
- displayNumber = "" + (number / 1000) + "k";
- } else if (number > 0) {
- displayNumber = "" + number;
- } else {
- displayNumber = "";
- }
-
- return displayNumber;
- }
}