package net.lr.tasklist.ui;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Collection;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.lr.tasklist.model.Task;
import net.lr.tasklist.model.TaskService;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.metatype.annotations.Designate;
@Component(
service = { Servlet.class },
property = { "alias:String=/tasklist" }
)
@Designate(ocd = TaskUIConfig.class)
public class TaskListServlet extends HttpServlet {
@Reference
private TaskService taskService;
private String docTitle;
private int numTasks;
private static final long serialVersionUID = 34992072289535683L;
@Activate
public void activate(TaskUIConfig config) {
this.docTitle = config.title();
this.numTasks = config.numTasks();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
String add = req.getParameter("add");
String taskId = req.getParameter("taskId");
String title = req.getParameter("title");
PrintWriter writer = resp.getWriter();
if (add != null) {
addTask(taskId, title);
} else if (taskId != null && taskId.length() > 0) {
showTask(writer, taskId);
} else {
showTaskList(writer);
}
}
private void addTask(String taskId, String title) {
Task task = new Task();
task.setId(new Integer(taskId));
task.setTitle(title);
taskService.addTask(task );
}
private void showTaskList(PrintWriter writer) {
writer.println("<h1>" + docTitle + "</h1>");
Collection<Task> tasks = taskService.getTasks();
for (Task task : tasks) {
writer.println("<a href=\"?taskId=" + task.getId() + "\">" + task.getTitle() + "</a><BR/>");
}
writer.println("<BR>\nShowing up to " + numTasks + " tasks");
}
private void showTask(PrintWriter writer, String taskId) {
SimpleDateFormat sdf = new SimpleDateFormat();
Task task = taskService.getTask(new Integer(taskId));
if (task != null) {
writer.println("<h1>Task " + task.getTitle() + " </h1>");
if (task.getDueDate() != null) {
writer.println("Due date: " + sdf.format(task.getDueDate()) + "<br/>");
}
writer.println(task.getDescription());
} else {
writer.println("Task with id " + taskId + " not found");
}
}
}