1
14
15 package com.liferay.portlet.enterpriseadmin.action;
16
17 import com.liferay.portal.AddressCityException;
18 import com.liferay.portal.AddressStreetException;
19 import com.liferay.portal.AddressZipException;
20 import com.liferay.portal.DuplicateOrganizationException;
21 import com.liferay.portal.EmailAddressException;
22 import com.liferay.portal.NoSuchCountryException;
23 import com.liferay.portal.NoSuchListTypeException;
24 import com.liferay.portal.NoSuchOrganizationException;
25 import com.liferay.portal.NoSuchRegionException;
26 import com.liferay.portal.OrganizationNameException;
27 import com.liferay.portal.OrganizationParentException;
28 import com.liferay.portal.PhoneNumberException;
29 import com.liferay.portal.RequiredOrganizationException;
30 import com.liferay.portal.WebsiteURLException;
31 import com.liferay.portal.kernel.servlet.SessionErrors;
32 import com.liferay.portal.kernel.util.Constants;
33 import com.liferay.portal.kernel.util.HttpUtil;
34 import com.liferay.portal.kernel.util.ParamUtil;
35 import com.liferay.portal.kernel.util.StringUtil;
36 import com.liferay.portal.model.Address;
37 import com.liferay.portal.model.EmailAddress;
38 import com.liferay.portal.model.OrgLabor;
39 import com.liferay.portal.model.Organization;
40 import com.liferay.portal.model.OrganizationConstants;
41 import com.liferay.portal.model.Phone;
42 import com.liferay.portal.model.Website;
43 import com.liferay.portal.security.auth.PrincipalException;
44 import com.liferay.portal.service.OrganizationServiceUtil;
45 import com.liferay.portal.service.ServiceContext;
46 import com.liferay.portal.service.ServiceContextFactory;
47 import com.liferay.portal.struts.PortletAction;
48 import com.liferay.portlet.communities.util.CommunitiesUtil;
49 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
50 import com.liferay.util.LocalizationUtil;
51
52 import java.util.List;
53
54 import javax.portlet.ActionRequest;
55 import javax.portlet.ActionResponse;
56 import javax.portlet.PortletConfig;
57 import javax.portlet.PortletPreferences;
58 import javax.portlet.RenderRequest;
59 import javax.portlet.RenderResponse;
60
61 import org.apache.struts.action.ActionForm;
62 import org.apache.struts.action.ActionForward;
63 import org.apache.struts.action.ActionMapping;
64
65
72 public class EditOrganizationAction extends PortletAction {
73
74 public void processAction(
75 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
76 ActionRequest actionRequest, ActionResponse actionResponse)
77 throws Exception {
78
79 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
80
81 try {
82 Organization organization = null;
83
84 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
85 organization = updateOrganization(actionRequest);
86 }
87 else if (cmd.equals(Constants.DELETE)) {
88 deleteOrganizations(actionRequest);
89 }
90
91 String redirect = ParamUtil.getString(actionRequest, "redirect");
92
93 if (organization != null) {
94 redirect = HttpUtil.setParameter(
95 redirect, actionResponse.getNamespace() + "organizationId",
96 organization.getOrganizationId());
97 }
98
99 sendRedirect(actionRequest, actionResponse, redirect);
100 }
101 catch (Exception e) {
102 if (e instanceof NoSuchOrganizationException ||
103 e instanceof PrincipalException) {
104
105 SessionErrors.add(actionRequest, e.getClass().getName());
106
107 setForward(actionRequest, "portlet.enterprise_admin.error");
108 }
109 else if (e instanceof AddressCityException ||
110 e instanceof AddressStreetException ||
111 e instanceof AddressZipException ||
112 e instanceof DuplicateOrganizationException ||
113 e instanceof EmailAddressException ||
114 e instanceof NoSuchCountryException ||
115 e instanceof NoSuchListTypeException ||
116 e instanceof NoSuchRegionException ||
117 e instanceof OrganizationNameException ||
118 e instanceof OrganizationParentException ||
119 e instanceof PhoneNumberException ||
120 e instanceof RequiredOrganizationException ||
121 e instanceof WebsiteURLException) {
122
123 if (e instanceof NoSuchListTypeException) {
124 NoSuchListTypeException nslte = (NoSuchListTypeException)e;
125
126 SessionErrors.add(
127 actionRequest,
128 e.getClass().getName() + nslte.getType());
129 }
130 else {
131 SessionErrors.add(actionRequest, e.getClass().getName());
132 }
133
134 if (e instanceof RequiredOrganizationException) {
135 actionResponse.sendRedirect(
136 ParamUtil.getString(actionRequest, "redirect"));
137 }
138 }
139 else {
140 throw e;
141 }
142 }
143 }
144
145 public ActionForward render(
146 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
147 RenderRequest renderRequest, RenderResponse renderResponse)
148 throws Exception {
149
150 try {
151 ActionUtil.getOrganization(renderRequest);
152 }
153 catch (Exception e) {
154 if (e instanceof NoSuchOrganizationException ||
155 e instanceof PrincipalException) {
156
157 SessionErrors.add(renderRequest, e.getClass().getName());
158
159 return mapping.findForward("portlet.enterprise_admin.error");
160 }
161 else {
162 throw e;
163 }
164 }
165
166 return mapping.findForward(getForward(
167 renderRequest, "portlet.enterprise_admin.edit_organization"));
168 }
169
170 protected void deleteOrganizations(ActionRequest actionRequest)
171 throws Exception {
172
173 long[] deleteOrganizationIds = StringUtil.split(
174 ParamUtil.getString(actionRequest, "deleteOrganizationIds"), 0L);
175
176 for (int i = 0; i < deleteOrganizationIds.length; i++) {
177 OrganizationServiceUtil.deleteOrganization(
178 deleteOrganizationIds[i]);
179 }
180 }
181
182 protected Organization updateOrganization(ActionRequest actionRequest)
183 throws Exception {
184
185 long organizationId = ParamUtil.getLong(
186 actionRequest, "organizationId");
187
188 long parentOrganizationId = ParamUtil.getLong(
189 actionRequest, "parentOrganizationSearchContainerPrimaryKeys",
190 OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID);
191 String name = ParamUtil.getString(actionRequest, "name");
192 boolean recursable = ParamUtil.getBoolean(actionRequest, "recursable");
193 int statusId = ParamUtil.getInteger(actionRequest, "statusId");
194 String type = ParamUtil.getString(actionRequest, "type");
195 long regionId = ParamUtil.getLong(actionRequest, "regionId");
196 long countryId = ParamUtil.getLong(actionRequest, "countryId");
197 String comments = ParamUtil.getString(actionRequest, "comments");
198 List<Address> addresses = EnterpriseAdminUtil.getAddresses(
199 actionRequest);
200 List<EmailAddress> emailAddresses =
201 EnterpriseAdminUtil.getEmailAddresses(actionRequest);
202 List<OrgLabor> orgLabors = EnterpriseAdminUtil.getOrgLabors(
203 actionRequest);
204 List<Phone> phones = EnterpriseAdminUtil.getPhones(actionRequest);
205 List<Website> websites = EnterpriseAdminUtil.getWebsites(actionRequest);
206
207 ServiceContext serviceContext = ServiceContextFactory.getInstance(
208 Organization.class.getName(), actionRequest);
209
210 Organization organization = null;
211
212 if (organizationId <= 0) {
213
214
216 organization = OrganizationServiceUtil.addOrganization(
217 parentOrganizationId, name, type, recursable, regionId,
218 countryId, statusId, comments, addresses, emailAddresses,
219 orgLabors, phones, websites, serviceContext);
220 }
221 else {
222
223
225 organization = OrganizationServiceUtil.updateOrganization(
226 organizationId, parentOrganizationId, name, type,
227 recursable, regionId, countryId, statusId, comments, addresses,
228 emailAddresses, orgLabors, phones, websites, serviceContext);
229
230 boolean deleteLogo = ParamUtil.getBoolean(
231 actionRequest, "deleteLogo");
232
233 if (deleteLogo) {
234 OrganizationServiceUtil.deleteLogo(
235 organization.getOrganizationId());
236 }
237 }
238
239
241 long publicLayoutSetPrototypeId = ParamUtil.getLong(
242 actionRequest, "publicLayoutSetPrototypeId");
243 long privateLayoutSetPrototypeId = ParamUtil.getLong(
244 actionRequest, "privateLayoutSetPrototypeId");
245
246 CommunitiesUtil.applyLayoutSetPrototypes(
247 organization.getGroup(), publicLayoutSetPrototypeId,
248 privateLayoutSetPrototypeId);
249
250
252 String reminderQueries = actionRequest.getParameter("reminderQueries");
253
254 PortletPreferences preferences = organization.getPreferences();
255
256 preferences.setValue("reminderQueries", reminderQueries);
257
258 LocalizationUtil.setLocalizedPreferencesValues(
259 actionRequest, preferences, "reminderQueries");
260
261 preferences.store();
262
263 return organization;
264 }
265
266 }