/* Date: October 24, 2010 * Template: PluginScreenJavaTemplateGen.java.ftl * generator: org.molgenis.generators.ui.PluginScreenJavaTemplateGen 3.3.3 * * THIS FILE IS A TEMPLATE. PLEASE EDIT :-) */ package org.molgenis.feedback.ui; import javax.servlet.http.HttpServletRequest; import nl.captcha.Captcha; import org.apache.commons.lang.StringUtils; import org.molgenis.framework.db.Database; import org.molgenis.framework.ui.EasyPluginController; import org.molgenis.framework.ui.FreemarkerView; import org.molgenis.framework.ui.ScreenController; import org.molgenis.framework.ui.ScreenMessage; import org.molgenis.framework.ui.ScreenView; import org.molgenis.util.HttpServletRequestTuple; import org.molgenis.util.SimpleEmailService.EmailException; import org.molgenis.util.Tuple; public class Contact extends EasyPluginController<ContactModel> { private static final long serialVersionUID = 1708473767804277235L; public Contact(String name, ScreenController<?> parent) { super(name, parent); this.setModel(new ContactModel(this)); // the default model } public ScreenView getView() { return new FreemarkerView("Contact.ftl", getModel()); } public void handleRequest(Database db, Tuple request) { this.getModel().setMessages(); try { this.getModel().setAction(request.getAction()); if ("send".equals(this.getModel().getAction())) { if (StringUtils.isEmpty(request.getString("name"))) throw new IllegalArgumentException( "Please enter a name."); if (StringUtils.isEmpty(request.getString("email"))) throw new IllegalArgumentException( "Please enter an email address."); if (StringUtils.isEmpty(request.getString("comments"))) throw new IllegalArgumentException( "Please enter your comments."); // get the http request that is encapsulated inside the tuple HttpServletRequestTuple rt = (HttpServletRequestTuple) request; HttpServletRequest httpRequest = rt.getRequest(); Captcha captcha = (Captcha) httpRequest.getSession().getAttribute(Captcha.NAME); if (!captcha.isCorrect(request.getString("code"))) throw new IllegalArgumentException("Code was wrong."); String emailContents = "New comment via the contact form:\n" + "Name: " + request.getString("name") + "\n" + "Email: " + request.getString("email") + "\n" + "Comments: " + request.getString("comments") + "\n"; // assuming: 'encoded' p.w. (setting deObf = true) this.getEmailService().email("New comment", emailContents, this.getModel().getEmailTo(), true); this.getModel().getMessages().add(new ScreenMessage("Your comment has been successfully sent.", true)); } } catch (IllegalArgumentException e) { this.getModel().getMessages().add(new ScreenMessage(e.getMessage(), false)); } catch (EmailException e) { this.getModel().getMessages().add(new ScreenMessage(e.getMessage(), false)); e.printStackTrace(); } } @Override public void reload(Database db) { this.populateContactForm(); } private void populateContactForm() { this.getModel().setContactForm(new ContactForm()); this.getModel().getContactForm().get("select").setValue(this.getName()); this.getModel().getContactForm().get("__target").setValue(this.getName()); } }