Subversion Repositories general

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
919 dev 1
package ak.hostcaptain.core.action;
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
 
23
import ak.hostcaptain.util.StringConverter;
24
import ak.hostcaptain.util.UserException;
25
import ak.hostcaptain.core.CoreResources;
26
import ak.hostcaptain.core.model.User;
27
import ak.hostcaptain.core.model.UserManager;
28
import ak.hostcaptain.core.model.Mailbox;
29
import ak.hostcaptain.core.model.MailboxManager;
30
import ak.hostcaptain.core.model.SystemUserManager;
31
import ak.hostcaptain.core.model.InetDomainManager;
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",
57
				new Boolean(MailboxManager.getInstance().allowedToCreate(user)));
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"));
64
			DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
65
				this, request, "ak.hostcaptain.core.form.MailboxEditForm");
66
 
67
			if(boxId == null) {
68
				showForm.set("enabled",    new Boolean(true));
69
            	showForm.set("viruscheck", new Boolean(true));
70
            	showForm.set("spamcheck",  new Boolean(true));
71
			}
72
			else {
73
				Mailbox mailbox = MailboxManager.getInstance().get(user, boxId);
74
            	showForm.set("login", mailbox.getLogin());
75
            	if(mailbox.getDomain() != null)
76
            		showForm.set("domain", StringConverter.toString(mailbox.getDomain().getId()));
77
            	if(mailbox.getOwner() != null)
78
	            	showForm.set("owner", StringConverter.toString(mailbox.getOwner().getId()));
79
            	showForm.set("viruscheck", mailbox.getVirusCheck());
80
            	showForm.set("spamcheck", mailbox.getSpamCheck());
81
            	if(mailbox.getSystemUser() != null)
82
	            	showForm.set("systemuser", StringConverter.toString(mailbox.getSystemUser().getId()));
83
				showForm.set("enabled", mailbox.getEnabled());
84
				showForm.set("comment", mailbox.getComment());
85
			}
86
 
87
			initLists(request, user);
88
			return mapping.findForward("default");
89
		}
90
		else if("delete".equals(mapping.getParameter())) {
91
			DynaActionForm theForm  = (DynaActionForm)form;
92
			Long           boxId    = StringConverter.parseLong(theForm.get("id"));
93
			Mailbox        mailbox  = MailboxManager.getInstance().get(user, boxId);
94
 
95
			MailboxManager.getInstance().delete(user, mailbox);
96
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
97
			return null;
98
		}
99
		else if("submit".equals(mapping.getParameter())) {
100
			DynaActionForm theForm  = (DynaActionForm)form;
101
			Long           boxId    = StringConverter.parseLong(theForm.get("id"));
102
			Mailbox        mailbox;
103
            String         password = (String)theForm.get("password");
104
 
105
			if(boxId == null) {
106
	            if(password == null || password.equals(""))
107
	            	throw new UserException(CoreResources.PASSWORD_REQUIRED);
108
 
109
				mailbox = MailboxManager.getInstance().create(user);
110
 
111
				// FIXME: create an user as owner of the new mailbox here
112
			}
113
			else {
114
				mailbox = MailboxManager.getInstance().get(user, boxId);
115
			}
116
 
117
            mailbox.setLogin((String)theForm.get("login"));
118
            mailbox.setDomain(InetDomainManager.getInstance().get(user,
119
            	StringConverter.parseLong(theForm.get("domain"))));
120
            mailbox.setOwner(UserManager.getInstance().get(user,
121
            	StringConverter.parseLong(theForm.get("owner"))));
122
            mailbox.setVirusCheck((Boolean)theForm.get("viruscheck"));
123
            mailbox.setSpamCheck((Boolean)theForm.get("spamcheck"));
124
 
125
            Long systemUserId = StringConverter.parseLong(theForm.get("systemuser"));
126
			if(systemUserId == null) {
127
            	mailbox.setSystemUser(null);
128
			}
129
			else {
130
            	mailbox.setSystemUser(SystemUserManager.getInstance().get(user, systemUserId));
131
            }
132
 
133
            if(password != null && !password.equals(""))
134
            	mailbox.setNewPassword(password);
135
 
136
			mailbox.setEnabled((Boolean)theForm.get("enabled"));
137
			mailbox.setComment((String)theForm.get("comment"));
138
 
139
			MailboxManager.getInstance().save(user, mailbox);
140
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
141
			return null;
142
		}
143
		else {
144
			throw new Exception("unknown mapping parameter");
145
		}
146
	}
147
 
148
	private void initLists(HttpServletRequest request, User user)
149
		throws Exception
150
	{
151
		List users = new ArrayList(UserManager.getInstance().listUsers(user));
152
		Collections.sort(users, UserManager.LOGIN_COMPARATOR);
153
		request.setAttribute("users", users);
154
 
155
		List systemUsers = new ArrayList(SystemUserManager.getInstance().listSystemUsers(user));
156
		Collections.sort(systemUsers, SystemUserManager.UID_COMPARATOR);
157
		request.setAttribute("systemusers", systemUsers);
158
 
159
		List domains = new ArrayList(InetDomainManager.getInstance().listInetDomains(user));
160
		Collections.sort(domains, InetDomainManager.NAME_COMPARATOR);
161
		request.setAttribute("domains", domains);
162
	}
163
}