X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Foutput%2FEpub.java;h=fc2dc8c982127210c308d6a9dc70a20b667162eb;hb=8d2b0320bee001e24611484cb1d952682ab2d1b6;hp=64797d395f1442d0d49220f4072bb7df832e9634;hpb=276f95c6ca9a79d2fc6879877b240cefb4ceb598;p=nikiroo-utils.git
diff --git a/src/be/nikiroo/fanfix/output/Epub.java b/src/be/nikiroo/fanfix/output/Epub.java
index 64797d3..fc2dc8c 100644
--- a/src/be/nikiroo/fanfix/output/Epub.java
+++ b/src/be/nikiroo/fanfix/output/Epub.java
@@ -36,7 +36,7 @@ class Epub extends BasicOutput {
String targetNameOrig = targetName;
targetName += getDefaultExtension(false);
- tmpDir = File.createTempFile("fanfic-reader-epub_", ".wip");
+ tmpDir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-epub");
tmpDir.delete();
if (!tmpDir.mkdir()) {
@@ -46,51 +46,54 @@ class Epub extends BasicOutput {
super.process(story, targetDir, targetNameOrig);
- // "Originals"
- File data = new File(tmpDir, "DATA");
- data.mkdir();
- BasicOutput.getOutput(OutputType.TEXT, isWriteInfo(), isWriteCover())
- .process(story, data, targetNameOrig);
- InfoCover.writeInfo(data, targetNameOrig, story.getMeta());
- IOUtils.writeSmallFile(data, "version", "3.0");
-
- // zip/epub
- File epub = new File(targetDir, targetName);
- IOUtils.zip(tmpDir, epub, true);
-
- OutputStream out = new FileOutputStream(epub);
+ File epub = null;
try {
- ZipOutputStream zip = new ZipOutputStream(out);
+ // "Originals"
+ File data = new File(tmpDir, "DATA");
+ data.mkdir();
+ BasicOutput.getOutput(OutputType.TEXT, isWriteInfo(),
+ isWriteCover()).process(story, data, targetNameOrig);
+ InfoCover.writeInfo(data, targetNameOrig, story.getMeta());
+ IOUtils.writeSmallFile(data, "version", "3.0");
+
+ // zip/epub
+ epub = new File(targetDir, targetName);
+ IOUtils.zip(tmpDir, epub, true);
+
+ OutputStream out = new FileOutputStream(epub);
try {
- // "mimetype" MUST be the first element and not compressed
- zip.setLevel(ZipOutputStream.STORED);
- File mimetype = new File(tmpDir, "mimetype");
- IOUtils.writeSmallFile(tmpDir, "mimetype",
- "application/epub+zip");
- ZipEntry entry = new ZipEntry("mimetype");
- entry.setExtra(new byte[] {});
- zip.putNextEntry(entry);
- FileInputStream in = new FileInputStream(mimetype);
+ ZipOutputStream zip = new ZipOutputStream(out);
try {
- IOUtils.write(in, zip);
+ // "mimetype" MUST be the first element and not compressed
+ zip.setLevel(ZipOutputStream.STORED);
+ File mimetype = new File(tmpDir, "mimetype");
+ IOUtils.writeSmallFile(tmpDir, "mimetype",
+ "application/epub+zip");
+ ZipEntry entry = new ZipEntry("mimetype");
+ entry.setExtra(new byte[] {});
+ zip.putNextEntry(entry);
+ FileInputStream in = new FileInputStream(mimetype);
+ try {
+ IOUtils.write(in, zip);
+ } finally {
+ in.close();
+ }
+ IOUtils.deltree(mimetype);
+ zip.setLevel(ZipOutputStream.DEFLATED);
+ //
+
+ IOUtils.zip(zip, "", tmpDir, true);
} finally {
- in.close();
+ zip.close();
}
- IOUtils.deltree(mimetype);
- zip.setLevel(ZipOutputStream.DEFLATED);
- //
-
- IOUtils.zip(zip, "", tmpDir, true);
} finally {
- zip.close();
+ out.close();
}
} finally {
- out.close();
+ IOUtils.deltree(tmpDir);
+ tmpDir = null;
}
- IOUtils.deltree(tmpDir);
- tmpDir = null;
-
return epub;
}
@@ -133,8 +136,11 @@ class Epub extends BasicOutput {
// OPS/images
if (story.getMeta() != null && story.getMeta().getCover() != null) {
File file = new File(images, "cover");
- Instance.getCache().saveAsImage(story.getMeta().getCover(), file,
- true);
+ try {
+ Instance.getInstance().getCache().saveAsImage(story.getMeta().getCover(), file, true);
+ } catch (Exception e) {
+ Instance.getInstance().getTraceHandler().error(e);
+ }
}
// OPS/* except chapters
@@ -239,8 +245,7 @@ class Epub extends BasicOutput {
break;
case IMAGE:
File file = new File(images, getCurrentImageBestName(false));
- Instance.getCache().saveAsImage(para.getContentImage(), file,
- nextParaIsCover);
+ Instance.getInstance().getCache().saveAsImage(para.getContentImage(), file, nextParaIsCover);
writer.write(" ");
break;
@@ -351,11 +356,10 @@ class Epub extends BasicOutput {
private void generateNcx(Chapter chap, StringBuilder builder, int navPoint) {
String name;
if (chap.getName() != null && !chap.getName().isEmpty()) {
- name = Instance.getTrans().getString(StringId.CHAPTER_NAMED,
- chap.getNumber(), chap.getName());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_NAMED, chap.getNumber(),
+ chap.getName());
} else {
- name = Instance.getTrans().getString(StringId.CHAPTER_UNNAMED,
- chap.getNumber());
+ name = Instance.getInstance().getTrans().getString(StringId.CHAPTER_UNNAMED, chap.getNumber());
}
String nnn = String.format("%03d", (navPoint - 2));
@@ -433,8 +437,9 @@ class Epub extends BasicOutput {
builder.append("\n ");
if (story.getMeta() != null && story.getMeta().getCover() != null) {
- String format = Instance.getConfig()
- .getString(Config.IMAGE_FORMAT_COVER).toLowerCase();
+ String format = Instance.getInstance().getConfig()
+ .getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER)
+ .toLowerCase();
builder.append("\n - ");
}
@@ -479,8 +484,8 @@ class Epub extends BasicOutput {
author = meta.getAuthor();
}
- String format = Instance.getConfig()
- .getString(Config.IMAGE_FORMAT_COVER).toLowerCase();
+ String format = Instance.getInstance().getConfig()
+ .getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER).toLowerCase();
builder.append("");
builder.append("\n");