Code cleanup 3 and update jexer-niki :
[fanfix.git] / src / be / nikiroo / fanfix / reader / CliReader.java
1 package be.nikiroo.fanfix.reader;
2
3 import java.io.IOException;
4 import java.util.List;
5
6 import be.nikiroo.fanfix.Instance;
7 import be.nikiroo.fanfix.bundles.StringId;
8 import be.nikiroo.fanfix.data.Chapter;
9 import be.nikiroo.fanfix.data.MetaData;
10 import be.nikiroo.fanfix.data.Paragraph;
11 import be.nikiroo.fanfix.data.Story;
12
13 /**
14 * Command line {@link Story} reader.
15 * <p>
16 * Will output stories to the console.
17 *
18 * @author niki
19 */
20 class CliReader extends BasicReader {
21 public void read() throws IOException {
22 MetaData meta = getMeta();
23
24 if (meta == null) {
25 throw new IOException("No story to read");
26 }
27
28 String title = "";
29 String author = "";
30
31 if (meta.getTitle() != null) {
32 title = meta.getTitle();
33 }
34
35 if (meta.getAuthor() != null) {
36 author = "©" + meta.getAuthor();
37 if (meta.getDate() != null && !meta.getDate().isEmpty()) {
38 author = author + " (" + meta.getDate() + ")";
39 }
40 }
41
42 System.out.println(title);
43 System.out.println(author);
44 System.out.println("");
45
46 // TODO: progress?
47 for (Chapter chap : getStory(null)) {
48 if (chap.getName() != null && !chap.getName().isEmpty()) {
49 System.out.println(Instance.getTrans().getString(
50 StringId.CHAPTER_NAMED, chap.getNumber(),
51 chap.getName()));
52 } else {
53 System.out.println(Instance.getTrans().getString(
54 StringId.CHAPTER_UNNAMED, chap.getNumber()));
55 }
56 }
57 }
58
59 public void read(int chapter) throws IOException {
60 MetaData meta = getMeta();
61
62 if (meta == null) {
63 throw new IOException("No story to read");
64 }
65
66 // TODO: progress?
67 if (chapter > getStory(null).getChapters().size()) {
68 System.err.println("Chapter " + chapter + ": no such chapter");
69 } else {
70 Chapter chap = getStory(null).getChapters().get(chapter - 1);
71 System.out.println("Chapter " + chap.getNumber() + ": "
72 + chap.getName());
73
74 for (Paragraph para : chap) {
75 System.out.println(para.getContent());
76 System.out.println("");
77 }
78 }
79 }
80
81 public void browse(String source) {
82 List<MetaData> stories;
83 stories = getLibrary().getListBySource(source);
84
85 for (MetaData story : stories) {
86 String author = "";
87 if (story.getAuthor() != null && !story.getAuthor().isEmpty()) {
88 author = " (" + story.getAuthor() + ")";
89 }
90
91 System.out.println(story.getLuid() + ": " + story.getTitle()
92 + author);
93 }
94 }
95 }