add start/stop button

This commit is contained in:
Shinsuke Sugaya 2015-08-27 16:29:07 +09:00
parent 52ba992c1f
commit dc4a44187f
2 changed files with 54 additions and 8 deletions

View file

@ -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) {

View file

@ -170,6 +170,16 @@
<input type="submit" class="btn" name="deletefromconfirm"
value="<la:message key="labels.scheduledjob_button_delete"/>"
/>
<c:if test="${running}">
<input type="submit" class="btn small" name="stop"
value="<la:message key="labels.scheduledjob_button_stop"/>"
/>
</c:if>
<c:if test="${!running}">
<input type="submit" class="btn small" name="start"
value="<la:message key="labels.scheduledjob_button_start"/>"
/>
</c:if>
</c:if>
</div>
</div>