/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.settings.web.internal.portlet.action;
import com.liferay.document.library.kernel.service.DLAppLocalService;
import com.liferay.portal.kernel.exception.AccountNameException;
import com.liferay.portal.kernel.exception.AddressCityException;
import com.liferay.portal.kernel.exception.AddressStreetException;
import com.liferay.portal.kernel.exception.AddressZipException;
import com.liferay.portal.kernel.exception.CompanyMxException;
import com.liferay.portal.kernel.exception.CompanyVirtualHostException;
import com.liferay.portal.kernel.exception.CompanyWebIdException;
import com.liferay.portal.kernel.exception.EmailAddressException;
import com.liferay.portal.kernel.exception.LocaleException;
import com.liferay.portal.kernel.exception.NoSuchCountryException;
import com.liferay.portal.kernel.exception.NoSuchListTypeException;
import com.liferay.portal.kernel.exception.NoSuchRegionException;
import com.liferay.portal.kernel.exception.PhoneNumberException;
import com.liferay.portal.kernel.exception.PhoneNumberExtensionException;
import com.liferay.portal.kernel.exception.WebsiteURLException;
import com.liferay.portal.kernel.model.Address;
import com.liferay.portal.kernel.model.EmailAddress;
import com.liferay.portal.kernel.model.Phone;
import com.liferay.portal.kernel.model.Website;
import com.liferay.portal.kernel.portlet.bridges.mvc.BaseFormMVCActionCommand;
import com.liferay.portal.kernel.portlet.bridges.mvc.MVCActionCommand;
import com.liferay.portal.kernel.repository.model.FileEntry;
import com.liferay.portal.kernel.security.auth.PrincipalException;
import com.liferay.portal.kernel.service.CompanyService;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.util.Constants;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.Portal;
import com.liferay.portal.kernel.util.PropertiesParamUtil;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.settings.web.constants.PortalSettingsPortletKeys;
import com.liferay.users.admin.kernel.util.UsersAdminUtil;
import java.util.List;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Brian Wing Shun Chan
* @author Julio Camarero
* @author Philip Jones
*/
@Component(
property = {
"javax.portlet.name=" + PortalSettingsPortletKeys.PORTAL_SETTINGS,
"mvc.command.name=/portal_settings/edit_company"
},
service = MVCActionCommand.class
)
public class EditCompanyMVCActionCommand extends BaseFormMVCActionCommand {
@Override
public void doProcessAction(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception {
String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
try {
if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
String redirect = ParamUtil.getString(
actionRequest, "redirect");
updateCompany(actionRequest);
sendRedirect(actionRequest, actionResponse, redirect);
}
}
catch (Exception e) {
String mvcPath = "/edit_company.jsp";
if (e instanceof PrincipalException) {
SessionErrors.add(actionRequest, e.getClass());
mvcPath = "/error.jsp";
}
else if (e instanceof AccountNameException ||
e instanceof AddressCityException ||
e instanceof AddressStreetException ||
e instanceof AddressZipException ||
e instanceof CompanyMxException ||
e instanceof CompanyVirtualHostException ||
e instanceof CompanyWebIdException ||
e instanceof EmailAddressException ||
e instanceof LocaleException ||
e instanceof NoSuchCountryException ||
e instanceof NoSuchListTypeException ||
e instanceof NoSuchRegionException ||
e instanceof PhoneNumberException ||
e instanceof PhoneNumberExtensionException ||
e instanceof WebsiteURLException) {
if (e instanceof NoSuchListTypeException) {
NoSuchListTypeException nslte = (NoSuchListTypeException)e;
Class<?> clazz = e.getClass();
SessionErrors.add(
actionRequest, clazz.getName() + nslte.getType());
}
else {
SessionErrors.add(actionRequest, e.getClass(), e);
}
}
else {
throw e;
}
actionResponse.setRenderParameter("mvcPath", mvcPath);
}
}
@Override
protected void doValidateForm(
ActionRequest actionRequest, ActionResponse actionResponse)
throws Exception {
}
@Reference(unbind = "-")
protected void setCompanyService(CompanyService companyService) {
_companyService = companyService;
}
@Reference(unbind = "-")
protected void setDLAppLocalService(DLAppLocalService dlAppLocalService) {
_dlAppLocalService = dlAppLocalService;
}
protected void updateCompany(ActionRequest actionRequest) throws Exception {
long companyId = _portal.getCompanyId(actionRequest);
String virtualHostname = ParamUtil.getString(
actionRequest, "virtualHostname");
String mx = ParamUtil.getString(actionRequest, "mx");
String homeURL = ParamUtil.getString(actionRequest, "homeURL");
boolean deleteLogo = ParamUtil.getBoolean(actionRequest, "deleteLogo");
byte[] logoBytes = null;
long fileEntryId = ParamUtil.getLong(actionRequest, "fileEntryId");
if (fileEntryId > 0) {
FileEntry fileEntry = _dlAppLocalService.getFileEntry(fileEntryId);
logoBytes = FileUtil.getBytes(fileEntry.getContentStream());
}
String name = ParamUtil.getString(actionRequest, "name");
String legalName = ParamUtil.getString(actionRequest, "legalName");
String legalId = ParamUtil.getString(actionRequest, "legalId");
String legalType = ParamUtil.getString(actionRequest, "legalType");
String sicCode = ParamUtil.getString(actionRequest, "sicCode");
String tickerSymbol = ParamUtil.getString(
actionRequest, "tickerSymbol");
String industry = ParamUtil.getString(actionRequest, "industry");
String type = ParamUtil.getString(actionRequest, "type");
String size = ParamUtil.getString(actionRequest, "size");
String languageId = ParamUtil.getString(actionRequest, "languageId");
String timeZoneId = ParamUtil.getString(actionRequest, "timeZoneId");
List<Address> addresses = UsersAdminUtil.getAddresses(actionRequest);
List<EmailAddress> emailAddresses = UsersAdminUtil.getEmailAddresses(
actionRequest);
List<Phone> phones = UsersAdminUtil.getPhones(actionRequest);
List<Website> websites = UsersAdminUtil.getWebsites(actionRequest);
UnicodeProperties properties = PropertiesParamUtil.getProperties(
actionRequest, "settings--");
_companyService.updateCompany(
companyId, virtualHostname, mx, homeURL, !deleteLogo, logoBytes,
name, legalName, legalId, legalType, sicCode, tickerSymbol,
industry, type, size, languageId, timeZoneId, addresses,
emailAddresses, phones, websites, properties);
_portal.resetCDNHosts();
}
private CompanyService _companyService;
private DLAppLocalService _dlAppLocalService;
@Reference
private Portal _portal;
}