package be.nikiroo.fanfix.supported;
import java.io.File;
+import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import be.nikiroo.fanfix.data.Story;
import be.nikiroo.utils.IOUtils;
import be.nikiroo.utils.Image;
+import be.nikiroo.utils.MarkableFileInputStream;
import be.nikiroo.utils.Progress;
/**
String basename = null;
Map<String, Image> images = new HashMap<String, Image>();
+ InputStream cbzIn = null;
+ ZipInputStream zipIn = null;
try {
- ZipInputStream zipIn = new ZipInputStream(getInput());
+ cbzIn = new MarkableFileInputStream(new FileInputStream(
+ getSourceFileOriginal()));
+ zipIn = new ZipInputStream(cbzIn);
for (ZipEntry entry = zipIn.getNextEntry(); entry != null; entry = zipIn
.getNextEntry()) {
if (!entry.isDirectory()
pg.setProgress(90);
- File txt = new File(tmpDir, basename + ".txt");
- if (!txt.exists()) {
- basename = null;
- }
- if (basename != null) {
- try {
- BasicSupport support = BasicSupport.getSupport(txt.toURI()
- .toURL());
- Story origStory = support.process(null);
- story.setChapters(origStory.getChapters());
- story.setMeta(origStory.getMeta());
- } catch (Exception e) {
- basename = null;
- }
- }
-
- if (basename == null) {
+ // include original story
+ Story origStory = getStoryFromTxt(tmpDir, basename);
+ if (origStory != null) {
+ story.setChapters(origStory.getChapters());
+ story.setMeta(origStory.getMeta());
+ } else {
story.setChapters(new ArrayList<Chapter>());
}
} finally {
IOUtils.deltree(tmpDir);
+ if (zipIn != null) {
+ zipIn.close();
+ }
+ if (cbzIn != null) {
+ cbzIn.close();
+ }
}
pg.setProgress(100);
return story;
}
+
+ private Story getStoryFromTxt(File tmpDir, String basename) {
+ Story origStory = null;
+
+ File txt = new File(tmpDir, basename + ".txt");
+ if (!txt.exists()) {
+ basename = null;
+ }
+ if (basename != null) {
+ try {
+ BasicSupport support = BasicSupport.getSupport(txt.toURI()
+ .toURL());
+ origStory = support.process(null);
+ } catch (Exception e) {
+ basename = null;
+ }
+ }
+
+ return origStory;
+
+ }
}
* @author niki
*/
class Epub extends InfoText {
- private File sourceFileOriginal;
-
private MetaData meta;
private File tmpDir;
private String desc;
}
public File getSourceFileOriginal() {
- return sourceFileOriginal;
+ return super.getSourceFile();
}
@Override
@Override
protected InputStream getInput() {
- return fakeIn;
+ if (fakeIn != null) {
+ try {
+ fakeIn.reset();
+ } catch (IOException e) {
+ Instance.getTraceHandler()
+ .error(new IOException(
+ "Cannot reset the Epub Text stream", e));
+ }
+
+ return fakeIn;
+ }
+
+ return null;
}
@Override
.length());
}
- if (expectedLines.size() != resultLines.size()) {
- System.out.println();
- System.out.println("expected: [");
- for (String line : expectedLines)
- System.out.println(line);
- System.out.println("]");
- System.out.println("actual: [");
- for (String line : resultLines)
- System.out.println(line);
- System.out.println("]");
- }
testCase.assertEquals(errMess + ": " + name
+ ": the number of lines is not the same",
expectedLines.size(), resultLines.size());