0,0 → 1,179 |
package ak.hostadmiral.core.action; |
|
import java.util.List; |
import java.util.Collections; |
import java.util.ArrayList; |
|
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
|
import org.apache.struts.action.Action; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.DynaActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMessages; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionError; |
|
import ak.strutsx.RequestUtilsX; |
import ak.strutsx.ErrorHandlerX; |
import ak.backpath.BackPath; |
|
import ak.hostadmiral.util.StringConverter; |
import ak.hostadmiral.util.UserException; |
import ak.hostadmiral.core.CoreResources; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
import ak.hostadmiral.core.model.Mailbox; |
import ak.hostadmiral.core.model.MailboxManager; |
import ak.hostadmiral.core.model.SystemUserManager; |
import ak.hostadmiral.core.model.InetDomainManager; |
|
public final class MailboxAction |
extends Action |
implements ErrorHandlerX |
{ |
public void handleErrors(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
{ |
if("submit".equals(mapping.getParameter())) { |
User user = (User)request.getSession().getAttribute("user"); |
initLists(request, user); |
} |
} |
|
public ActionForward execute(ActionMapping mapping, ActionForm form, |
HttpServletRequest request, HttpServletResponse response) |
throws Exception |
{ |
User user = (User)request.getSession().getAttribute("user"); |
if("list".equals(mapping.getParameter())) { |
List list = new ArrayList(MailboxManager.getInstance().listMailboxes(user)); |
Collections.sort(list, MailboxManager.LOGIN_COMPARATOR); |
request.setAttribute("mailboxes", list); |
request.setAttribute("allowedToCreate", |
Boolean.valueOf(MailboxManager.getInstance().allowedToCreate(user))); |
|
return mapping.findForward("default"); |
} |
else if("edit".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
Long boxId = StringConverter.parseLong(theForm.get("id")); |
Mailbox mailbox; |
DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm( |
this, request, "MailboxEditForm"); |
|
if(boxId == null) { |
mailbox = MailboxManager.getInstance().create(user); |
showForm.set("enabled", Boolean.TRUE); |
showForm.set("viruscheck", Boolean.TRUE); |
showForm.set("spamcheck", Boolean.TRUE); |
} |
else { |
mailbox = MailboxManager.getInstance().get(user, boxId); |
showForm.set("login", mailbox.getLogin()); |
if(mailbox.getDomain() != null) |
showForm.set("domain", StringConverter.toString(mailbox.getDomain().getId())); |
if(mailbox.getOwner() != null) |
showForm.set("owner", StringConverter.toString(mailbox.getOwner().getId())); |
showForm.set("viruscheck", mailbox.getVirusCheck()); |
showForm.set("spamcheck", mailbox.getSpamCheck()); |
if(mailbox.getSystemUser() != null) |
showForm.set("systemuser", StringConverter.toString(mailbox.getSystemUser().getId())); |
showForm.set("enabled", mailbox.getEnabled()); |
showForm.set("comment", mailbox.getComment()); |
} |
|
initLists(request, user); |
request.setAttribute("mailbox", mailbox); |
if(mailbox.editableBy(user)) |
return mapping.findForward("default"); |
else |
return mapping.findForward("view"); |
} |
else if("delete".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
Long boxId = StringConverter.parseLong(theForm.get("id")); |
Mailbox mailbox = MailboxManager.getInstance().get(user, boxId); |
|
MailboxManager.getInstance().delete(user, mailbox); |
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl()); |
return null; |
} |
else if("submit".equals(mapping.getParameter())) { |
DynaActionForm theForm = (DynaActionForm)form; |
Long boxId = StringConverter.parseLong(theForm.get("id")); |
Mailbox mailbox; |
String password = (String)theForm.get("password"); |
|
if(boxId == null) { |
if(password == null || password.equals("")) { |
handleErrors(mapping, form, request, response); |
throw new UserException(CoreResources.PASSWORD_REQUIRED); |
} |
|
mailbox = MailboxManager.getInstance().create(user); |
|
// FIXME: create an user as owner of the new mailbox here, |
// create a mail alias with the same name |
} |
else { |
mailbox = MailboxManager.getInstance().get(user, boxId); |
} |
|
mailbox.setDomain(user, InetDomainManager.getInstance().get(user, |
StringConverter.parseLong(theForm.get("domain")))); |
|
String login = (String)theForm.get("login"); |
if(MailboxManager.getInstance().loginExists(user, mailbox, login)) { |
handleErrors(mapping, form, request, response); |
throw new UserException(CoreResources.NONUNIQUE_MAILBOX_LOGIN); |
} |
mailbox.setLogin(user, login); |
|
mailbox.setOwner(user, UserManager.getInstance().get(user, |
StringConverter.parseLong(theForm.get("owner")))); |
mailbox.setVirusCheck(user, (Boolean)theForm.get("viruscheck")); |
mailbox.setSpamCheck(user, (Boolean)theForm.get("spamcheck")); |
|
Long systemUserId = StringConverter.parseLong(theForm.get("systemuser")); |
if(systemUserId == null) { |
mailbox.setSystemUser(user, null); |
} |
else { |
mailbox.setSystemUser(user, SystemUserManager.getInstance().get(user, systemUserId)); |
} |
|
if(password != null && !password.equals("")) |
mailbox.setPassword(user, password); |
|
mailbox.setEnabled(user, (Boolean)theForm.get("enabled")); |
mailbox.setComment(user, (String)theForm.get("comment")); |
|
MailboxManager.getInstance().save(user, mailbox); |
response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl()); |
return null; |
} |
else { |
throw new Exception("unknown mapping parameter"); |
} |
} |
|
private void initLists(HttpServletRequest request, User user) |
throws Exception |
{ |
List users = new ArrayList(UserManager.getInstance().listUsers(user)); |
Collections.sort(users, UserManager.LOGIN_COMPARATOR); |
request.setAttribute("users", users); |
|
List systemUsers = new ArrayList(SystemUserManager.getInstance().listSystemUsers(user)); |
Collections.sort(systemUsers, SystemUserManager.UID_COMPARATOR); |
request.setAttribute("systemusers", systemUsers); |
|
List domains = new ArrayList(InetDomainManager.getInstance().listInetDomains(user)); |
Collections.sort(domains, InetDomainManager.NAME_COMPARATOR); |
request.setAttribute("domains", domains); |
} |
} |