package de.paulwein.notes;
import java.io.IOException;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import de.paulwein.notes.dao.DAOException;
import de.paulwein.notes.dao.DAOFactory;
import de.paulwein.notes.dao.NotesDAO;
import de.paulwein.notes.pojo.Note;
/**
* CreateNoteServlet
* fills JSP Page with Notes data in edit mode
* creates or updates notes
* corresponding to create.jsp
* @author Paul
*
*/
@SuppressWarnings("serial")
public class CreateNoteServlet extends NotesAppServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
super.doGet(req, resp);
String keyString = req.getParameter("key");
String action = req.getParameter("action");
// Edit Note
// fill textareas with old entries
if(action != null && action.equals("edit")){
req.setAttribute("edit", "edit");
Key noteKey = KeyFactory.stringToKey(keyString);
try {
DAOFactory df = DAOFactory.getInstance();
NotesDAO notesDAO = df.getDAO(Note.class, NotesDAO.class);
Note note = notesDAO.loadNote(noteKey);
req.setAttribute("note",note);
} catch (DAOException e) {
errorOccured(resp);
}
}
req.setAttribute("key", keyString);
RequestDispatcher requestDispatcher = req.getRequestDispatcher(CREATE_NOTE_SERVLET + ".jsp");
try {
requestDispatcher.forward(req, resp);
} catch (ServletException e) {
errorOccured(resp);
}
}
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
super.doPost(req, resp);
String subject = req.getParameter("subject");
String note = req.getParameter("note");
String keyString = req.getParameter("key");
Key listKey = KeyFactory.stringToKey(keyString);
Note n = new Note();
n.setDate(new Date());
n.setSubject(subject);
n.setNote(note);
n.setUserId(user.getUserId());
String action = req.getParameter("action");
try {
DAOFactory df = DAOFactory.getInstance();
NotesDAO notesDAO = df.getDAO(Note.class, NotesDAO.class);
// update Note
if(action != null && action.equals("edit")){
n.setKey(listKey);
notesDAO.updateNote(n);
keyString = KeyFactory.keyToString(listKey.getParent());
}
else // create new note and persist it
notesDAO.addNote(listKey, n);
} catch (DAOException e) {
errorOccured(resp);
}
resp.sendRedirect(NOTELIST_SERVLET + "?key=" + keyString);
}
}