001
014
015 package com.liferay.portlet.usergroupsadmin.action;
016
017 import com.liferay.portal.NoSuchUserGroupException;
018 import com.liferay.portal.kernel.servlet.SessionErrors;
019 import com.liferay.portal.kernel.util.Constants;
020 import com.liferay.portal.kernel.util.ParamUtil;
021 import com.liferay.portal.kernel.util.StringUtil;
022 import com.liferay.portal.kernel.util.Validator;
023 import com.liferay.portal.security.auth.PrincipalException;
024 import com.liferay.portal.service.UserServiceUtil;
025 import com.liferay.portal.struts.PortletAction;
026
027 import javax.portlet.ActionRequest;
028 import javax.portlet.ActionResponse;
029 import javax.portlet.PortletConfig;
030 import javax.portlet.RenderRequest;
031 import javax.portlet.RenderResponse;
032
033 import org.apache.struts.action.ActionForm;
034 import org.apache.struts.action.ActionForward;
035 import org.apache.struts.action.ActionMapping;
036
037
040 public class EditUserGroupAssignmentsAction extends PortletAction {
041
042 @Override
043 public void processAction(
044 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
045 ActionRequest actionRequest, ActionResponse actionResponse)
046 throws Exception {
047
048 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
049
050 try {
051 if (cmd.equals("user_group_users")) {
052 updateUserGroupUsers(actionRequest);
053 }
054
055 if (Validator.isNotNull(cmd)) {
056 String redirect = ParamUtil.getString(
057 actionRequest, "assignmentsRedirect");
058
059 sendRedirect(actionRequest, actionResponse, redirect);
060 }
061 }
062 catch (Exception e) {
063 if (e instanceof NoSuchUserGroupException ||
064 e instanceof PrincipalException) {
065
066 SessionErrors.add(actionRequest, e.getClass().getName());
067
068 setForward(actionRequest, "portlet.user_groups_admin.error");
069 }
070 else {
071 throw e;
072 }
073 }
074 }
075
076 @Override
077 public ActionForward render(
078 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
079 RenderRequest renderRequest, RenderResponse renderResponse)
080 throws Exception {
081
082 try {
083 ActionUtil.getUserGroup(renderRequest);
084 }
085 catch (Exception e) {
086 if (e instanceof NoSuchUserGroupException ||
087 e instanceof PrincipalException) {
088
089 SessionErrors.add(renderRequest, e.getClass().getName());
090
091 return mapping.findForward("portlet.user_groups_admin.error");
092 }
093 else {
094 throw e;
095 }
096 }
097
098 return mapping.findForward(getForward(
099 renderRequest,
100 "portlet.user_groups_admin.edit_user_group_assignments"));
101 }
102
103 protected void updateUserGroupUsers(ActionRequest actionRequest)
104 throws Exception {
105
106 long userGroupId = ParamUtil.getLong(actionRequest, "userGroupId");
107
108 long[] addUserIds = StringUtil.split(
109 ParamUtil.getString(actionRequest, "addUserIds"), 0L);
110 long[] removeUserIds = StringUtil.split(
111 ParamUtil.getString(actionRequest, "removeUserIds"), 0L);
112
113 UserServiceUtil.addUserGroupUsers(userGroupId, addUserIds);
114 UserServiceUtil.unsetUserGroupUsers(userGroupId, removeUserIds);
115 }
116
117 }