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 actionMapping, ActionForm actionForm,
052 PortletConfig portletConfig, ActionRequest actionRequest,
053 ActionResponse actionResponse)
054 throws Exception {
055
056 try {
057 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
058
059 if (cmd.equals(Constants.ADD_TEMP)) {
060 addTempImageFile(actionRequest);
061 }
062 else {
063 saveTempImageFile(actionRequest);
064
065 sendRedirect(actionRequest, actionResponse);
066 }
067 }
068 catch (Exception e) {
069 if (e instanceof NoSuchUserException ||
070 e instanceof PrincipalException) {
071
072 SessionErrors.add(actionRequest, e.getClass());
073
074 setForward(actionRequest, "portlet.users_admin.error");
075 }
076 else if (e instanceof FileSizeException ||
077 e instanceof ImageTypeException ||
078 e instanceof UserPortraitTypeException) {
079
080 JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
081
082 jsonObject.putException(e);
083
084 writeJSON(actionRequest, actionResponse, jsonObject);
085 }
086 else if (e instanceof NoSuchFileException ||
087 e instanceof UserPortraitSizeException ||
088 e instanceof UploadException) {
089
090 SessionErrors.add(actionRequest, e.getClass());
091 }
092 else {
093 throw e;
094 }
095 }
096 }
097
098 @Override
099 public ActionForward render(
100 ActionMapping actionMapping, ActionForm actionForm,
101 PortletConfig portletConfig, RenderRequest renderRequest,
102 RenderResponse renderResponse)
103 throws Exception {
104
105 return actionMapping.findForward(
106 getForward(
107 renderRequest, "portlet.users_admin.edit_user_portrait"));
108 }
109
110 @Override
111 protected String getTempImageFileName(PortletRequest portletRequest) {
112 return ParamUtil.getString(portletRequest, "p_u_i_d");
113 }
114
115 @Override
116 protected void saveTempImageFile(
117 PortletRequest portletRequest, byte[] bytes)
118 throws Exception {
119
120 long userId = ParamUtil.getLong(portletRequest, "p_u_i_d");
121
122 UserServiceUtil.updatePortrait(userId, bytes);
123 }
124
125 }