001
014
015 package com.liferay.portlet.usersadmin.action;
016
017 import com.liferay.portal.ImageTypeException;
018 import com.liferay.portal.NoSuchUserException;
019 import com.liferay.portal.UserPortraitSizeException;
020 import com.liferay.portal.UserPortraitTypeException;
021 import com.liferay.portal.kernel.json.JSONFactoryUtil;
022 import com.liferay.portal.kernel.json.JSONObject;
023 import com.liferay.portal.kernel.servlet.SessionErrors;
024 import com.liferay.portal.kernel.upload.UploadException;
025 import com.liferay.portal.kernel.util.Constants;
026 import com.liferay.portal.kernel.util.ParamUtil;
027 import com.liferay.portal.security.auth.PrincipalException;
028 import com.liferay.portal.service.UserServiceUtil;
029 import com.liferay.portlet.documentlibrary.FileSizeException;
030 import com.liferay.portlet.documentlibrary.NoSuchFileException;
031 import com.liferay.portlet.portalsettings.action.EditCompanyLogoAction;
032
033 import javax.portlet.ActionRequest;
034 import javax.portlet.ActionResponse;
035 import javax.portlet.PortletConfig;
036 import javax.portlet.PortletRequest;
037 import javax.portlet.RenderRequest;
038 import javax.portlet.RenderResponse;
039
040 import org.apache.struts.action.ActionForm;
041 import org.apache.struts.action.ActionForward;
042 import org.apache.struts.action.ActionMapping;
043
044
047 public class EditUserPortraitAction extends EditCompanyLogoAction {
048
049 @Override
050 public void processAction(
051 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
052 ActionRequest actionRequest, ActionResponse actionResponse)
053 throws Exception {
054
055 try {
056 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
057
058 if (cmd.equals(Constants.ADD_TEMP)) {
059 addTempImageFile(actionRequest);
060 }
061 else {
062 saveTempImageFile(actionRequest);
063
064 sendRedirect(actionRequest, actionResponse);
065 }
066 }
067 catch (Exception e) {
068 if (e instanceof NoSuchUserException ||
069 e instanceof PrincipalException) {
070
071 SessionErrors.add(actionRequest, e.getClass());
072
073 setForward(actionRequest, "portlet.users_admin.error");
074 }
075 else if (e instanceof FileSizeException ||
076 e instanceof ImageTypeException ||
077 e instanceof UserPortraitTypeException) {
078
079 JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
080
081 jsonObject.putException(e);
082
083 writeJSON(actionRequest, actionResponse, jsonObject);
084 }
085 else if (e instanceof NoSuchFileException ||
086 e instanceof UserPortraitSizeException ||
087 e instanceof UploadException) {
088
089 SessionErrors.add(actionRequest, e.getClass());
090 }
091 else {
092 throw e;
093 }
094 }
095 }
096
097 @Override
098 public ActionForward render(
099 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
100 RenderRequest renderRequest, RenderResponse renderResponse)
101 throws Exception {
102
103 return mapping.findForward(
104 getForward(
105 renderRequest, "portlet.users_admin.edit_user_portrait"));
106 }
107
108 @Override
109 protected String getTempImageFileName(PortletRequest portletRequest) {
110 return ParamUtil.getString(portletRequest, "p_u_i_d");
111 }
112
113 @Override
114 protected void saveTempImageFile(
115 PortletRequest portletRequest, byte[] bytes)
116 throws Exception {
117
118 long userId = ParamUtil.getLong(portletRequest, "p_u_i_d");
119
120 UserServiceUtil.updatePortrait(userId, bytes);
121 }
122
123 }