Skip to content

Commit

Permalink
Implemented Model 1 and Model 2
Browse files Browse the repository at this point in the history
  • Loading branch information
igm committed Feb 25, 2013
1 parent 38dfbac commit 4609fb6
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 6 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Expand Up @@ -11,5 +11,10 @@
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
83 changes: 83 additions & 0 deletions src/main/java/ie/cit/cad/TodoServlet.java
@@ -0,0 +1,83 @@
package ie.cit.cad;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class TodoServlet extends HttpServlet {

private TodoRepository repo;

@Override
public void init(ServletConfig config) throws ServletException {
repo = new TodoRepository();
super.init(config);
}

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
if (req.getParameter("_method") != null) {
req = new HttpServletRequestWrapper(req) {
@Override
public String getMethod() {
return getParameter("_method").toUpperCase();
}
};
}
super.service(req, resp);
}

@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String strId = req.getParameter("todoId");
int todoId = Integer.parseInt(strId);
repo.getTodos().remove(todoId - 1);
forward(req, resp);
}

@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String strId = req.getParameter("todoId");
int todoId = Integer.parseInt(strId);
Todo todo = repo.getTodos().get(todoId - 1);
todo.setDone(!todo.isDone());
forward(req, resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String text = req.getParameter("text");
Todo todo = new Todo();
todo.setText(text);
repo.getTodos().add(todo);
forward(req, resp);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
forward(req, resp);
}

private void forward(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
List<Todo> todos = repo.getTodos();
req.setAttribute("todos", todos);
RequestDispatcher dispatcher = getServletContext()
.getRequestDispatcher("/todos.jsp");
dispatcher.forward(req, resp);
}

}
10 changes: 10 additions & 0 deletions src/main/webapp/WEB-INF/web.xml
Expand Up @@ -2,4 +2,14 @@
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd ">

<servlet>
<servlet-name>todoServlet</servlet-name>
<servlet-class>ie.cit.cad.TodoServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>todoServlet</servlet-name>
<url-pattern>/todos</url-pattern>
</servlet-mapping>
</web-app>
40 changes: 34 additions & 6 deletions src/main/webapp/index.jsp
@@ -1,24 +1,52 @@
<%@page import="ie.cit.cad.Todo" %>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<jsp:useBean id="repo" class="ie.cit.cad.TodoRepository"
scope="application" />
<jsp:useBean id="todo" class="ie.cit.cad.Todo" scope="page" />
<html>
<body>
<h1>Todo Application</h1>
<h2>Todo list:</h2>
<jsp:setProperty property="*" name="todo" />

<c:if test="${ param._method.equals(\"delete\") }">
<%
String strId = request.getParameter("todoId");
int todoId = Integer.parseInt(strId);
repo.getTodos().remove(todoId-1);
%>
</c:if>
<c:if test="${ param._method.equals(\"put\") }">
<%
String strId = request.getParameter("todoId");
int todoId = Integer.parseInt(strId);
Todo todo = repo.getTodos().get(todoId-1);
todo.setDone(!todo.isDone());
%>
</c:if>
<c:if test="${todo.text !=null }">
<c:if test="${! empty param.text }">
<%
repo.addTodo(todo);
Todo todo =new Todo();
todo.setText(request.getParameter("text"));
repo.addTodo(todo);
%>
</c:if>
<c:forEach items="${repo.todos}" var="todo" varStatus="row">
${row.count} - ${todo.text} - ${todo.done} <br />
${row.count} - ${todo.text} - ${todo.done}
<form method="post">
<input name="_method" value="delete" type="hidden">
<input name="todoId" value="${row.count}" type="hidden">
<input type="submit" value="Delete">
</form>
<form method="post">
<input name="_method" value="put" type="hidden">
<input name="todoId" value="${row.count}" type="hidden">
<input type="submit" value="Update">
</form>
</c:forEach>
<form method="get">
<form method="post">
<input name="text"><input type="submit" title="Create">
</form>
</body>
Expand Down
26 changes: 26 additions & 0 deletions src/main/webapp/todos.jsp
@@ -0,0 +1,26 @@
<%@page import="ie.cit.cad.Todo" %>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<body>
<h1>Todo Application (Model 2)</h1>
<h2>Todo list:</h2>
<c:forEach items="${todos}" var="todo" varStatus="row">
${row.count} - ${todo.text} - ${todo.done}
<form method="post">
<input name="_method" value="delete" type="hidden">
<input name="todoId" value="${row.count}" type="hidden">
<input type="submit" value="Delete">
</form>
<form method="post">
<input name="_method" value="put" type="hidden">
<input name="todoId" value="${row.count}" type="hidden">
<input type="submit" value="Update">
</form>
</c:forEach>

<form method="post">
<input name="text"><input type="submit" title="Create">
</form>
</body>
</html>

0 comments on commit 4609fb6

Please sign in to comment.