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;
911 dev 21
import ak.strutsx.ErrorHandlerX;
919 dev 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.SystemUser;
30
import ak.hostadmiral.core.model.SystemUserManager;
919 dev 31
 
32
public final class SystemUserAction
33
	extends Action
911 dev 34
	implements ErrorHandlerX
919 dev 35
{
911 dev 36
	public void handleErrors(ActionMapping mapping, ActionForm form,
37
			 HttpServletRequest request, HttpServletResponse response)
38
		throws Exception
39
	{
1014 dev 40
		ActionUtils.prepare(request, response);
911 dev 41
		if("submit".equals(mapping.getParameter())) {
919 dev 42
			User user = (User)request.getSession().getAttribute("user");
915 dev 43
			initUserList(request, user);
911 dev 44
		}
45
	}
46
 
919 dev 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(SystemUserManager.getInstance().listSystemUsers(user));
56
			Collections.sort(list, SystemUserManager.NAME_COMPARATOR);
57
			request.setAttribute("users", list);
58
			request.setAttribute("allowedToCreate",
951 dev 59
				Boolean.valueOf(SystemUserManager.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           userId   = StringConverter.parseLong(theForm.get("id"));
923 dev 66
			SystemUser     u;
919 dev 67
			DynaActionForm showForm = (DynaActionForm)RequestUtilsX.populateActionForm(
958 dev 68
				this, request, "SystemUserEditForm");
919 dev 69
 
70
			if(userId == null) {
923 dev 71
				u = SystemUserManager.getInstance().create(user);
951 dev 72
				showForm.set("enabled", Boolean.TRUE);
919 dev 73
			}
74
			else {
923 dev 75
				u = SystemUserManager.getInstance().get(user, userId);
919 dev 76
            	showForm.set("uid",   StringConverter.toString(u.getUid()));
77
            	showForm.set("name",  u.getName());
911 dev 78
                if(u.getOwner() != null)
919 dev 79
            	    showForm.set("owner", StringConverter.toString(u.getOwner().getId()));
80
				showForm.set("enabled", u.getEnabled());
81
				showForm.set("comment", u.getComment());
82
			}
83
 
915 dev 84
			initUserList(request, user);
923 dev 85
			request.setAttribute("u", u);
86
			if(u.editableBy(user))
87
				return mapping.findForward("default");
88
			else
89
				return mapping.findForward("view");
919 dev 90
		}
1012 dev 91
		else if("deleting".equals(mapping.getParameter())) {
92
			DynaActionForm theForm  = (DynaActionForm)form;
93
			Long           userId   = StringConverter.parseLong(theForm.get("id"));
94
			SystemUser     u        = SystemUserManager.getInstance().get(user, userId);
95
 
96
			request.setAttribute("action", "/user/system/delete.do");
97
			request.setAttribute("object", u);
98
			request.setAttribute("cascade",
99
				SystemUserManager.getInstance().beforeDelete(user, u, new HashSet()));
100
 
101
			return mapping.findForward("default");
102
		}
919 dev 103
		else if("delete".equals(mapping.getParameter())) {
104
			DynaActionForm theForm  = (DynaActionForm)form;
105
			Long           userId   = StringConverter.parseLong(theForm.get("id"));
106
			SystemUser     u        = SystemUserManager.getInstance().get(user, userId);
107
 
108
			SystemUserManager.getInstance().delete(user, u);
109
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
110
			return null;
111
		}
112
		else if("submit".equals(mapping.getParameter())) {
113
			DynaActionForm theForm  = (DynaActionForm)form;
114
			Long           userId   = StringConverter.parseLong(theForm.get("id"));
115
			SystemUser     u;
116
 
117
			if(userId == null) {
118
				u = SystemUserManager.getInstance().create(user);
119
			}
120
			else {
121
				u = SystemUserManager.getInstance().get(user, userId);
122
			}
123
 
923 dev 124
            Integer uid = StringConverter.parseInteger(theForm.get("uid"));
125
            if(SystemUserManager.getInstance().uidExists(user, u, uid)) {
126
				handleErrors(mapping, form, request, response);
127
            	throw new UserException(CoreResources.NONUNIQUE_SYSTEM_USER_UID);
128
            }
129
            u.setUid(user, uid);
919 dev 130
 
923 dev 131
            String name = (String)theForm.get("name");
132
            if(SystemUserManager.getInstance().nameExists(user, u, name)) {
133
				handleErrors(mapping, form, request, response);
134
            	throw new UserException(CoreResources.NONUNIQUE_SYSTEM_USER_NAME);
135
            }
136
            u.setName(user, name);
137
 
911 dev 138
            Long ownerId = StringConverter.parseLong(theForm.get("owner"));
139
            if(ownerId == null)
921 dev 140
                u.setOwner(user, null);
911 dev 141
            else
921 dev 142
                u.setOwner(user, UserManager.getInstance().get(user, ownerId));
911 dev 143
 
921 dev 144
			u.setEnabled(user, (Boolean)theForm.get("enabled"));
145
			u.setComment(user, (String)theForm.get("comment"));
919 dev 146
 
147
			SystemUserManager.getInstance().save(user, u);
148
			response.sendRedirect(BackPath.findBackPath(request).getBackwardUrl());
149
			return null;
150
		}
151
		else {
152
			throw new Exception("unknown mapping parameter");
153
		}
154
	}
155
 
915 dev 156
	private void initUserList(HttpServletRequest request, User user)
911 dev 157
		throws Exception
158
	{
915 dev 159
		List list = new ArrayList(UserManager.getInstance().listUsers(user));
911 dev 160
		Collections.sort(list, UserManager.LOGIN_COMPARATOR);
161
		request.setAttribute("users", list);
162
	}
919 dev 163
}