package de.twenty11.skysail.server.ext.quartz;
import org.restlet.data.Form;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Put;
import org.restlet.resource.ResourceException;
import de.twenty11.skysail.common.commands.Command;
import de.twenty11.skysail.common.responses.FailureResponse;
import de.twenty11.skysail.common.responses.SkysailResponse;
import de.twenty11.skysail.server.core.restlet.UniqueResultServerResource2;
import de.twenty11.skysail.server.ext.quartz.internal.MyApplication;
public class SchedulerResource extends UniqueResultServerResource2<SchedulerDescriptor> {
private String action;
@Override
protected void doInit() throws ResourceException {
Form form = new Form(getRequest().getEntity());
action = form.getFirstValue("action");
}
@Override
@Get("html|json")
public SkysailResponse<SchedulerDescriptor> getEntity() {
MyApplication application = (MyApplication) getApplication();
registerCommand("start", new StartCommand(application.getScheduler()));
registerCommand("stop", new StopCommand(application.getScheduler()));
return getEntity("Quartz Scheduler");
}
@Override
protected SchedulerDescriptor getData() {
// registerCommand("start", new StartCommand(bundle));
MyApplication application = (MyApplication) getApplication();
return new SchedulerDescriptor(application.getScheduler());
}
@Put("html|json")
public SkysailResponse<SchedulerDescriptor> executeCommand(Representation entity) {
Command command = getCommand(action);
if (command != null) {
try {
command.execute();
} catch (Exception e) {
return new FailureResponse<SchedulerDescriptor>(e);
}
}
setMessage("Success");
return getEntity();
}
@Override
public SchedulerDescriptor getData(Form form) {
// TODO Auto-generated method stub
return null;
}
@Override
public SkysailResponse<?> addEntity(SchedulerDescriptor entity) {
// TODO Auto-generated method stub
return null;
}
}