package core.framework.impl.web.management; import core.framework.api.http.ContentType; import core.framework.api.util.Lists; import core.framework.api.web.Request; import core.framework.api.web.Response; import core.framework.impl.scheduler.Scheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.UnknownHostException; import java.util.List; /** * @author neo */ public class SchedulerController { private final Logger logger = LoggerFactory.getLogger(SchedulerController.class); private final Scheduler scheduler; public SchedulerController(Scheduler scheduler) { this.scheduler = scheduler; } public Response listJobs(Request request) throws UnknownHostException { ControllerHelper.validateFromLocalNetwork(request.clientIP()); List<JobView> jobs = Lists.newArrayList(); scheduler.triggers.forEach((name, trigger) -> { JobView job = new JobView(); job.name = trigger.name(); job.jobClass = trigger.job().getClass().getCanonicalName(); job.frequency = trigger.frequency(); jobs.add(job); }); return Response.bean(jobs); } public Response triggerJob(Request request) throws UnknownHostException { ControllerHelper.validateFromLocalNetwork(request.clientIP()); String job = request.pathParam("job"); logger.info("trigger job, job={}, clientIP={}", job, request.clientIP()); scheduler.triggerNow(job); return Response.text("job triggered, job=" + job, ContentType.TEXT_PLAIN); } }