Subversion Repositories general

Rev

Rev 1012 | Rev 1028 | 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;
1012 dev 6
import java.util.HashSet;
919 dev 7
 
8
import javax.servlet.http.HttpServletRequest;
9
import javax.servlet.http.HttpServletResponse;
10
 
11
import org.apache.struts.action.Action;
12
import org.apache.struts.action.ActionMapping;
13
import org.apache.struts.action.ActionForm;
14
import org.apache.struts.action.DynaActionForm;
15
import org.apache.struts.action.ActionForward;
16
import org.apache.struts.action.ActionMessages;
17
import org.apache.struts.action.ActionErrors;
18
import org.apache.struts.action.ActionError;
19
 
20
import ak.strutsx.RequestUtilsX;
21
import ak.strutsx.ErrorHandlerX;
22
import ak.backpath.BackPath;
23
 
924 dev 24
import ak.hostadmiral.util.StringConverter;
25
import ak.hostadmiral.util.UserException;
26
import ak.hostadmiral.core.CoreResources;
27
import ak.hostadmiral.core.model.User;
28
import ak.hostadmiral.core.model.UserManager;
29
import ak.hostadmiral.core.model.InetDomain;
30
import ak.hostadmiral.core.model.InetDomainManager;
919 dev 31
 
32
public final class InetDomainAction
33
	extends Action
34
	implements ErrorHandlerX
35
{
36
	public void handleErrors(ActionMapping mapping, ActionForm form,
37
			 HttpServletRequest request, HttpServletResponse response)
38
		throws Exception
39
	{
1014 dev 40
		ActionUtils.prepare(request, response);
919 dev 41
		if("submit".equals(mapping.getParameter())) {
42
			User user = (User)request.getSession().getAttribute("user");
43
			initUserList(request, user);
44
		}
45
	}
46
 
47
	public ActionForward execute(ActionMapping mapping, ActionForm form,
48
			HttpServletRequest request, HttpServletResponse response)
49
		throws Exception
50
	{
1014 dev 51
		ActionUtils.prepare(request, response);
919 dev 52
		User user = (User)request.getSession().getAttribute("user");
53
 
54
		if("list".equals(mapping.getParameter())) {
55
			List list = new ArrayList(InetDomainManager.getInstance().listInetDomains(user));
56
			Collections.sort(list, InetDomainManager.NAME_COMPARATOR);
57
			request.setAttribute("domains", list);
58
			request.setAttribute("allowedToCreate",
951 dev 59
				Boolean.valueOf(InetDomainManager.getInstance().allowedToCreate(user)));
919 dev 60
 
61
			return mapping.findForward("default");
62
		}
63
		else if("edit".equals(mapping.getParameter())) {
64
			DynaActionForm theForm  = (DynaActionForm)form;
65
			Long           domainId = StringConverter.parseLong(theForm.get("id"));
923 dev 66
			InetDomain     domain;
919 dev 67
			DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
958 dev 68
				this, request, "InetDomainEditForm");
919 dev 69
 
70
			if(domainId == null) {
923 dev 71
				domain = InetDomainManager.getInstance().create(user);
951 dev 72
				showForm.set("enabled", Boolean.TRUE);
919 dev 73
			}
74
			else {
923 dev 75
				domain = InetDomainManager.getInstance().get(user, domainId);
919 dev 76
            	showForm.set("name", domain.getName());
77
            	if(domain.getOwner() != null)
78
            		showForm.set("owner", StringConverter.toString(domain.getOwner().getId()));
79
				showForm.set("enabled", domain.getEnabled());
80
				showForm.set("comment", domain.getComment());
81
			}
82
 
83
			initUserList(request, user);
923 dev 84
			request.setAttribute("domain", domain);
85
			if(domain.editableBy(user))
86
				return mapping.findForward("default");
87
			else
88
				return mapping.findForward("view");
919 dev 89
		}
1012 dev 90
		else if("deleting".equals(mapping.getParameter())) {
91
			DynaActionForm theForm  = (DynaActionForm)form;
92
			Long           domainId = StringConverter.parseLong(theForm.get("id"));
93
			InetDomain     domain   = InetDomainManager.getInstance().get(user, domainId);
94
 
95
			request.setAttribute("action", "/domain/delete.do");
96
			request.setAttribute("object", domain);
97
			request.setAttribute("cascade",
98
				InetDomainManager.getInstance().beforeDelete(user, domain, new HashSet()));
99
 
100
			return mapping.findForward("default");
101
		}
919 dev 102
		else if("delete".equals(mapping.getParameter())) {
103
			DynaActionForm theForm  = (DynaActionForm)form;
104
			Long           domainId = StringConverter.parseLong(theForm.get("id"));
105
			InetDomain     domain   = InetDomainManager.getInstance().get(user, domainId);
106
 
107
			InetDomainManager.getInstance().delete(user, domain);
108
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
109
			return null;
110
		}
111
		else if("submit".equals(mapping.getParameter())) {
112
			DynaActionForm theForm  = (DynaActionForm)form;
113
			Long           domainId = StringConverter.parseLong(theForm.get("id"));
114
			InetDomain     domain;
115
 
116
			if(domainId == null) {
117
				domain = InetDomainManager.getInstance().create(user);
118
			}
119
			else {
120
				domain = InetDomainManager.getInstance().get(user, domainId);
121
			}
122
 
923 dev 123
            String name = (String)theForm.get("name");
124
            if(InetDomainManager.getInstance().nameExists(user, domain, name)) {
125
				handleErrors(mapping, form, request, response);
126
            	throw new UserException(CoreResources.NONUNIQUE_DOMAIN_NAME);
127
            }
128
            domain.setName(user, name);
129
 
921 dev 130
            domain.setOwner(user, UserManager.getInstance().get(user,
919 dev 131
            	StringConverter.parseLong(theForm.get("owner"))));
132
 
921 dev 133
			domain.setEnabled(user, (Boolean)theForm.get("enabled"));
134
			domain.setComment(user, (String)theForm.get("comment"));
919 dev 135
 
136
			InetDomainManager.getInstance().save(user, domain);
137
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
138
			return null;
139
		}
140
		else {
141
			throw new Exception("unknown mapping parameter");
142
		}
143
	}
144
 
145
	private void initUserList(HttpServletRequest request, User user)
146
		throws Exception
147
	{
148
		List list = new ArrayList(UserManager.getInstance().listUsers(user));
149
		Collections.sort(list, UserManager.LOGIN_COMPARATOR);
150
		request.setAttribute("users", list);
151
	}
152
}