/*
* $Id$
* $URL$
*/
package org.subethamail.web.action;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.java.Log;
import org.hibernate.validator.constraints.Length;
import org.subethamail.entity.i.Validator;
import org.subethamail.web.Backend;
import org.subethamail.web.action.auth.AuthRequired;
import org.subethamail.web.model.ErrorMapModel;
/**
* Injects a piece of mail into the system via a web form. One of msgId or listId
* will be specified to indicate reply or post, respectively.
*
* @author Jon Stevens
* @author Jeff Schnitzer
*/
@Log
public class PostMessage extends AuthRequired
{
public class Model extends ErrorMapModel
{
@Getter @Setter Long msgId;
@Getter @Setter Long listId;
@Length(min=1, max=Validator.MAX_MAIL_SUBJECT)
@Getter @Setter String subject;
@Length(min=1, max=Validator.MAX_MAIL_CONTENT)
@Getter @Setter String message;
}
/** */
public void initialize()
{
this.getCtx().setModel(new Model());
}
/** */
public void authExecute() throws Exception
{
Model model = (Model)this.getCtx().getModel();
model.validate();
if (model.getErrors().isEmpty())
{
// Reply
if (model.msgId != null)
{
model.listId = Backend.instance().getArchiver().reply(this.getAuthName(), model.msgId, model.subject, model.message);
}
else
{
Backend.instance().getArchiver().post(this.getAuthName(), model.listId, model.subject, model.message);
}
}
}
}