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