Fix UTF-8 and "/" -> "\" issues for Win32
[fanfix.git] / src / be / nikiroo / fanfix / reader / LocalReader.java
CommitLineData
a6395bef
NR
1package be.nikiroo.fanfix.reader;
2
3import java.awt.EventQueue;
4import java.io.File;
5import java.io.IOException;
6
7import be.nikiroo.fanfix.Instance;
8import be.nikiroo.fanfix.Library;
9import be.nikiroo.fanfix.bundles.Config;
10import be.nikiroo.fanfix.data.MetaData;
11import be.nikiroo.fanfix.data.Story;
12import be.nikiroo.fanfix.output.BasicOutput.OutputType;
a6395bef
NR
13
14class LocalReader extends BasicReader {
15 private Library lib;
16
17 public LocalReader() throws IOException {
18 File dir = Instance.getReaderDir();
19 dir.mkdirs();
20 if (!dir.exists()) {
21 throw new IOException(
22 "Cannote create cache directory for local reader: " + dir);
23 }
24
25 // TODO: can throw an exception, manage that (convert to IOEx ?)
26 OutputType text = OutputType.valueOfNullOkUC(Instance.getConfig()
27 .getString(Config.LOCAL_READER_NON_IMAGES_DOCUMENT_TYPE));
28 if (text == null) {
29 text = OutputType.HTML;
30 }
31
32 OutputType images = OutputType.valueOfNullOkUC(Instance.getConfig()
33 .getString(Config.LOCAL_READER_IMAGES_DOCUMENT_TYPE));
34 if (images == null) {
35 images = OutputType.CBZ;
36 }
37 //
38
39 lib = new Library(dir, text, images);
40 }
41
42 @Override
43 public void read() throws IOException {
44 }
45
46 @Override
47 public void read(int chapter) {
48 }
49
50 // return new luid
3d247bc3 51 public String imprt(String luid) throws IOException {
a6395bef
NR
52 try {
53 Story story = Instance.getLibrary().getStory(luid);
3d247bc3
NR
54 if (story != null) {
55 story = lib.save(story);
56 return story.getMeta().getLuid();
57 } else {
58 throw new IOException("Cannot find story in Library: " + luid);
59 }
a6395bef 60 } catch (IOException e) {
3d247bc3 61 throw new IOException(
a6395bef 62 "Cannot import story from library to LocalReader library: "
3d247bc3 63 + luid, e);
a6395bef 64 }
a6395bef
NR
65 }
66
3d247bc3 67 public File getTarget(String luid) throws IOException {
a6395bef
NR
68 MetaData meta = lib.getInfo(luid);
69 File file = lib.getFile(luid);
70 if (file == null) {
71 luid = imprt(luid);
72 file = lib.getFile(luid);
73 meta = lib.getInfo(luid);
74 }
75
76 return file;
77 }
78
79 @Override
333f0e7b
NR
80 public void start(String type) {
81 final String typeFinal = type;
a6395bef
NR
82 EventQueue.invokeLater(new Runnable() {
83 public void run() {
84 new LocalReaderFrame(LocalReader.this, typeFinal)
85 .setVisible(true);
86 }
87 });
88 }
a6395bef 89}