diff --git a/project/controller/CrawlerController.java b/project/controller/CrawlerController.java new file mode 100644 index 0000000..52636ee --- /dev/null +++ b/project/controller/CrawlerController.java @@ -0,0 +1,45 @@ +package com.crawler.controller; + +import com.crawler.crawler.Crawler; +import com.crawler.exception.handler.ExceptionHandlerFactory; +import com.crawler.model.CrawlerConfig; +import com.crawler.model.CrawlerData; +import com.crawler.view.CrawlerView; + +import java.util.List; + +public class CrawlerController { + private Crawler crawler; + private CrawlerView view; + private ExceptionHandlerFactory exceptionHandlerFactory; + + public CrawlerController(Crawler crawler) { + this.crawler = crawler; + this.view = new CrawlerView(); + this.exceptionHandlerFactory = ExceptionHandlerFactory.getInstance(); + } + + public void setConfig(CrawlerConfig config) { + crawler.setConfig(config); + } + + public void execute() { + view.showStartMessage(crawler.getCrawlerName()); + + try { + List dataList = crawler.crawl(); + view.showData(dataList); + view.showSuccessMessage(dataList.size()); + + if (!dataList.isEmpty()) { + com.crawler.command.CacheCommand.saveDataWithPrompt(dataList, crawler.getCrawlerName()); + } + } catch (Exception e) { + exceptionHandlerFactory.handleException(e, view); + } + } + + public List crawl() { + return crawler.crawl(); + } +} \ No newline at end of file