X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FLibrary.java;h=3b39743c989aab347e6ad3b659b46a8c58e2a8aa;hp=0d9e067f30dcb6c24fe2e3a1e48fa098464f04e9;hb=bee7dffea9ef8d3312eee90993a9faaeac6c1127;hpb=b4dc6ab518ded2dd92e4cbb02ac615b1d57e8e6d diff --git a/src/be/nikiroo/fanfix/Library.java b/src/be/nikiroo/fanfix/Library.java index 0d9e067..3b39743 100644 --- a/src/be/nikiroo/fanfix/Library.java +++ b/src/be/nikiroo/fanfix/Library.java @@ -14,6 +14,7 @@ import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.output.BasicOutput; import be.nikiroo.fanfix.output.BasicOutput.OutputType; import be.nikiroo.fanfix.supported.BasicSupport; +import be.nikiroo.utils.ui.Progress; import be.nikiroo.fanfix.supported.BasicSupport.SupportType; import be.nikiroo.fanfix.supported.InfoReader; @@ -135,10 +136,12 @@ public class Library { * * @param luid * the Library UID of the story + * @param pg + * the optional progress reporter * * @return the corresponding {@link Story} or NULL if not found */ - public Story getStory(String luid) { + public Story getStory(String luid, Progress pg) { if (luid != null) { for (Entry entry : getStories().entrySet()) { if (luid.equals(entry.getKey().getLuid())) { @@ -147,7 +150,8 @@ public class Library { .getKey().getType()); URL url = entry.getValue().toURI().toURL(); if (type != null) { - return BasicSupport.getSupport(type).process(url); + return BasicSupport.getSupport(type).process(url, + pg); } else { throw new IOException("Unknown type: " + entry.getKey().getType()); @@ -163,6 +167,11 @@ public class Library { } } + if (pg != null) { + pg.setMinMax(0, 1); + pg.setProgress(1); + } + return null; } @@ -172,19 +181,21 @@ public class Library { * * @param url * the {@link URL} to import + * @param pg + * the optional progress reporter * * @return the imported {@link Story} * * @throws IOException * in case of I/O error */ - public Story imprt(URL url) throws IOException { + public Story imprt(URL url, Progress pg) throws IOException { BasicSupport support = BasicSupport.getSupport(url); if (support == null) { throw new IOException("URL not supported: " + url.toString()); } - return save(support.process(url), null); + return save(support.process(url, pg), null); } /** @@ -196,25 +207,35 @@ public class Library { * the {@link OutputType} to transform it to * @param target * the target to save to + * @param pg + * the optional progress reporter * * @return the saved resource (the main saved {@link File}) * * @throws IOException * in case of I/O error */ - public File export(String luid, OutputType type, String target) + public File export(String luid, OutputType type, String target, Progress pg) throws IOException { + Progress pgGetStory = new Progress(); + Progress pgOut = new Progress(); + if (pg != null) { + pg.setMax(2); + pg.addProgress(pgGetStory, 1); + pg.addProgress(pgOut, 1); + } + BasicOutput out = BasicOutput.getOutput(type, true); if (out == null) { throw new IOException("Output type not supported: " + type); } - Story story = getStory(luid); + Story story = getStory(luid, pgGetStory); if (story == null) { throw new IOException("Cannot find story to export: " + luid); } - return out.process(getStory(luid), target); + return out.process(story, target, pgOut); } /** @@ -222,14 +243,16 @@ public class Library { * * @param story * the {@link Story} to save + * @param pg + * the optional progress reporter * * @return the same {@link Story}, whose LUID may have changed * * @throws IOException * in case of I/O error */ - public Story save(Story story) throws IOException { - return save(story, null); + public Story save(Story story, Progress pg) throws IOException { + return save(story, null, pg); } /** @@ -240,13 +263,15 @@ public class Library { * the {@link Story} to save * @param luid * the correct LUID or NULL to get the next free one + * @param pg + * the optional progress reporter * * @return the same {@link Story}, whose LUID may have changed * * @throws IOException * in case of I/O error */ - public Story save(Story story, String luid) throws IOException { + public Story save(Story story, String luid, Progress pg) throws IOException { // Do not change the original metadata, but change the original story MetaData key = story.getMeta().clone(); story.setMeta(key); @@ -271,7 +296,7 @@ public class Library { } BasicOutput it = BasicOutput.getOutput(out, true); - File file = it.process(story, getFile(key).getPath()); + File file = it.process(story, getFile(key).getPath(), pg); getStories().put(story.getMeta(), file); return story;