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