В чем разница между exitExecution() и stopExecution() в классе Webharvest Scraper
Я хочу знать, в чем разница между
scraper.exitExecution() and
scraper.stopExecution() and
scraper.finishExecutingProcessor()
Я попытался заглянуть в документ Java, я не мог найти там ничего. Кажется, что нет надлежащей документации для этого. Пожалуйста помоги.
Мне нужен метод, чтобы остановить выполнение скребка после некоторого времени ожидания, как я могу это сделать?
1 ответ
Почему бы просто не скачать sourses
библиотеки и заглянуть внутрь?
Анализ исходного кода показывает, что разница заключается только в состояниях, в которых установлены эти функции.
STATUS_STOPPED
интерпретируется как эта конфигурация была прервана пользователем. STATUS_EXIT
интерпретируется как выход из конфигурации.
Т.е. они практически равны.
Давай сделаем это вместе:
Один:
public void exitExecution(String message) {
setStatus(STATUS_EXIT);
this.message = message;
}
Два:
public void stopExecution() {
setStatus(STATUS_STOPPED);
}
Далее, собираюсь BaseProcessor
класс, это одно из двух мест, где STATUS_EXIT
или же STATUS_STOPPED
статусы используются:
public Variable run(Scraper scraper, ScraperContext context) {
int scraperStatus = scraper.getStatus();
if (scraperStatus == Scraper.STATUS_STOPPED || scraperStatus == Scraper.STATUS_EXIT) {
return EmptyVariable.INSTANCE;
}
...
}
Еще один в классе ConfigPanel
:
public void onExecutionEnd(Scraper scraper) {
...
} else if (status == Scraper.STATUS_STOPPED) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GuiUtils.showWarningMessage("Configuration \"" + configDocument.getName() + "\" aborted by user!");
ide.setTabIcon(ConfigPanel.this, ResourceManager.SMALL_FINISHED_ICON);
}
});
} else if ( status == Scraper.STATUS_EXIT && message != null && !"".equals(message.trim()) ) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
GuiUtils.showWarningMessage("Configuration exited: " + message);
ide.setTabIcon(ConfigPanel.this, ResourceManager.SMALL_FINISHED_ICON);
}
});
}
...
}