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.Note;
/**
* takes care of ".../notes/" and ".../notes/{id}" requests.
*
*/
public class NoteResource extends EntityServerResource<Note> {
private Long noteId;
private NotesApplication app;
public NoteResource() {
app = (NotesApplication) getApplication();
}
@Override
protected void doInit() throws ResourceException {
if (getRequest().getAttributes().get("id") != null) {
noteId = new Long((String) getRequest().getAttributes().get("id"));
}
}
@Override
public SkysailResponse<Note> getEntity() {
return super.getEntity("Note #" + noteId);
}
@Override
public Note getData() {
return app.getNotesRepository().getById(Long.valueOf(noteId));
}
@Override
public Note getData(Form form) {
Note note = new Note(null, form.getFirstValue("title"), form.getFirstValue("content"));
note.setOwner(app.getCurrentUser());
return note;
}
@Get("htmlform")
public FormResponse<Note> createForm() {
FormResponse<Note> formResponse = new FormResponse<Note>(new Note(null, "", ""),
NotesApplication.getPostNewNotePath());
formResponse.setMessage("Add a new folder");
return formResponse;
}
@Delete
public void deleteNote() {
app.getNotesRepository().delete(noteId);
}
// // @Override
// @Post("x-www-form-urlencoded:html")
// public EntityDetailsResponse addEntity2(Form form) {
//
// Note entity = getData(form);
// // Set<ConstraintViolation<T>> violations = validate(entity);
// // if (violations.size() > 0) {
// // return new ConstraintViolationsResponse(entity, violations);
// // }
// // return addEntity(entity);
//
// app.getNotesRepository().add(entity);
// // return new FoldersResource().getEntities();
// EntityDetailsResponse response = new EntityDetailsResponse(entity, "note");
// response.setMessage("note entity details");
// return response;
// }
@Override
public SkysailResponse<?> addEntity(Note entity) {
app.getNotesRepository().add(entity);
return new SuccessResponse<Note>(entity);
}
@Override
public SkysailResponse<?> updateEntity(Note entity) {
app.getNotesRepository().update(entity);
return new SuccessResponse<Note>(entity);
}
@Override
public String getMessage(String key) {
// TODO Auto-generated method stub
return null;
}
}