package de.twenty11.skysail.server.ext.notes.resources;
import org.restlet.data.Form;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.ResourceException;
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.core.restlet.EntityServerResource;
import de.twenty11.skysail.server.ext.notes.NotesApplication;
import de.twenty11.skysail.server.ext.notes.domain.Folder;
/**
* takes care of ".../folders/" and ".../folders/{id}" requests.
*
*/
public class FolderResource extends EntityServerResource<Folder> {
private Long folderId;
private NotesApplication app;
public FolderResource() {
app = (NotesApplication) getApplication();
}
@Override
protected void doInit() throws ResourceException {
if (getRequest().getAttributes().get("id") != null) {
folderId = new Long((String) getRequest().getAttributes().get("id"));
}
}
@Get("htmlform")
public FormResponse<Folder> createForm() {
FormResponse<Folder> formResponse = new FormResponse<Folder>(new Folder(null, ""),
NotesApplication.getPostNewFolderPath());
formResponse.setMessage("Add a new folder");
return formResponse;
}
@Delete
public void deleteFolder() {
app.getFolderRepository().delete(folderId);
}
@Override
public Folder getData() {
return app.getFolderRepository().getById(folderId);
}
@Override
public Folder getData(Form form) {
Folder folder = new Folder(null, form.getFirstValue("folderName"));
folder.setOwner(app.getCurrentUser());
return folder;
}
@Override
public SkysailResponse<?> addEntity(Folder entity) {
app.getFolderRepository().add(entity);
return new SuccessResponse<Folder>(entity);
}
@Override
public SkysailResponse<?> updateEntity(Folder entity) {
app.getFolderRepository().update(entity);
return new SuccessResponse<Folder>(entity);
}
@Override
public String getMessage(String key) {
return null;
}
}