X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FBasicSupport.java;h=8154a15e600564e3bfb1da2d9211030512efc72b;hb=6bfa27805ec903223e6e45c6f4d00e94629a064c;hp=4314b99ce3da1589eef307e7d76b851adeadc943;hpb=0ffa47548f474c1330d8d723300d9aa7a4894736;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport.java b/src/be/nikiroo/fanfix/supported/BasicSupport.java index 4314b99..8154a15 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport.java @@ -214,8 +214,8 @@ public abstract class BasicSupport { /** * Open an input link that will be used for the support. *
- * Can return NULL, in which case you are supposed to work without an - * {@link InputStream}. + * Can return NULL, in which case you are supposed to work without a source + * node. * * @param source * the source {@link URL} @@ -237,20 +237,9 @@ public abstract class BasicSupport { * @throws IOException * in case of I/O error */ - @SuppressWarnings("unused") protected void login() throws IOException { } - /** - * Prepare the support if needed before processing. - * - * @throws IOException - * on I/O error - */ - @SuppressWarnings("unused") - protected void preprocess() throws IOException { - } - /** * Now that we have processed the {@link Story}, close the resources if any. */ @@ -267,10 +256,9 @@ public abstract class BasicSupport { * @throws IOException * in case of I/O error */ - public Story processMeta() throws IOException { + public final Story processMeta() throws IOException { Story story = null; - preprocess(); try { story = processMeta(false, null); } finally { @@ -332,6 +320,32 @@ public abstract class BasicSupport { return story; } + /** + * Actual processing step, without the calls to other methods. + *
+ * Will convert the story resource into a fully filled {@link Story} object.
+ *
+ * @param pg
+ * the optional progress reporter
+ *
+ * @return the {@link Story}, never NULL
+ *
+ * @throws IOException
+ * in case of I/O error
+ */
+ // TODO: add final
+ public Story process(Progress pg) throws IOException {
+ setCurrentReferer(source);
+ login();
+ sourceNode = loadDocument(source);
+
+ try {
+ return doProcess(pg);
+ } finally {
+ close();
+ }
+ }
+
/**
* Process the given story resource into a fully filled {@link Story}
* object.
@@ -344,87 +358,78 @@ public abstract class BasicSupport {
* @throws IOException
* in case of I/O error
*/
- public Story process(Progress pg) throws IOException {
+ public Story doProcess(Progress pg) throws IOException {
if (pg == null) {
pg = new Progress();
} else {
pg.setMinMax(0, 100);
}
- setCurrentReferer(source);
- login();
- sourceNode = loadDocument(source);
-
pg.setProgress(1);
- try {
- Progress pgMeta = new Progress();
- pg.addProgress(pgMeta, 10);
- preprocess();
- Story story = processMeta(true, pgMeta);
- if (!pgMeta.isDone()) {
- pgMeta.setProgress(pgMeta.getMax()); // 10%
- }
+ Progress pgMeta = new Progress();
+ pg.addProgress(pgMeta, 10);
+ Story story = processMeta(true, pgMeta);
+ if (!pgMeta.isDone()) {
+ pgMeta.setProgress(pgMeta.getMax()); // 10%
+ }
- pg.setName("Retrieving " + story.getMeta().getTitle());
+ pg.setName("Retrieving " + story.getMeta().getTitle());
- Progress pgGetChapters = new Progress();
- pg.addProgress(pgGetChapters, 10);
- story.setChapters(new ArrayList