PageRenderTime 44ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/portal-impl/src/com/liferay/portlet/portalsettings/action/EditCompanyAction.java

http://github.com/liferay/liferay-portal
Java | 288 lines | 225 code | 46 blank | 17 comment | 25 complexity | 62fd08e42d2ecf4b084e1c389817c11e MD5 | raw file
Possible License(s): LGPL-2.0
  1. /**
  2. * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
  3. *
  4. * This library is free software; you can redistribute it and/or modify it under
  5. * the terms of the GNU Lesser General Public License as published by the Free
  6. * Software Foundation; either version 2.1 of the License, or (at your option)
  7. * any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  11. * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
  12. * details.
  13. */
  14. package com.liferay.portlet.portalsettings.action;
  15. import com.liferay.portal.AccountNameException;
  16. import com.liferay.portal.AddressCityException;
  17. import com.liferay.portal.AddressStreetException;
  18. import com.liferay.portal.AddressZipException;
  19. import com.liferay.portal.CompanyMxException;
  20. import com.liferay.portal.CompanyVirtualHostException;
  21. import com.liferay.portal.CompanyWebIdException;
  22. import com.liferay.portal.EmailAddressException;
  23. import com.liferay.portal.LocaleException;
  24. import com.liferay.portal.NoSuchCountryException;
  25. import com.liferay.portal.NoSuchListTypeException;
  26. import com.liferay.portal.NoSuchRegionException;
  27. import com.liferay.portal.PhoneNumberException;
  28. import com.liferay.portal.WebsiteURLException;
  29. import com.liferay.portal.kernel.servlet.SessionErrors;
  30. import com.liferay.portal.kernel.util.Constants;
  31. import com.liferay.portal.kernel.util.ParamUtil;
  32. import com.liferay.portal.kernel.util.PropertiesParamUtil;
  33. import com.liferay.portal.kernel.util.PropsKeys;
  34. import com.liferay.portal.kernel.util.UnicodeProperties;
  35. import com.liferay.portal.kernel.util.Validator;
  36. import com.liferay.portal.model.Address;
  37. import com.liferay.portal.model.Company;
  38. import com.liferay.portal.model.EmailAddress;
  39. import com.liferay.portal.model.Phone;
  40. import com.liferay.portal.model.Website;
  41. import com.liferay.portal.security.auth.PrincipalException;
  42. import com.liferay.portal.service.CompanyServiceUtil;
  43. import com.liferay.portal.struts.PortletAction;
  44. import com.liferay.portal.util.PortalUtil;
  45. import com.liferay.portal.util.PropsValues;
  46. import com.liferay.portlet.usersadmin.util.UsersAdminUtil;
  47. import java.util.List;
  48. import javax.portlet.ActionRequest;
  49. import javax.portlet.ActionResponse;
  50. import javax.portlet.PortletConfig;
  51. import javax.portlet.RenderRequest;
  52. import javax.portlet.RenderResponse;
  53. import org.apache.struts.action.ActionForm;
  54. import org.apache.struts.action.ActionForward;
  55. import org.apache.struts.action.ActionMapping;
  56. /**
  57. * @author Brian Wing Shun Chan
  58. * @author Julio Camarero
  59. */
  60. public class EditCompanyAction extends PortletAction {
  61. @Override
  62. public void processAction(
  63. ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
  64. ActionRequest actionRequest, ActionResponse actionResponse)
  65. throws Exception {
  66. String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
  67. try {
  68. if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
  69. validateCAS(actionRequest);
  70. validateLDAP(actionRequest);
  71. if (!SessionErrors.isEmpty(actionRequest)) {
  72. setForward(
  73. actionRequest, "portlet.portal_settings.edit_company");
  74. }
  75. else {
  76. updateCompany(actionRequest);
  77. updateDisplay(actionRequest);
  78. sendRedirect(actionRequest, actionResponse);
  79. }
  80. }
  81. }
  82. catch (Exception e) {
  83. if (e instanceof PrincipalException) {
  84. SessionErrors.add(actionRequest, e.getClass());
  85. setForward(actionRequest, "portlet.portal_settings.error");
  86. }
  87. else if (e instanceof AddressCityException ||
  88. e instanceof AccountNameException ||
  89. e instanceof AddressStreetException ||
  90. e instanceof AddressZipException ||
  91. e instanceof CompanyMxException ||
  92. e instanceof CompanyVirtualHostException ||
  93. e instanceof CompanyWebIdException ||
  94. e instanceof EmailAddressException ||
  95. e instanceof LocaleException ||
  96. e instanceof NoSuchCountryException ||
  97. e instanceof NoSuchListTypeException ||
  98. e instanceof NoSuchRegionException ||
  99. e instanceof PhoneNumberException ||
  100. e instanceof WebsiteURLException) {
  101. if (e instanceof NoSuchListTypeException) {
  102. NoSuchListTypeException nslte = (NoSuchListTypeException)e;
  103. SessionErrors.add(
  104. actionRequest,
  105. e.getClass().getName() + nslte.getType());
  106. }
  107. else {
  108. SessionErrors.add(actionRequest, e.getClass(), e);
  109. }
  110. setForward(
  111. actionRequest, "portlet.portal_settings.edit_company");
  112. }
  113. else {
  114. throw e;
  115. }
  116. }
  117. }
  118. @Override
  119. public ActionForward render(
  120. ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
  121. RenderRequest renderRequest, RenderResponse renderResponse)
  122. throws Exception {
  123. return mapping.findForward(
  124. getForward(renderRequest, "portlet.portal_settings.edit_company"));
  125. }
  126. protected void updateCompany(ActionRequest actionRequest) throws Exception {
  127. long companyId = PortalUtil.getCompanyId(actionRequest);
  128. String virtualHostname = ParamUtil.getString(
  129. actionRequest, "virtualHostname");
  130. String mx = ParamUtil.getString(actionRequest, "mx");
  131. String homeURL = ParamUtil.getString(actionRequest, "homeURL");
  132. String name = ParamUtil.getString(actionRequest, "name");
  133. String legalName = ParamUtil.getString(actionRequest, "legalName");
  134. String legalId = ParamUtil.getString(actionRequest, "legalId");
  135. String legalType = ParamUtil.getString(actionRequest, "legalType");
  136. String sicCode = ParamUtil.getString(actionRequest, "sicCode");
  137. String tickerSymbol = ParamUtil.getString(
  138. actionRequest, "tickerSymbol");
  139. String industry = ParamUtil.getString(actionRequest, "industry");
  140. String type = ParamUtil.getString(actionRequest, "type");
  141. String size = ParamUtil.getString(actionRequest, "size");
  142. String languageId = ParamUtil.getString(actionRequest, "languageId");
  143. String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
  144. List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
  145. List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
  146. actionRequest);
  147. List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
  148. List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
  149. UnicodeProperties properties = PropertiesParamUtil.getProperties(
  150. actionRequest, "settings--");
  151. CompanyServiceUtil.updateCompany(
  152. companyId, virtualHostname, mx, homeURL, name, legalName, legalId,
  153. legalType, sicCode, tickerSymbol, industry, type, size, languageId,
  154. timeZoneId, addresses, emailAddresses, phones, websites,
  155. properties);
  156. PortalUtil.resetCDNHosts();
  157. }
  158. protected void updateDisplay(ActionRequest actionRequest) throws Exception {
  159. Company company = PortalUtil.getCompany(actionRequest);
  160. String languageId = ParamUtil.getString(actionRequest, "languageId");
  161. String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
  162. CompanyServiceUtil.updateDisplay(
  163. company.getCompanyId(), languageId, timeZoneId);
  164. boolean siteLogo = ParamUtil.getBoolean(
  165. actionRequest,
  166. "settings--" + PropsKeys.COMPANY_SECURITY_SITE_LOGO + "--");
  167. CompanyServiceUtil.updateSecurity(
  168. company.getCompanyId(), company.getAuthType(),
  169. company.isAutoLogin(), company.isSendPassword(),
  170. company.isStrangers(), company.isStrangersWithMx(),
  171. company.isStrangersVerify(), siteLogo);
  172. boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
  173. if (deleteLogo) {
  174. CompanyServiceUtil.deleteLogo(company.getCompanyId());
  175. }
  176. }
  177. protected void validateCAS(ActionRequest actionRequest) throws Exception {
  178. boolean casEnabled = ParamUtil.getBoolean(
  179. actionRequest, "settings--" + PropsKeys.CAS_AUTH_ENABLED + "--");
  180. if (!casEnabled) {
  181. return;
  182. }
  183. String casLoginURL = ParamUtil.getString(
  184. actionRequest, "settings--" + PropsKeys.CAS_LOGIN_URL + "--");
  185. String casLogoutURL = ParamUtil.getString(
  186. actionRequest, "settings--" + PropsKeys.CAS_LOGOUT_URL + "--");
  187. String casServerName = ParamUtil.getString(
  188. actionRequest, "settings--" + PropsKeys.CAS_SERVER_NAME + "--");
  189. String casServerURL = ParamUtil.getString(
  190. actionRequest, "settings--" + PropsKeys.CAS_SERVER_URL + "--");
  191. String casServiceURL = ParamUtil.getString(
  192. actionRequest, "settings--" + PropsKeys.CAS_SERVICE_URL + "--");
  193. String casNoSuchUserRedirectURL = ParamUtil.getString(
  194. actionRequest, "settings--" +
  195. PropsKeys.CAS_NO_SUCH_USER_REDIRECT_URL + "--");
  196. if (!Validator.isUrl(casLoginURL)) {
  197. SessionErrors.add(actionRequest, "casLoginURLInvalid");
  198. }
  199. if (!Validator.isUrl(casLogoutURL)) {
  200. SessionErrors.add(actionRequest, "casLogoutURLInvalid");
  201. }
  202. if (Validator.isNull(casServerName)) {
  203. SessionErrors.add(actionRequest, "casServerNameInvalid");
  204. }
  205. if (Validator.isNotNull(casServerURL) &&
  206. Validator.isNotNull(casServiceURL)) {
  207. SessionErrors.add(
  208. actionRequest, "casServerURLAndServiceURLConflict");
  209. }
  210. else if (Validator.isNull(casServerURL) &&
  211. Validator.isNull(casServiceURL)) {
  212. SessionErrors.add(actionRequest, "casServerURLAndServiceURLNotSet");
  213. }
  214. else {
  215. if (Validator.isNotNull(casServerURL) &&
  216. !Validator.isUrl(casServerURL)) {
  217. SessionErrors.add(actionRequest, "casServerURLInvalid");
  218. }
  219. if (Validator.isNotNull(casServiceURL) &&
  220. !Validator.isUrl(casServiceURL)) {
  221. SessionErrors.add(actionRequest, "casServiceURLInvalid");
  222. }
  223. }
  224. if (Validator.isNotNull(casNoSuchUserRedirectURL) &&
  225. !Validator.isUrl(casNoSuchUserRedirectURL)) {
  226. SessionErrors.add(actionRequest, "casNoSuchUserURLInvalid");
  227. }
  228. }
  229. protected void validateLDAP(ActionRequest actionRequest) throws Exception {
  230. if (!PropsValues.LDAP_IMPORT_USER_PASSWORD_AUTOGENERATED) {
  231. return;
  232. }
  233. boolean ldapExportEnabled = ParamUtil.getBoolean(
  234. actionRequest, "settings--" + PropsKeys.LDAP_EXPORT_ENABLED + "--");
  235. boolean ldapImportEnabled = ParamUtil.getBoolean(
  236. actionRequest, "settings--" + PropsKeys.LDAP_IMPORT_ENABLED + "--");
  237. if (ldapExportEnabled && ldapImportEnabled) {
  238. SessionErrors.add(
  239. actionRequest, "ldapExportAndImportOnPasswordAutogeneration");
  240. }
  241. }
  242. }