import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
import be.nikiroo.fanfix.data.Story;
import be.nikiroo.utils.Progress;
+import be.nikiroo.utils.Version;
/**
* This class is the base class used by the other output classes. It can be used
;
+ @Override
public String toString() {
return super.toString().toLowerCase();
}
StringId id = longDesc ? StringId.OUTPUT_DESC
: StringId.OUTPUT_DESC_SHORT;
- String desc = Instance.getTrans().getStringX(id, this.name());
+ String desc = Instance.getInstance().getTrans().getStringX(id, this.name());
if (desc == null) {
- desc = Instance.getTrans().getString(id, this);
+ desc = Instance.getInstance().getTrans().getString(id, this.toString());
}
- if (desc == null) {
+ if (desc == null || desc.isEmpty()) {
desc = this.toString();
}
* The default extension to add to the output files.
*
* @param readerTarget
- * the target to point to to read the {@link Story} (for
- * instance, the main entry point if this {@link Story} is in
- * a directory bundle)
+ * TRUE to point to the main {@link Story} entry point for a
+ * reader (for instance, the main entry point if this
+ * {@link Story} is in a directory bundle), FALSE to point to
+ * the main file even if it is a directory for instance
*
* @return the extension
*/
public String getDefaultExtension(boolean readerTarget) {
- BasicOutput output = BasicOutput.getOutput(this, false);
+ BasicOutput output = BasicOutput.getOutput(this, false, false);
if (output != null) {
return output.getDefaultExtension(readerTarget);
}
}
/**
- * Call {@link OutputType#valueOf(String.toUpperCase())}.
+ * Call {@link OutputType#valueOf(String)} after conversion to upper
+ * case.
*
* @param typeName
* the possible type name
}
/**
- * Call {@link OutputType#valueOf(String.toUpperCase())} but return NULL
- * for NULL and empty instead of raising an exception.
+ * Call {@link OutputType#valueOf(String)} after conversion to upper
+ * case but return def for NULL and empty instead of raising an
+ * exception.
*
* @param typeName
* the possible type name
+ * @param def
+ * the default value
*
* @return NULL or the type
*/
- public static OutputType valueOfNullOkUC(String typeName) {
+ public static OutputType valueOfNullOkUC(String typeName, OutputType def) {
if (typeName == null || typeName.isEmpty()) {
- return null;
+ return def;
}
return OutputType.valueOfUC(typeName);
}
/**
- * Call {@link OutputType#valueOf(String.toUpperCase())} but return NULL
- * in case of error instead of raising an exception.
+ * Call {@link OutputType#valueOf(String)} after conversion to upper
+ * case but return def in case of error instead of raising an exception.
*
* @param typeName
* the possible type name
+ * @param def
+ * the default value
*
* @return NULL or the type
*/
- public static OutputType valueOfAllOkUC(String typeName) {
+ public static OutputType valueOfAllOkUC(String typeName, OutputType def) {
try {
return OutputType.valueOfUC(typeName);
} catch (Exception e) {
- return null;
+ return def;
}
}
}
/** The creator name (this program, by me!) */
- static final String EPUB_CREATOR = "Fanfix (by Niki)";
+ static protected final String EPUB_CREATOR = "Fanfix "
+ + Version.getCurrentVersion() + " (by Niki)";
/** The current best name for an image */
private String imageName;
return type;
}
+ /**
+ * Enable the creation of a .info file next to the resulting processed file.
+ *
+ * @return TRUE to enable it
+ */
+ protected boolean isWriteInfo() {
+ return writeInfo;
+ }
+
+ /**
+ * Enable the creation of a cover file next to the resulting processed file
+ * if possible.
+ *
+ * @return TRUE to enable it
+ */
+ protected boolean isWriteCover() {
+ return writeCover;
+ }
+
/**
* The output type.
*
* @param type
* the new type
- * @param infoCover
- * TRUE to enable the creation of a .info file and a cover if
- * possible
+ * @param writeCover
+ * TRUE to enable the creation of a cover if possible
+ * @param writeInfo
+ * TRUE to enable the creation of a .info file
*
* @return this
*/
- protected BasicOutput setType(OutputType type, boolean writeCover,
- boolean writeInfo) {
+ protected BasicOutput setType(OutputType type, boolean writeInfo,
+ boolean writeCover) {
this.type = type;
- this.writeCover = writeCover;
this.writeInfo = writeInfo;
+ this.writeCover = writeCover;
return this;
}
* The default extension to add to the output files.
*
* @param readerTarget
- * the target to point to to read the {@link Story} (for
- * instance, the main entry point if this {@link Story} is in a
- * directory bundle)
+ * TRUE to point to the main {@link Story} entry point for a
+ * reader (for instance, the main entry point if this
+ * {@link Story} is in a directory bundle), FALSE to point to the
+ * main file even if it is a directory for instance
*
* @return the extension
*/
- public String getDefaultExtension(boolean readerTarget) {
+ public String getDefaultExtension(
+ @SuppressWarnings("unused") boolean readerTarget) {
return "";
}
+ @SuppressWarnings("unused")
protected void writeStoryHeader(Story story) throws IOException {
}
+ @SuppressWarnings("unused")
protected void writeChapterHeader(Chapter chap) throws IOException {
}
+ @SuppressWarnings("unused")
protected void writeParagraphHeader(Paragraph para) throws IOException {
}
+ @SuppressWarnings("unused")
protected void writeStoryFooter(Story story) throws IOException {
}
+ @SuppressWarnings("unused")
protected void writeChapterFooter(Chapter chap) throws IOException {
}
+ @SuppressWarnings("unused")
protected void writeParagraphFooter(Paragraph para) throws IOException {
}
String chapterNameNum = String.format("%03d", 0);
String paragraphNumber = String.format("%04d", 0);
- imageName = paragraphNumber + "_" + chapterNameNum + ".png";
+ imageName = paragraphNumber + "_" + chapterNameNum;
if (story.getMeta() != null) {
story.getMeta().setType("" + getType());
}
- if (writeCover) {
+ if (isWriteCover()) {
InfoCover.writeCover(targetDir, targetName, story.getMeta());
}
- if (writeInfo) {
+ if (isWriteInfo()) {
InfoCover.writeInfo(targetDir, targetName, story.getMeta());
}
int num = 0;
String paragraphNumber = String.format("%04d", num++);
- imageName = chapterNameNum + "_" + paragraphNumber + ".png";
+ imageName = chapterNameNum + "_" + paragraphNumber;
writeChapterHeader(chap);
int i = 1;
for (Paragraph para : chap) {
paragraphNumber = String.format("%04d", num++);
- imageName = chapterNameNum + "_" + paragraphNumber + ".png";
+ imageName = chapterNameNum + "_" + paragraphNumber;
writeParagraph(para);
if (chapPg != null) {
chapPg.setProgress(i++);
writeParagraphFooter(para);
}
+ @SuppressWarnings("unused")
protected void writeTextLine(ParagraphType type, String line)
throws IOException {
}
*
* @param type
* the type
- * @param infoCover
- * force the <tt>.info</tt> file and the cover to be saved next
+ * @param writeCover
+ * TRUE to enable the creation of a cover if possible to be saved
+ * next to the main target file
+ * @param writeInfo
+ * TRUE to enable the creation of a .info file to be saved next
* to the main target file
*
* @return the {@link BasicOutput}
*/
- public static BasicOutput getOutput(OutputType type, boolean infoCover) {
+ public static BasicOutput getOutput(OutputType type, boolean writeInfo,
+ boolean writeCover) {
if (type != null) {
switch (type) {
case EPUB:
- return new Epub().setType(type, infoCover, infoCover);
+ return new Epub().setType(type, writeInfo, writeCover);
case TEXT:
- return new Text().setType(type, true, infoCover);
+ return new Text().setType(type, writeInfo, true);
case INFO_TEXT:
return new InfoText().setType(type, true, true);
case SYSOUT:
return new Sysout().setType(type, false, false);
case CBZ:
- return new Cbz().setType(type, infoCover, infoCover);
+ return new Cbz().setType(type, writeInfo, writeCover);
case LATEX:
- return new LaTeX().setType(type, infoCover, infoCover);
+ return new LaTeX().setType(type, writeInfo, writeCover);
case HTML:
- return new Html().setType(type, infoCover, infoCover);
+ return new Html().setType(type, writeInfo, writeCover);
}
}