X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FLocalLibrary.java;h=f9350efc4b353abc92bb9849ec8aac21368493a5;hb=ff05b8284e6e415b13d3543650075d0f7cd27ff5;hp=ab5a82b58b48a51ed4b1abc085118e986184f4fd;hpb=b89dfb6ece936486563734818ed62488a59e5897;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/LocalLibrary.java b/src/be/nikiroo/fanfix/library/LocalLibrary.java index ab5a82b..f9350ef 100644 --- a/src/be/nikiroo/fanfix/library/LocalLibrary.java +++ b/src/be/nikiroo/fanfix/library/LocalLibrary.java @@ -40,15 +40,48 @@ public class LocalLibrary extends BasicLibrary { private OutputType text; private OutputType image; + /** + * Create a new {@link LocalLibrary} with the given back-end directory. + * + * @param baseDir + * the directory where to find the {@link Story} objects + */ + public LocalLibrary(File baseDir) { + this(baseDir, Instance.getConfig().getString( + Config.NON_IMAGES_DOCUMENT_TYPE), Instance.getConfig() + .getString(Config.IMAGES_DOCUMENT_TYPE), false); + } + /** * Create a new {@link LocalLibrary} with the given back-end directory. * * @param baseDir * the directory where to find the {@link Story} objects * @param text - * the {@link OutputType} to save the text-focused stories into + * the {@link OutputType} to use for non-image documents * @param image - * the {@link OutputType} to save the images-focused stories into + * 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.valueOfAllOkUC(text, + defaultIsHtml ? OutputType.HTML : OutputType.INFO_TEXT), + OutputType.valueOfAllOkUC(image, + defaultIsHtml ? OutputType.HTML : OutputType.CBZ)); + } + + /** + * Create a new {@link LocalLibrary} with the given back-end directory. + * + * @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 */ public LocalLibrary(File baseDir, OutputType text, OutputType image) { this.baseDir = baseDir; @@ -68,8 +101,8 @@ public class LocalLibrary extends BasicLibrary { } @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]; } @@ -190,13 +223,15 @@ public class LocalLibrary extends BasicLibrary { // Check if we can simply copy the files instead of the whole process if (other instanceof LocalLibrary) { - LocalLibrary otherLibrary = (LocalLibrary) other; - MetaData meta = otherLibrary.getInfo(luid); - String expectedType = "" + (meta.isImageDocument() ? image : text); - if (meta.getType().equals(expectedType)) { - File from = otherLibrary.getExpectedDir(meta.getSource()); + LocalLibrary otherLocalLibrary = (LocalLibrary) other; + + MetaData meta = otherLocalLibrary.getInfo(luid); + String expectedType = "" + + (meta != null && meta.isImageDocument() ? image : text); + if (meta != null && meta.getType().equals(expectedType)) { + File from = otherLocalLibrary.getExpectedDir(meta.getSource()); File to = this.getExpectedDir(meta.getSource()); - List sources = otherLibrary.getRelatedFiles(luid); + List sources = otherLocalLibrary.getRelatedFiles(luid); if (!sources.isEmpty()) { pg.setMinMax(0, sources.size()); } @@ -205,6 +240,7 @@ public class LocalLibrary extends BasicLibrary { File target = new File(source.getAbsolutePath().replace( from.getAbsolutePath(), to.getAbsolutePath())); if (!source.equals(target)) { + target.getParentFile().mkdirs(); InputStream in = null; try { in = new FileInputStream(source); @@ -232,6 +268,8 @@ public class LocalLibrary extends BasicLibrary { } super.imprt(other, luid, pg); + + clearCache(); } /**