1
14
15 package com.liferay.portal.service.impl;
16
17 import com.liferay.portal.PortalException;
18 import com.liferay.portal.SystemException;
19 import com.liferay.portal.kernel.util.ListUtil;
20 import com.liferay.portal.model.Address;
21 import com.liferay.portal.model.EmailAddress;
22 import com.liferay.portal.model.OrgLabor;
23 import com.liferay.portal.model.Organization;
24 import com.liferay.portal.model.OrganizationConstants;
25 import com.liferay.portal.model.Phone;
26 import com.liferay.portal.model.Website;
27 import com.liferay.portal.security.auth.PrincipalException;
28 import com.liferay.portal.security.permission.ActionKeys;
29 import com.liferay.portal.security.permission.PermissionChecker;
30 import com.liferay.portal.service.ServiceContext;
31 import com.liferay.portal.service.base.OrganizationServiceBaseImpl;
32 import com.liferay.portal.service.permission.GroupPermissionUtil;
33 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
34 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
35 import com.liferay.portal.service.permission.PortalPermissionUtil;
36 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
37
38 import java.util.Iterator;
39 import java.util.LinkedHashMap;
40 import java.util.List;
41
42
49 public class OrganizationServiceImpl extends OrganizationServiceBaseImpl {
50
51 public void addGroupOrganizations(long groupId, long[] organizationIds)
52 throws PortalException, SystemException {
53
54 GroupPermissionUtil.check(
55 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
56
57 organizationLocalService.addGroupOrganizations(
58 groupId, organizationIds);
59 }
60
61 public void addPasswordPolicyOrganizations(
62 long passwordPolicyId, long[] organizationIds)
63 throws PortalException, SystemException {
64
65 PasswordPolicyPermissionUtil.check(
66 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
67
68 organizationLocalService.addPasswordPolicyOrganizations(
69 passwordPolicyId, organizationIds);
70 }
71
72 public Organization addOrganization(
73 long parentOrganizationId, String name, String type,
74 boolean recursable, long regionId, long countryId, int statusId,
75 String comments, ServiceContext serviceContext)
76 throws PortalException, SystemException {
77
78 if (!OrganizationPermissionUtil.contains(
79 getPermissionChecker(), parentOrganizationId,
80 ActionKeys.MANAGE_SUBORGANIZATIONS) &&
81 !PortalPermissionUtil.contains(
82 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION)) {
83
84 throw new PrincipalException(
85 "User " + getUserId() + " does not have permissions to add " +
86 "an organization with parent " + parentOrganizationId);
87 }
88
89 return organizationLocalService.addOrganization(
90 getUserId(), parentOrganizationId, name, type, recursable,
91 regionId, countryId, statusId, comments, serviceContext);
92 }
93
94 public Organization addOrganization(
95 long parentOrganizationId, String name, String type,
96 boolean recursable, long regionId, long countryId, int statusId,
97 String comments, List<Address> addresses,
98 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
99 List<Phone> phones, List<Website> websites,
100 ServiceContext serviceContext)
101 throws PortalException, SystemException {
102
103 Organization organization = addOrganization(
104 parentOrganizationId, name, type, recursable, regionId, countryId,
105 statusId, comments, serviceContext);
106
107 EnterpriseAdminUtil.updateAddresses(
108 Organization.class.getName(), organization.getOrganizationId(),
109 addresses);
110
111 EnterpriseAdminUtil.updateEmailAddresses(
112 Organization.class.getName(), organization.getOrganizationId(),
113 emailAddresses);
114
115 EnterpriseAdminUtil.updateOrgLabors(organization.getOrganizationId(),
116 orgLabors);
117
118 EnterpriseAdminUtil.updatePhones(
119 Organization.class.getName(), organization.getOrganizationId(),
120 phones);
121
122 EnterpriseAdminUtil.updateWebsites(
123 Organization.class.getName(), organization.getOrganizationId(),
124 websites);
125
126 return organization;
127 }
128
129 public void deleteLogo(long organizationId)
130 throws PortalException, SystemException {
131
132 OrganizationPermissionUtil.check(
133 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
134
135 organizationLocalService.deleteLogo(organizationId);
136 }
137
138 public void deleteOrganization(long organizationId)
139 throws PortalException, SystemException {
140
141 OrganizationPermissionUtil.check(
142 getPermissionChecker(), organizationId, ActionKeys.DELETE);
143
144 organizationLocalService.deleteOrganization(organizationId);
145 }
146
147 public List<Organization> getManageableOrganizations(
148 String actionId, int max)
149 throws PortalException, SystemException {
150
151 PermissionChecker permissionChecker = getPermissionChecker();
152
153 if (permissionChecker.isCompanyAdmin()) {
154 return organizationLocalService.search(
155 permissionChecker.getCompanyId(),
156 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID, null, null,
157 null, null, null, 0, max);
158 }
159
160 LinkedHashMap<String, Object> params =
161 new LinkedHashMap<String, Object>();
162
163 List<Organization> userOrganizations =
164 organizationLocalService.getUserOrganizations(
165 permissionChecker.getUserId());
166
167 Long[][] leftAndRightOrganizationIds =
168 EnterpriseAdminUtil.getLeftAndRightOrganizationIds(
169 userOrganizations);
170
171 params.put("organizationsTree", leftAndRightOrganizationIds);
172
173 List<Organization> manageableOrganizations =
174 organizationLocalService.search(
175 permissionChecker.getCompanyId(),
176 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID, null, null,
177 null, null, params, 0, max);
178
179 manageableOrganizations = ListUtil.copy(manageableOrganizations);
180
181 Iterator<Organization> itr = manageableOrganizations.iterator();
182
183 while (itr.hasNext()) {
184 Organization organization = itr.next();
185
186 if (!OrganizationPermissionUtil.contains(
187 permissionChecker, organization, actionId)) {
188
189 itr.remove();
190 }
191 }
192
193 return manageableOrganizations;
194 }
195
196 public Organization getOrganization(long organizationId)
197 throws PortalException, SystemException {
198
199 OrganizationPermissionUtil.check(
200 getPermissionChecker(), organizationId, ActionKeys.VIEW);
201
202 return organizationLocalService.getOrganization(organizationId);
203 }
204
205 public long getOrganizationId(long companyId, String name)
206 throws SystemException {
207
208 return organizationLocalService.getOrganizationId(companyId, name);
209 }
210
211 public List<Organization> getUserOrganizations(long userId)
212 throws PortalException, SystemException {
213
214 return organizationLocalService.getUserOrganizations(userId);
215 }
216
217 public List<Organization> getUserOrganizations(
218 long userId, boolean inheritUserGroups)
219 throws PortalException, SystemException {
220
221 return organizationLocalService.getUserOrganizations(
222 userId, inheritUserGroups);
223 }
224
225 public void setGroupOrganizations(long groupId, long[] organizationIds)
226 throws PortalException, SystemException {
227
228 GroupPermissionUtil.check(
229 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
230
231 organizationLocalService.setGroupOrganizations(
232 groupId, organizationIds);
233 }
234
235 public void unsetGroupOrganizations(long groupId, long[] organizationIds)
236 throws PortalException, SystemException {
237
238 GroupPermissionUtil.check(
239 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
240
241 organizationLocalService.unsetGroupOrganizations(
242 groupId, organizationIds);
243 }
244
245 public void unsetPasswordPolicyOrganizations(
246 long passwordPolicyId, long[] organizationIds)
247 throws PortalException, SystemException {
248
249 PasswordPolicyPermissionUtil.check(
250 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
251
252 organizationLocalService.unsetPasswordPolicyOrganizations(
253 passwordPolicyId, organizationIds);
254 }
255
256 public Organization updateOrganization(
257 long organizationId, long parentOrganizationId, String name,
258 String type, boolean recursable, long regionId, long countryId,
259 int statusId, String comments, ServiceContext serviceContext)
260 throws PortalException, SystemException {
261
262 OrganizationPermissionUtil.check(
263 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
264
265 return organizationLocalService.updateOrganization(
266 getUser().getCompanyId(), organizationId, parentOrganizationId,
267 name, type, recursable, regionId, countryId, statusId, comments,
268 serviceContext);
269 }
270
271 public Organization updateOrganization(
272 long organizationId, long parentOrganizationId, String name,
273 String type, boolean recursable, long regionId, long countryId,
274 int statusId, String comments, List<Address> addresses,
275 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
276 List<Phone> phones, List<Website> websites,
277 ServiceContext serviceContext)
278 throws PortalException, SystemException {
279
280 Organization organization = updateOrganization(
281 organizationId, parentOrganizationId, name, type, recursable,
282 regionId, countryId, statusId, comments, serviceContext);
283
284 EnterpriseAdminUtil.updateAddresses(
285 Organization.class.getName(), organizationId, addresses);
286
287 EnterpriseAdminUtil.updateEmailAddresses(
288 Organization.class.getName(), organizationId, emailAddresses);
289
290 EnterpriseAdminUtil.updateOrgLabors(organizationId, orgLabors);
291
292 EnterpriseAdminUtil.updatePhones(
293 Organization.class.getName(), organizationId, phones);
294
295 EnterpriseAdminUtil.updateWebsites(
296 Organization.class.getName(), organizationId, websites);
297
298 return organization;
299 }
300
301 }