Subversion Repositories general

Rev

Rev 958 | Rev 1012 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
924 dev 1
package ak.hostadmiral.core.action;
919 dev 2
 
3
import java.util.List;
4
import java.util.Collections;
5
import java.util.ArrayList;
6
 
7
import javax.servlet.http.HttpServletRequest;
8
import javax.servlet.http.HttpServletResponse;
9
 
10
import org.apache.struts.action.Action;
11
import org.apache.struts.action.ActionMapping;
12
import org.apache.struts.action.ActionForm;
13
import org.apache.struts.action.DynaActionForm;
14
import org.apache.struts.action.ActionForward;
15
import org.apache.struts.action.ActionMessages;
16
import org.apache.struts.action.ActionErrors;
17
import org.apache.struts.action.ActionError;
18
 
19
import ak.strutsx.RequestUtilsX;
20
import ak.strutsx.ErrorHandlerX;
21
import ak.backpath.BackPath;
22
 
924 dev 23
import ak.hostadmiral.util.StringConverter;
24
import ak.hostadmiral.util.UserException;
25
import ak.hostadmiral.core.CoreResources;
26
import ak.hostadmiral.core.model.User;
27
import ak.hostadmiral.core.model.UserManager;
28
import ak.hostadmiral.core.model.Mailbox;
29
import ak.hostadmiral.core.model.MailboxManager;
30
import ak.hostadmiral.core.model.SystemUserManager;
31
import ak.hostadmiral.core.model.InetDomainManager;
919 dev 32
 
33
public final class MailboxAction
34
	extends Action
35
	implements ErrorHandlerX
36
{
37
	public void handleErrors(ActionMapping mapping, ActionForm form,
38
			 HttpServletRequest request, HttpServletResponse response)
39
		throws Exception
40
	{
41
		if("submit".equals(mapping.getParameter())) {
42
			User user = (User)request.getSession().getAttribute("user");
43
			initLists(request, user);
44
		}
45
	}
46
 
47
	public ActionForward execute(ActionMapping mapping, ActionForm form,
48
			HttpServletRequest request, HttpServletResponse response)
49
		throws Exception
50
	{
51
		User user = (User)request.getSession().getAttribute("user");
52
		if("list".equals(mapping.getParameter())) {
53
			List list = new ArrayList(MailboxManager.getInstance().listMailboxes(user));
54
			Collections.sort(list, MailboxManager.LOGIN_COMPARATOR);
55
			request.setAttribute("mailboxes", list);
56
			request.setAttribute("allowedToCreate",
951 dev 57
				Boolean.valueOf(MailboxManager.getInstance().allowedToCreate(user)));
919 dev 58
 
59
			return mapping.findForward("default");
60
		}
61
		else if("edit".equals(mapping.getParameter())) {
62
			DynaActionForm theForm  = (DynaActionForm)form;
63
			Long           boxId    = StringConverter.parseLong(theForm.get("id"));
923 dev 64
			Mailbox        mailbox;
919 dev 65
			DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
958 dev 66
				this, request, "MailboxEditForm");
919 dev 67
 
68
			if(boxId == null) {
923 dev 69
				mailbox = MailboxManager.getInstance().create(user);
951 dev 70
				showForm.set("enabled",    Boolean.TRUE);
71
            	showForm.set("viruscheck", Boolean.TRUE);
72
            	showForm.set("spamcheck",  Boolean.TRUE);
919 dev 73
			}
74
			else {
923 dev 75
				mailbox = MailboxManager.getInstance().get(user, boxId);
919 dev 76
            	showForm.set("login", mailbox.getLogin());
77
            	if(mailbox.getDomain() != null)
78
            		showForm.set("domain", StringConverter.toString(mailbox.getDomain().getId()));
79
            	if(mailbox.getOwner() != null)
80
	            	showForm.set("owner", StringConverter.toString(mailbox.getOwner().getId()));
81
            	showForm.set("viruscheck", mailbox.getVirusCheck());
82
            	showForm.set("spamcheck", mailbox.getSpamCheck());
83
            	if(mailbox.getSystemUser() != null)
84
	            	showForm.set("systemuser", StringConverter.toString(mailbox.getSystemUser().getId()));
85
				showForm.set("enabled", mailbox.getEnabled());
86
				showForm.set("comment", mailbox.getComment());
87
			}
88
 
89
			initLists(request, user);
923 dev 90
			request.setAttribute("mailbox", mailbox);
91
			if(mailbox.editableBy(user))
92
				return mapping.findForward("default");
93
			else
94
				return mapping.findForward("view");
919 dev 95
		}
96
		else if("delete".equals(mapping.getParameter())) {
97
			DynaActionForm theForm  = (DynaActionForm)form;
98
			Long           boxId    = StringConverter.parseLong(theForm.get("id"));
99
			Mailbox        mailbox  = MailboxManager.getInstance().get(user, boxId);
100
 
101
			MailboxManager.getInstance().delete(user, mailbox);
102
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
103
			return null;
104
		}
105
		else if("submit".equals(mapping.getParameter())) {
106
			DynaActionForm theForm  = (DynaActionForm)form;
107
			Long           boxId    = StringConverter.parseLong(theForm.get("id"));
108
			Mailbox        mailbox;
109
            String         password = (String)theForm.get("password");
110
 
111
			if(boxId == null) {
923 dev 112
	            if(password == null || password.equals("")) {
113
					handleErrors(mapping, form, request, response);
919 dev 114
	            	throw new UserException(CoreResources.PASSWORD_REQUIRED);
923 dev 115
	            }
919 dev 116
 
117
				mailbox = MailboxManager.getInstance().create(user);
118
 
926 dev 119
				// FIXME: create an user as owner of the new mailbox here,
120
				//        create a mail alias with the same name
919 dev 121
			}
122
			else {
123
				mailbox = MailboxManager.getInstance().get(user, boxId);
124
			}
125
 
921 dev 126
            mailbox.setDomain(user, InetDomainManager.getInstance().get(user,
919 dev 127
            	StringConverter.parseLong(theForm.get("domain"))));
926 dev 128
 
129
			String login = (String)theForm.get("login");
130
            if(MailboxManager.getInstance().loginExists(user, mailbox, login)) {
131
				handleErrors(mapping, form, request, response);
132
            	throw new UserException(CoreResources.NONUNIQUE_MAILBOX_LOGIN);
133
            }
134
            mailbox.setLogin(user, login);
135
 
921 dev 136
            mailbox.setOwner(user, UserManager.getInstance().get(user,
919 dev 137
            	StringConverter.parseLong(theForm.get("owner"))));
921 dev 138
            mailbox.setVirusCheck(user, (Boolean)theForm.get("viruscheck"));
139
            mailbox.setSpamCheck(user, (Boolean)theForm.get("spamcheck"));
919 dev 140
 
141
            Long systemUserId = StringConverter.parseLong(theForm.get("systemuser"));
142
			if(systemUserId == null) {
921 dev 143
            	mailbox.setSystemUser(user, null);
919 dev 144
			}
145
			else {
921 dev 146
            	mailbox.setSystemUser(user, SystemUserManager.getInstance().get(user, systemUserId));
919 dev 147
            }
148
 
149
            if(password != null && !password.equals(""))
921 dev 150
            	mailbox.setPassword(user, password);
919 dev 151
 
921 dev 152
			mailbox.setEnabled(user, (Boolean)theForm.get("enabled"));
153
			mailbox.setComment(user, (String)theForm.get("comment"));
919 dev 154
 
155
			MailboxManager.getInstance().save(user, mailbox);
156
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
157
			return null;
158
		}
159
		else {
160
			throw new Exception("unknown mapping parameter");
161
		}
162
	}
163
 
164
	private void initLists(HttpServletRequest request, User user)
165
		throws Exception
166
	{
167
		List users = new ArrayList(UserManager.getInstance().listUsers(user));
168
		Collections.sort(users, UserManager.LOGIN_COMPARATOR);
169
		request.setAttribute("users", users);
170
 
171
		List systemUsers = new ArrayList(SystemUserManager.getInstance().listSystemUsers(user));
172
		Collections.sort(systemUsers, SystemUserManager.UID_COMPARATOR);
173
		request.setAttribute("systemusers", systemUsers);
174
 
175
		List domains = new ArrayList(InetDomainManager.getInstance().listInetDomains(user));
176
		Collections.sort(domains, InetDomainManager.NAME_COMPARATOR);
177
		request.setAttribute("domains", domains);
178
	}
179
}