X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=reader%2Fcli%2FCliReader.java;h=9ec37a583d983cee46333f32f793ea1dc04dc3b1;hb=HEAD;hp=2a085a76e0b0829762c1b63794dc6a303d590143;hpb=0fc81e6465aa9c1f1dfc19b532082220d609768a;p=fanfix.git
diff --git a/reader/cli/CliReader.java b/reader/cli/CliReader.java
deleted file mode 100644
index 2a085a7..0000000
--- a/reader/cli/CliReader.java
+++ /dev/null
@@ -1,250 +0,0 @@
-package be.nikiroo.fanfix.reader.cli;
-
-import java.io.IOException;
-import java.util.List;
-
-import be.nikiroo.fanfix.Instance;
-import be.nikiroo.fanfix.bundles.StringId;
-import be.nikiroo.fanfix.data.Chapter;
-import be.nikiroo.fanfix.data.MetaData;
-import be.nikiroo.fanfix.data.Paragraph;
-import be.nikiroo.fanfix.data.Story;
-import be.nikiroo.fanfix.reader.BasicReader;
-import be.nikiroo.fanfix.searchable.BasicSearchable;
-import be.nikiroo.fanfix.searchable.SearchableTag;
-import be.nikiroo.fanfix.supported.SupportType;
-import be.nikiroo.utils.StringUtils;
-
-/**
- * Command line {@link Story} reader.
- *
- * Will output stories to the console.
- *
- * @author niki
- */
-class CliReader extends BasicReader {
- @Override
- public void read(boolean sync) throws IOException {
- MetaData meta = getMeta();
-
- if (meta == null) {
- throw new IOException("No story to read");
- }
-
- String title = "";
- String author = "";
-
- if (meta.getTitle() != null) {
- title = meta.getTitle();
- }
-
- if (meta.getAuthor() != null) {
- author = "©" + meta.getAuthor();
- if (meta.getDate() != null && !meta.getDate().isEmpty()) {
- author = author + " (" + meta.getDate() + ")";
- }
- }
-
- System.out.println(title);
- System.out.println(author);
- System.out.println("");
-
- // TODO: progress?
- for (Chapter chap : getStory(null)) {
- if (chap.getName() != null && !chap.getName().isEmpty()) {
- System.out.println(Instance.getTrans().getString(
- StringId.CHAPTER_NAMED, chap.getNumber(),
- chap.getName()));
- } else {
- System.out.println(Instance.getTrans().getString(
- StringId.CHAPTER_UNNAMED, chap.getNumber()));
- }
- }
- }
-
- public void read(int chapter) throws IOException {
- MetaData meta = getMeta();
-
- if (meta == null) {
- throw new IOException("No story to read");
- }
-
- // TODO: progress?
- if (chapter > getStory(null).getChapters().size()) {
- System.err.println("Chapter " + chapter + ": no such chapter");
- } else {
- Chapter chap = getStory(null).getChapters().get(chapter - 1);
- System.out.println("Chapter " + chap.getNumber() + ": "
- + chap.getName());
-
- for (Paragraph para : chap) {
- System.out.println(para.getContent());
- System.out.println("");
- }
- }
- }
-
- @Override
- public void browse(String source) throws IOException {
- List stories = getLibrary().getListBySource(source);
-
- for (MetaData story : stories) {
- String author = "";
- if (story.getAuthor() != null && !story.getAuthor().isEmpty()) {
- author = " (" + story.getAuthor() + ")";
- }
-
- System.out.println(story.getLuid() + ": " + story.getTitle()
- + author);
- }
- }
-
- @Override
- public void search(boolean sync) throws IOException {
- for (SupportType type : SupportType.values()) {
- if (BasicSearchable.getSearchable(type) != null) {
- System.out.println(type);
- }
- }
- }
-
- @Override
- public void search(SupportType searchOn, String keywords, int page,
- int item, boolean sync) throws IOException {
- BasicSearchable search = BasicSearchable.getSearchable(searchOn);
-
- if (page == 0) {
- System.out.println(search.searchPages(keywords));
- } else {
- List metas = search.search(keywords, page);
-
- if (item == 0) {
- System.out.println("Page " + page + " of stories for: "
- + keywords);
- displayStories(metas);
- } else {
- // ! 1-based index !
- if (item <= 0 || item > metas.size()) {
- throw new IOException("Index out of bounds: " + item);
- }
-
- MetaData meta = metas.get(item - 1);
- displayStory(meta);
- }
- }
- }
-
- @Override
- public void searchTag(SupportType searchOn, int page, int item,
- boolean sync, Integer... tags) throws IOException {
-
- BasicSearchable search = BasicSearchable.getSearchable(searchOn);
- SearchableTag stag = search.getTag(tags);
-
- if (stag == null) {
- // TODO i18n
- System.out.println("Known tags: ");
- int i = 1;
- for (SearchableTag s : search.getTags()) {
- System.out.println(String.format("%d: %s", i, s.getName()));
- i++;
- }
- } else {
- if (page <= 0) {
- if (stag.isLeaf()) {
- System.out.println(search.searchPages(stag));
- } else {
- System.out.println(stag.getCount());
- }
- } else {
- List metas = null;
- List subtags = null;
- int count;
-
- if (stag.isLeaf()) {
- metas = search.search(stag, page);
- count = metas.size();
- } else {
- subtags = stag.getChildren();
- count = subtags.size();
- }
-
- if (item > 0) {
- if (item <= count) {
- if (metas != null) {
- MetaData meta = metas.get(item - 1);
- displayStory(meta);
- } else {
- SearchableTag subtag = subtags.get(item - 1);
- displayTag(subtag);
- }
- } else {
- System.out.println("Invalid item: only " + count
- + " items found");
- }
- } else {
- if (metas != null) {
- // TODO i18n
- System.out.println(String.format("Content of %s: ",
- stag.getFqName()));
- displayStories(metas);
- } else {
- // TODO i18n
- System.out.println(String.format("Subtags of %s: ",
- stag.getFqName()));
- displayTags(subtags);
- }
- }
- }
- }
- }
-
- private void displayTag(SearchableTag subtag) {
- // TODO: i18n
- String stories = "stories";
- String num = StringUtils.formatNumber(subtag.getCount());
- System.out.println(String.format("%s (%s), %s %s", subtag.getName(),
- subtag.getFqName(), num, stories));
- }
-
- private void displayStory(MetaData meta) {
- System.out.println(meta.getTitle());
- System.out.println();
- System.out.println(meta.getUrl());
- System.out.println();
- System.out.println("Tags: " + meta.getTags());
- System.out.println();
- for (Paragraph para : meta.getResume()) {
- System.out.println(para.getContent());
- System.out.println("");
- }
- }
-
- private void displayTags(List subtags) {
- int i = 1;
- for (SearchableTag subtag : subtags) {
- String total = "";
- if (subtag.getCount() > 0) {
- total = StringUtils.formatNumber(subtag.getCount());
- }
-
- if (total.isEmpty()) {
- System.out
- .println(String.format("%d: %s", i, subtag.getName()));
- } else {
- System.out.println(String.format("%d: %s (%s)", i,
- subtag.getName(), total));
- }
-
- i++;
- }
- }
-
- private void displayStories(List metas) {
- int i = 1;
- for (MetaData meta : metas) {
- System.out.println(i + ": " + meta.getTitle());
- i++;
- }
- }
-}