1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portlet.enterpriseadmin.action;
16  
17  import com.liferay.portal.AccountNameException;
18  import com.liferay.portal.AddressCityException;
19  import com.liferay.portal.AddressStreetException;
20  import com.liferay.portal.AddressZipException;
21  import com.liferay.portal.CompanyMxException;
22  import com.liferay.portal.CompanyVirtualHostException;
23  import com.liferay.portal.CompanyWebIdException;
24  import com.liferay.portal.EmailAddressException;
25  import com.liferay.portal.NoSuchCountryException;
26  import com.liferay.portal.NoSuchListTypeException;
27  import com.liferay.portal.NoSuchRegionException;
28  import com.liferay.portal.PhoneNumberException;
29  import com.liferay.portal.WebsiteURLException;
30  import com.liferay.portal.kernel.servlet.SessionErrors;
31  import com.liferay.portal.kernel.util.Constants;
32  import com.liferay.portal.kernel.util.ParamUtil;
33  import com.liferay.portal.kernel.util.PropertiesParamUtil;
34  import com.liferay.portal.kernel.util.PropsKeys;
35  import com.liferay.portal.kernel.util.UnicodeProperties;
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.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
46  
47  import java.util.List;
48  
49  import javax.portlet.ActionRequest;
50  import javax.portlet.ActionResponse;
51  import javax.portlet.PortletConfig;
52  
53  import org.apache.struts.action.ActionForm;
54  import org.apache.struts.action.ActionMapping;
55  
56  /**
57   * <a href="EditCompanyAction.java.html"><b><i>View Source</i></b></a>
58   *
59   * @author Brian Wing Shun Chan
60   * @author Julio Camarero
61   */
62  public class EditCompanyAction extends PortletAction {
63  
64      public void processAction(
65              ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
66              ActionRequest actionRequest, ActionResponse actionResponse)
67          throws Exception {
68  
69          String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
70  
71          try {
72              if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
73                  updateCompany(actionRequest);
74                  updateDisplay(actionRequest);
75              }
76  
77              sendRedirect(actionRequest, actionResponse);
78          }
79          catch (Exception e) {
80              if (e instanceof PrincipalException) {
81                  SessionErrors.add(actionRequest, e.getClass().getName());
82  
83                  setForward(actionRequest, "portlet.enterprise_admin.error");
84              }
85              else if (e instanceof AddressCityException ||
86                       e instanceof AccountNameException ||
87                       e instanceof AddressStreetException ||
88                       e instanceof AddressZipException ||
89                       e instanceof CompanyMxException ||
90                       e instanceof CompanyVirtualHostException ||
91                       e instanceof CompanyWebIdException ||
92                       e instanceof EmailAddressException ||
93                       e instanceof NoSuchCountryException ||
94                       e instanceof NoSuchListTypeException ||
95                       e instanceof NoSuchRegionException ||
96                       e instanceof PhoneNumberException ||
97                       e instanceof WebsiteURLException) {
98  
99                  if (e instanceof NoSuchListTypeException) {
100                     NoSuchListTypeException nslte = (NoSuchListTypeException)e;
101 
102                     SessionErrors.add(
103                         actionRequest,
104                         e.getClass().getName() + nslte.getType());
105                 }
106                 else {
107                     SessionErrors.add(actionRequest, e.getClass().getName(), e);
108                 }
109 
110                 setForward(actionRequest, "portlet.enterprise_admin.view");
111             }
112             else {
113                 throw e;
114             }
115         }
116     }
117 
118     protected void updateCompany(ActionRequest actionRequest) throws Exception {
119         long companyId = PortalUtil.getCompanyId(actionRequest);
120 
121         String virtualHost = ParamUtil.getString(actionRequest, "virtualHost");
122         String mx = ParamUtil.getString(actionRequest, "mx");
123         String homeURL = ParamUtil.getString(actionRequest, "homeURL");
124         String name = ParamUtil.getString(actionRequest, "name");
125         String legalName = ParamUtil.getString(actionRequest, "legalName");
126         String legalId = ParamUtil.getString(actionRequest, "legalId");
127         String legalType = ParamUtil.getString(actionRequest, "legalType");
128         String sicCode = ParamUtil.getString(actionRequest, "sicCode");
129         String tickerSymbol = ParamUtil.getString(
130             actionRequest, "tickerSymbol");
131         String industry = ParamUtil.getString(actionRequest, "industry");
132         String type = ParamUtil.getString(actionRequest, "type");
133         String size = ParamUtil.getString(actionRequest, "size");
134         String languageId = ParamUtil.getString(actionRequest, "languageId");
135         String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
136         List<Address> addresses = EnterpriseAdminUtil.getAddresses(
137             actionRequest);
138         List<EmailAddress> emailAddresses =
139             EnterpriseAdminUtil.getEmailAddresses(actionRequest);
140         List<Phone> phones = EnterpriseAdminUtil.getPhones(actionRequest);
141         List<Website> websites = EnterpriseAdminUtil.getWebsites(actionRequest);
142         UnicodeProperties properties = PropertiesParamUtil.getProperties(
143             actionRequest, "settings(");
144 
145         CompanyServiceUtil.updateCompany(
146             companyId, virtualHost, mx, homeURL, name, legalName, legalId,
147             legalType, sicCode, tickerSymbol, industry, type, size, languageId,
148             timeZoneId, addresses, emailAddresses, phones, websites,
149             properties);
150     }
151 
152     protected void updateDisplay(ActionRequest actionRequest) throws Exception {
153         Company company = PortalUtil.getCompany(actionRequest);
154 
155         String languageId = ParamUtil.getString(actionRequest, "languageId");
156         String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
157 
158         CompanyServiceUtil.updateDisplay(
159             company.getCompanyId(), languageId, timeZoneId);
160 
161         boolean communityLogo = ParamUtil.getBoolean(
162             actionRequest,
163             "settings(" + PropsKeys.COMPANY_SECURITY_COMMUNITY_LOGO + ")");
164 
165         CompanyServiceUtil.updateSecurity(
166             company.getCompanyId(), company.getAuthType(),
167             company.isAutoLogin(), company.isSendPassword(),
168             company.isStrangers(), company.isStrangersWithMx(),
169             company.isStrangersVerify(), communityLogo);
170 
171         boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
172 
173         if (deleteLogo) {
174             CompanyServiceUtil.deleteLogo(company.getCompanyId());
175         }
176     }
177 
178 }