*
* @param baseDir
* the directory where to find the {@link Story} objects
+ * @param text
+ * the {@link OutputType} to use for non-image documents
+ * @param image
+ * the {@link OutputType} to use for image documents
+ * @param defaultIsHtml
+ * if the given text or image is invalid, use HTML by default (if
+ * not, it will be INFO_TEXT/CBZ by default)
*/
public LocalLibrary(File baseDir, String text, String image,
boolean defaultIsHtml) {
- this(baseDir, OutputType.valueOfNullOkUC(text,
+ this(baseDir, OutputType.valueOfAllOkUC(text,
defaultIsHtml ? OutputType.HTML : OutputType.INFO_TEXT),
- OutputType.valueOfNullOkUC(image,
+ OutputType.valueOfAllOkUC(image,
defaultIsHtml ? OutputType.HTML : OutputType.CBZ));
}
}
@Override
- public File getFile(String luid) {
- File[] files = getStories(null).get(getInfo(luid));
+ public File getFile(String luid, Progress pg) {
+ File[] files = getStories(pg).get(getInfo(luid));
if (files != null) {
return files[1];
}
meta = InfoReader.readMeta(infoFile, true);
return meta.getCover();
} catch (IOException e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
}
}
}
InfoCover.writeInfo(newDir, name, meta);
relatedFile.delete();
} catch (IOException e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
}
} else {
relatedFile.renameTo(new File(newDir, relatedFile.getName()));
try {
ImageIO.write(sourceCovers.get(source), "png", cover);
} catch (IOException e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
sourceCovers.remove(source);
}
}
pg = new Progress();
}
- LocalLibrary otherLocalLibrary = null;
- if (other instanceof RemoteLibrary) {
- otherLocalLibrary = ((RemoteLibrary) other).getLocalLibrary();
- }
-
+ // Check if we can simply copy the files instead of the whole process
if (other instanceof LocalLibrary) {
- otherLocalLibrary = (LocalLibrary) other;
- }
+ LocalLibrary otherLocalLibrary = (LocalLibrary) other;
- // Check if we can simply copy the files instead of the whole process
- if (otherLocalLibrary != null) {
MetaData meta = otherLocalLibrary.getInfo(luid);
String expectedType = ""
+ (meta != null && meta.isImageDocument() ? image : text);
* The directory (full path) where the new {@link Story} related to this
* {@link MetaData} should be located on disk.
*
- * @param type
+ * @param source
* the type (source)
*
* @return the target directory
*/
- private File getExpectedDir(String type) {
- String source = type.replaceAll("[^a-zA-Z0-9._+-]", "_");
- return new File(baseDir, source);
+ private File getExpectedDir(String source) {
+ String sanitizedSource = source.replaceAll("[^a-zA-Z0-9._+-]", "_");
+ return new File(baseDir, sanitizedSource);
}
/**
}
String coverExt = "."
- + Instance.getConfig().getString(Config.IMAGE_FORMAT_COVER);
+ + Instance.getConfig().getString(Config.IMAGE_FORMAT_COVER)
+ .toLowerCase();
File coverFile = new File(path + coverExt);
if (!coverFile.exists()) {
coverFile = new File(path.substring(0,
} catch (IOException e) {
// We should not have not-supported files in the
// library
- Instance.syserr(new IOException(
- "Cannot load file from library: " + infoFile, e));
+ Instance.getTraceHandler().error(
+ new IOException(
+ "Cannot load file from library: "
+ + infoFile, e));
}
pgFiles.add(1);
}
in.close();
}
} catch (IOException e) {
- Instance.syserr(e);
+ Instance.getTraceHandler().error(e);
}
}
return stories;
}
+
+ /**
+ * Fix the source cover to the given story cover.
+ *
+ * @param source
+ * the source to change
+ * @param coverImage
+ * the cover image
+ */
+ void setSourceCover(String source, BufferedImage coverImage) {
+ sourceCovers.put(source, coverImage);
+ File cover = new File(getExpectedDir(source), ".cover.png");
+ try {
+ ImageIO.write(sourceCovers.get(source), "png", cover);
+ } catch (IOException e) {
+ Instance.getTraceHandler().error(e);
+ sourceCovers.remove(source);
+ }
+ }
}