From 9005532ff4a232aab5bb302979457d9da54948b1 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Wed, 28 Mar 2018 08:46:41 +0200 Subject: [PATCH] Fix most irregularities found by conversion tests --- src/be/nikiroo/fanfix/output/Cbz.java | 2 +- .../fanfix/supported/BasicSupport.java | 161 +++++++++--------- .../supported/BasicSupport_Deprecated.java | 1 - src/be/nikiroo/fanfix/supported/Cbz.java | 2 +- .../nikiroo/fanfix/test/ConversionTest.java | 11 ++ test/expected/cbz.cbz | Bin 1409 -> 1407 bytes test/expected/epub.epub | Bin 6261 -> 6253 bytes test/expected/html/html.info | 4 +- test/expected/info_text.info | 4 +- 9 files changed, 101 insertions(+), 84 deletions(-) diff --git a/src/be/nikiroo/fanfix/output/Cbz.java b/src/be/nikiroo/fanfix/output/Cbz.java index 490ba8f0..3d900829 100644 --- a/src/be/nikiroo/fanfix/output/Cbz.java +++ b/src/be/nikiroo/fanfix/output/Cbz.java @@ -73,7 +73,7 @@ class Cbz extends BasicOutput { new FileOutputStream(new File(dir, "URL")), "UTF-8")); try { if (meta != null) { - writer.write(meta.getUuid()); + writer.write(meta.getUrl()); } } finally { writer.close(); diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport.java b/src/be/nikiroo/fanfix/supported/BasicSupport.java index c35ed86b..8154a15e 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport.java @@ -240,15 +240,6 @@ public abstract class BasicSupport { protected void login() throws IOException { } - /** - * Prepare the support if needed before processing. - * - * @throws IOException - * on I/O error - */ - protected void preprocess() throws IOException { - } - /** * Now that we have processed the {@link Story}, close the resources if any. */ @@ -265,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 { @@ -330,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. @@ -342,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()); - List> chapters = getChapters(pgGetChapters); - if (!pgGetChapters.isDone()) { - pgGetChapters.setProgress(pgGetChapters.getMax()); // 20% - } + Progress pgGetChapters = new Progress(); + pg.addProgress(pgGetChapters, 10); + story.setChapters(new ArrayList()); + List> chapters = getChapters(pgGetChapters); + if (!pgGetChapters.isDone()) { + pgGetChapters.setProgress(pgGetChapters.getMax()); // 20% + } + + if (chapters != null) { + Progress pgChaps = new Progress("Extracting chapters", 0, + chapters.size() * 300); + pg.addProgress(pgChaps, 80); + + long words = 0; + int i = 1; + for (Entry chap : chapters) { + pgChaps.setName("Extracting chapter " + i); + URL chapUrl = chap.getValue(); + String chapName = chap.getKey(); + if (chapUrl != null) { + setCurrentReferer(chapUrl); + } + + pgChaps.setProgress(i * 100); + Progress pgGetChapterContent = new Progress(); + Progress pgMakeChapter = new Progress(); + pgChaps.addProgress(pgGetChapterContent, 100); + pgChaps.addProgress(pgMakeChapter, 100); + + String content = getChapterContent(chapUrl, i, + pgGetChapterContent); + if (!pgGetChapterContent.isDone()) { + pgGetChapterContent.setProgress(pgGetChapterContent + .getMax()); + } - if (chapters != null) { - Progress pgChaps = new Progress("Extracting chapters", 0, - chapters.size() * 300); - pg.addProgress(pgChaps, 80); - - long words = 0; - int i = 1; - for (Entry chap : chapters) { - pgChaps.setName("Extracting chapter " + i); - URL chapUrl = chap.getValue(); - String chapName = chap.getKey(); - if (chapUrl != null) { - setCurrentReferer(chapUrl); - } - - pgChaps.setProgress(i * 100); - Progress pgGetChapterContent = new Progress(); - Progress pgMakeChapter = new Progress(); - pgChaps.addProgress(pgGetChapterContent, 100); - pgChaps.addProgress(pgMakeChapter, 100); - - String content = getChapterContent(chapUrl, i, - pgGetChapterContent); - if (!pgGetChapterContent.isDone()) { - pgGetChapterContent.setProgress(pgGetChapterContent - .getMax()); - } - - Chapter cc = BasicSupportPara.makeChapter(this, chapUrl, i, - chapName, content, isHtml(), pgMakeChapter); - if (!pgMakeChapter.isDone()) { - pgMakeChapter.setProgress(pgMakeChapter.getMax()); - } - - words += cc.getWords(); - story.getChapters().add(cc); - story.getMeta().setWords(words); - - i++; + Chapter cc = BasicSupportPara.makeChapter(this, chapUrl, i, + chapName, content, isHtml(), pgMakeChapter); + if (!pgMakeChapter.isDone()) { + pgMakeChapter.setProgress(pgMakeChapter.getMax()); } - pgChaps.setName("Extracting chapters"); - } else { - pg.setProgress(80); + words += cc.getWords(); + story.getChapters().add(cc); + story.getMeta().setWords(words); + + i++; } - return story; - } finally { - close(); + pgChaps.setName("Extracting chapters"); + } else { + pg.setProgress(80); } + + return story; } /** diff --git a/src/be/nikiroo/fanfix/supported/BasicSupport_Deprecated.java b/src/be/nikiroo/fanfix/supported/BasicSupport_Deprecated.java index 591ba58d..e22724a2 100644 --- a/src/be/nikiroo/fanfix/supported/BasicSupport_Deprecated.java +++ b/src/be/nikiroo/fanfix/supported/BasicSupport_Deprecated.java @@ -75,7 +75,6 @@ public abstract class BasicSupport_Deprecated extends BasicSupport { throw new RuntimeException("should not be used by legacy code"); } - @Override public Story process(Progress pg) throws IOException { return process(getSource(), pg); } diff --git a/src/be/nikiroo/fanfix/supported/Cbz.java b/src/be/nikiroo/fanfix/supported/Cbz.java index ca0f48d2..9d71046e 100644 --- a/src/be/nikiroo/fanfix/supported/Cbz.java +++ b/src/be/nikiroo/fanfix/supported/Cbz.java @@ -58,7 +58,7 @@ class Cbz extends Epub { } @Override - public Story process(Progress pg) throws IOException { + public Story doProcess(Progress pg) throws IOException { if (pg == null) { pg = new Progress(); } else { diff --git a/src/be/nikiroo/fanfix/test/ConversionTest.java b/src/be/nikiroo/fanfix/test/ConversionTest.java index 51b6deb4..9d9fac36 100644 --- a/src/be/nikiroo/fanfix/test/ConversionTest.java +++ b/src/be/nikiroo/fanfix/test/ConversionTest.java @@ -216,6 +216,17 @@ class ConversionTest extends TestLauncher { .length()); } + if (expectedLines.size() != resultLines.size()) { + System.out.println(); + System.out.println("expected: ["); + for (String line : expectedLines) + System.out.println(line); + System.out.println("]"); + System.out.println("actual: ["); + for (String line : resultLines) + System.out.println(line); + System.out.println("]"); + } testCase.assertEquals(errMess + ": " + name + ": the number of lines is not the same", expectedLines.size(), resultLines.size()); diff --git a/test/expected/cbz.cbz b/test/expected/cbz.cbz index 569c3950e185a009d712f6aadfa46d9948e1aacf..28cc25b18b0a9b5733d99b8b3645e648ffcf8b4e 100644 GIT binary patch delta 526 zcmZqV{?El5;LXe;!ob17!SLCoW+Jb7J&^KYKmr^#!Q=Tn!nw+aPGyuAD0JjaMGIabmw>D4Mp`kE7BSj5<>C? zie|FrxTw1rd2?L(wcy#g<+om5vgEybVaCCi<@=t?+|IjSKQ;R4g7~%m=QIi>%lBsP zHjZd=vt+z7vC!i|z0}Fp?%B%(8C%5vCmt6tj>P) zOE^Dm_vW4dO}=m3t6H0Q^y-^gkJtme**PZmy;KoqWMG&A#3&&;c@pCuW?+y`4rEFN z(VKTN?O+58l&~1_g2EcEb@FBwO|Z;;7U}e6ph3Z*zP^q@kpbR}Od<^MIP!5ZoSJ41 vj1)^CW=4uA1_mc428PfeA9M{>`+{v-fadW5RkNdLST#A3Rf;W{1tbUn&ZNcw delta 528 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