/*
* Copyright 2014 Attila Szegedi, Daniel Dekany, Jonathan Revusky
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package example;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
public class GuestbookServlet extends ControllerServlet {
/**
* Stores the list of guestbook entries.
*
* <p>Note that for the sake of simplicity, this example
* does not try to store the guestbook persistenty.
*/
private ArrayList guestbook = new ArrayList();
public void indexAction(HttpServletRequest req, Page p) {
List snapShot;
synchronized (guestbook) {
snapShot = (List) guestbook.clone();
}
p.put("guestbook", snapShot);
p.setTemplate("index.ftl");
}
public void formAction (HttpServletRequest req, Page p)
throws IOException, ServletException {
p.put("name", noNull(req.getParameter("name")));
p.put("email", noNull(req.getParameter("email")));
p.put("message", noNull(req.getParameter("message")));
List errors = (List) req.getAttribute("errors");
p.put("errors", errors == null ? new ArrayList() : errors);
p.setTemplate("form.ftl");
}
public void addAction (HttpServletRequest req, Page p)
throws IOException, ServletException {
List errors = new ArrayList();
String name = req.getParameter("name");
String email = req.getParameter("email");
String message = req.getParameter("message");
if (isBlank(name)) {
errors.add("You must give your name.");
}
if (isBlank(message)) {
errors.add("You must give a message.");
}
// Was the sent data was correct?
if (errors.isEmpty()) {
if (email == null) email = "";
// Create and insert the new guestbook entry.
GuestbookEntry e = new GuestbookEntry(
name.trim(), email.trim(), message);
synchronized (guestbook) {
guestbook.add(0, e);
}
// Show "Entry added" page.
p.put("entry", e);
p.setTemplate("add.ftl");
} else {
// Go back to the page of the form
req.setAttribute("errors", errors);
p.setForward("form.a");
}
}
public static String noNull(String s) {
return s == null ? "" : s;
}
public static boolean isBlank(String s) {
return s == null || s.trim().length() == 0;
}
}