X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Farachne%2Fcore%2FCore.java;h=8afe0142a932d5446dc603cdc50b75e6bb901f80;hb=3b581fc7c2aba46258a746c83ca89ac3a13b55d1;hp=9e3f1a55a1d0d1143b792474429eef63013b7a3e;hpb=c85307a32e0957c15233b4d9ead5f58d8d167244;p=arachne.git diff --git a/src/net/pterodactylus/arachne/core/Core.java b/src/net/pterodactylus/arachne/core/Core.java index 9e3f1a5..8afe014 100644 --- a/src/net/pterodactylus/arachne/core/Core.java +++ b/src/net/pterodactylus/arachne/core/Core.java @@ -13,6 +13,7 @@ import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; +import net.pterodactylus.arachne.parser.ParserFactory; import de.ina.util.service.AbstractService; import de.ina.util.thread.DumpingThreadFactory; import de.ina.util.validation.Validation; @@ -41,6 +42,9 @@ public class Core extends AbstractService { // INTERNAL MEMBERS // + /** The parser factory. */ + private ParserFactory parserFactory = new ParserFactory(); + /** Thread pool for the URL fetches. */ private Executor urlFetcherExecutor = Executors.newFixedThreadPool(1, new DumpingThreadFactory("URLFetcher-")); @@ -73,6 +77,7 @@ public class Core extends AbstractService { */ public void addPage(URL url) { Validation.begin().isNotNull("url", url).check().isEqual("url.getHost()", url.getHost(), (Object) nodeHost).isEqual("url.getPort()", url.getPort(), nodePort).check(); + addPage(Page.fromURL(url)); } /** @@ -105,7 +110,7 @@ public class Core extends AbstractService { // /** - * {@inheritdoc} + * {@inheritDoc} * * @see de.ina.util.service.AbstractService#serviceRun() */ @@ -134,11 +139,19 @@ public class Core extends AbstractService { logger.log(Level.INFO, "Skipping “" + nextPage + "”."); continue; } - URLFetcher urlFetcher; + final URLFetcher urlFetcher; try { logger.log(Level.INFO, "Fetching “" + nextURL + "”..."); - urlFetcher = new URLFetcher(nextURL); - urlFetcherExecutor.execute(urlFetcher); + urlFetcher = new URLFetcher(parserFactory, nextURL); + urlFetcherExecutor.execute(new Runnable() { + + public void run() { + urlFetcher.run(); + for (Page page : urlFetcher.getCollectedPages()) { + addPage(page); + } + } + }); } catch (NoSuchAlgorithmException nsae1) { logger.log(Level.SEVERE, "Could not get “SHA-256” message digest!", nsae1); }