Subversion Repositories general

Rev

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