/*
* $Id: CreateCommentAction.java 10265 2012-11-22 22:53:29Z another $
*
* This file is part of the MoSKito software project
* that is hosted at http://moskito.dev.java.net.
*
* All MoSKito files are distributed under MIT License:
*
* Copyright (c) 2006 The MoSKito Project Team.
*
* Permission is hereby granted, free of charge,
* to any person obtaining a copy of this software and
* associated documentation files (the "Software"),
* to deal in the Software without restriction,
* including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit
* persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice
* shall be included in all copies
* or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
* OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
* LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package org.anotheria.moskitodemo.guestbook.presentation.action;
import net.anotheria.maf.action.ActionCommand;
import net.anotheria.maf.action.ActionMapping;
import net.anotheria.maf.bean.FormBean;
import net.anotheria.maf.bean.annotations.Form;
import net.anotheria.moskito.aop.annotation.Monitor;
import org.anotheria.moskitodemo.guestbook.business.AntispamUtil;
import org.anotheria.moskitodemo.guestbook.business.CommentServiceException;
import org.anotheria.moskitodemo.guestbook.business.data.Comment;
import org.anotheria.moskitodemo.guestbook.presentation.bean.CommentForm;
import org.anotheria.moskitodemo.guestbook.presentation.bean.MessageBean;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Creates a new comment object from form.
* @author dvayanu
*
*/
@Monitor
public class CreateCommentAction extends BaseGuestbookAction{
private static Logger log;
static {
log = Logger.getLogger(CreateCommentAction.class);
}
@Override
public ActionCommand execute(ActionMapping mapping, @Form(CommentForm.class)FormBean af, HttpServletRequest req, HttpServletResponse res) throws Exception {
MessageBean bean = new MessageBean();
try{
CommentForm form = (CommentForm)af;
boolean isBot = AntispamUtil.detectBot(form);
if (isBot){
log.info("Detected bot comment: "+form+" from ip: "+req.getRemoteAddr());
bean.setMessageText("Thanx, comment created (Actually it isn't, since I think that you are a guestbook-spamming bot! But in case the stupid checks for created in output, it's here");
req.setAttribute("message", bean);
return mapping.success();
}
Comment c = getCommentService().createComment();
c.setFirstName(form.getFirstName());
c.setLastName(form.getLastName());
c.setEmail(form.getEmail());
c.setText(form.getText());
c.setWishesUpdates(form.isUpdateFlagChecked());
getCommentService().updateComment(c);
bean.setMessageText("Thanx, comment created.");
bean.setLinkCaption("Return to overview");
bean.setLink("gbookShowComments?ts="+System.currentTimeMillis());
}catch(CommentServiceException e){
bean.setMessageText("Error: "+e.getMessage());
bean.setLink("javascript.history.back();");
bean.setLinkCaption("Back");
}
req.setAttribute("message", bean);
return mapping.success();
}
}