package de.twenty11.skysail.server.ext.quartz; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.restlet.data.Form; import org.restlet.resource.Get; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import de.twenty11.skysail.common.Presentation; import de.twenty11.skysail.common.PresentationStyle; import de.twenty11.skysail.common.responses.FailureResponse; import de.twenty11.skysail.common.responses.FormResponse; import de.twenty11.skysail.common.responses.SkysailResponse; import de.twenty11.skysail.common.responses.SuccessResponse; import de.twenty11.skysail.server.ext.quartz.internal.MyApplication; import de.twenty11.skysail.server.restlet.AddServerResource; @Presentation(preferred = PresentationStyle.EDIT) public class AddJobResource extends AddServerResource<JobDescriptor> { /** slf4j based logger implementation */ private static Logger logger = LoggerFactory.getLogger(AddJobResource.class); private class SysoutJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("hier"); } } @Override @Get("html") public FormResponse<JobDescriptor> createForm() { setMessage("Adding new Job"); return new FormResponse<JobDescriptor>(new JobDescriptor(), "../jobs/"); } @Override public JobDescriptor getData(Form form) { return new JobDescriptor(form.getFirstValue("name")); } @Override public SkysailResponse<JobDescriptor> addEntity(JobDescriptor entity) { MyApplication application = (MyApplication) getApplication(); Scheduler scheduler = application.getScheduler(); JobDetail jobDetail = new JobDetail(entity.getName(), "skysail", SysoutJob.class, true, true, true); try { scheduler.addJob(jobDetail, false); } catch (SchedulerException e) { return new FailureResponse<JobDescriptor>(e); } return new SuccessResponse<JobDescriptor>(); } // @Override // @Post("x-www-form-urlencoded:html") // public SkysailResponse<JobDescriptor> addFromForm(Form form) { // logger.info("trying to add entity"); // JobDescriptor details = new JobDescriptor(form.getFirstValue("name")); // Set<ConstraintViolation<JobDescriptor>> violations = getValidator().validate(details); // if (violations.size() > 0) { // // if (constraintViolations.getMsg() != null) { // logger.warn("contraint violations found on {}: {}", details, violations); // // return new FailureResponse<ConstraintViolations<T>>(constraintViolations); // return new ConstraintViolationsResponse<JobDescriptor>(details, violations); // } // MyApplication application = (MyApplication) getApplication(); // Scheduler scheduler = application.getScheduler(); // // JobDetail jobDetail = new JobDetail(details.getName(), "skysail", SysoutJob.class, true, true, true); // try { // scheduler.addJob(jobDetail, false); // } catch (SchedulerException e) { // return new FailureResponse<JobDescriptor>(e); // } // return new SuccessResponse<JobDescriptor>(); // } }