diff --git a/src/main/java/org/codelibs/fess/app/web/admin/scheduledjob/AdminScheduledjobAction.java b/src/main/java/org/codelibs/fess/app/web/admin/scheduledjob/AdminScheduledjobAction.java
index c76d03528..26482537a 100644
--- a/src/main/java/org/codelibs/fess/app/web/admin/scheduledjob/AdminScheduledjobAction.java
+++ b/src/main/java/org/codelibs/fess/app/web/admin/scheduledjob/AdminScheduledjobAction.java
@@ -24,14 +24,13 @@ import javax.annotation.Resource;
import org.codelibs.fess.Constants;
import org.codelibs.fess.annotation.Token;
import org.codelibs.fess.app.pager.ScheduledJobPager;
-import org.codelibs.fess.app.service.RoleTypeService;
import org.codelibs.fess.app.service.ScheduledJobService;
import org.codelibs.fess.app.web.base.FessAdminAction;
import org.codelibs.fess.crud.CommonConstants;
import org.codelibs.fess.es.exentity.ScheduledJob;
import org.codelibs.fess.helper.JobHelper;
import org.codelibs.fess.helper.SystemHelper;
-import org.codelibs.fess.util.ComponentUtil;
+import org.codelibs.fess.job.JobExecutor;
import org.lastaflute.web.Execute;
import org.lastaflute.web.callback.ActionRuntime;
import org.lastaflute.web.response.HtmlResponse;
@@ -52,15 +51,14 @@ public class AdminScheduledjobAction extends FessAdminAction {
@Resource
private ScheduledJobPager scheduledJobPager;
- @Resource
- protected RoleTypeService roleTypeService;
-
@Resource
protected SystemHelper systemHelper;
@Resource
protected JobHelper jobHelper;
+ private boolean running = false;
+
// ===================================================================================
// Hook
// ======
@@ -183,21 +181,27 @@ public class AdminScheduledjobAction extends FessAdminAction {
form.id = id;
verifyCrudMode(form, CommonConstants.CONFIRM_MODE);
loadScheduledJob(form);
- return asHtml(path_AdminScheduledjob_ConfirmJsp);
+ return asHtml(path_AdminScheduledjob_ConfirmJsp).renderWith(data -> {
+ data.register("running", running);
+ });
}
@Token(save = false, validate = true, keep = true)
@Execute
public HtmlResponse confirmfromcreate(ScheduledjobEditForm form) {
validate(form, messages -> {}, toEditHtml());
- return asHtml(path_AdminScheduledjob_ConfirmJsp);
+ return asHtml(path_AdminScheduledjob_ConfirmJsp).renderWith(data -> {
+ data.register("running", running);
+ });
}
@Token(save = false, validate = true, keep = true)
@Execute
public HtmlResponse confirmfromupdate(ScheduledjobEditForm form) {
validate(form, messages -> {}, toEditHtml());
- return asHtml(path_AdminScheduledjob_ConfirmJsp);
+ return asHtml(path_AdminScheduledjob_ConfirmJsp).renderWith(data -> {
+ data.register("running", running);
+ });
}
// -----------------------------------------------------
@@ -229,6 +233,37 @@ public class AdminScheduledjobAction extends FessAdminAction {
return redirect(getClass());
}
+ @Execute
+ public HtmlResponse start(ScheduledjobEditForm form) {
+ verifyCrudMode(form, CommonConstants.CONFIRM_MODE);
+ ScheduledJob scheduledJob = getScheduledJob(form);
+ try {
+ scheduledJob.start();
+ saveInfo(messages -> messages.addSuccessJobStarted(GLOBAL, scheduledJob.getName()));
+ } catch (Exception e) {
+ throwValidationError(messages -> {
+ messages.addErrorsFailedToStartJob(GLOBAL, scheduledJob.getName());
+ }, toEditHtml());
+ }
+ return redirect(getClass());
+ }
+
+ @Execute
+ public HtmlResponse stop(ScheduledjobEditForm form) {
+ verifyCrudMode(form, CommonConstants.CONFIRM_MODE);
+ ScheduledJob scheduledJob = getScheduledJob(form);
+ try {
+ final JobExecutor jobExecutoer = jobHelper.getJobExecutoer(scheduledJob.getId());
+ jobExecutoer.shutdown();
+ saveInfo(messages -> messages.addSuccessJobStopped(GLOBAL, scheduledJob.getName()));
+ } catch (Exception e) {
+ throwValidationError(messages -> {
+ messages.addErrorsFailedToStopJob(GLOBAL, scheduledJob.getName());
+ }, toEditHtml());
+ }
+ return redirect(getClass());
+ }
+
// ===================================================================================
// Assist Logic
// ============
@@ -238,6 +273,7 @@ public class AdminScheduledjobAction extends FessAdminAction {
form.jobLogging = scheduledJob.isLoggingEnabled() ? Constants.ON : null;
form.crawler = scheduledJob.isCrawlerJob() ? Constants.ON : null;
form.available = scheduledJob.isEnabled() ? Constants.ON : null;
+ running = scheduledJob.isRunning();
}
protected ScheduledJob getScheduledJob(ScheduledjobEditForm form) {
diff --git a/src/main/webapp/WEB-INF/view/admin/scheduledjob/confirm.jsp b/src/main/webapp/WEB-INF/view/admin/scheduledjob/confirm.jsp
index b474eef6e..a59ae8b0a 100644
--- a/src/main/webapp/WEB-INF/view/admin/scheduledjob/confirm.jsp
+++ b/src/main/webapp/WEB-INF/view/admin/scheduledjob/confirm.jsp
@@ -170,6 +170,16 @@
"
/>
+
+ "
+ />
+
+
+ "
+ />
+