001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.asset.kernel.model.AssetCategory;
018 import com.liferay.asset.kernel.model.AssetTag;
019 import com.liferay.expando.kernel.model.ExpandoBridge;
020 import com.liferay.portal.kernel.exception.PortalException;
021 import com.liferay.portal.kernel.model.Address;
022 import com.liferay.portal.kernel.model.EmailAddress;
023 import com.liferay.portal.kernel.model.OrgLabor;
024 import com.liferay.portal.kernel.model.Organization;
025 import com.liferay.portal.kernel.model.OrganizationConstants;
026 import com.liferay.portal.kernel.model.Phone;
027 import com.liferay.portal.kernel.model.User;
028 import com.liferay.portal.kernel.model.Website;
029 import com.liferay.portal.kernel.search.Indexer;
030 import com.liferay.portal.kernel.search.IndexerRegistryUtil;
031 import com.liferay.portal.kernel.security.membershippolicy.OrganizationMembershipPolicyUtil;
032 import com.liferay.portal.kernel.security.permission.ActionKeys;
033 import com.liferay.portal.kernel.service.ServiceContext;
034 import com.liferay.portal.kernel.service.permission.GroupPermissionUtil;
035 import com.liferay.portal.kernel.service.permission.OrganizationPermissionUtil;
036 import com.liferay.portal.kernel.service.permission.PasswordPolicyPermissionUtil;
037 import com.liferay.portal.kernel.service.permission.PortalPermissionUtil;
038 import com.liferay.portal.kernel.service.permission.UserPermissionUtil;
039 import com.liferay.portal.service.base.OrganizationServiceBaseImpl;
040 import com.liferay.users.admin.kernel.util.UsersAdminUtil;
041
042 import java.io.Serializable;
043
044 import java.util.List;
045 import java.util.Map;
046
047
055 public class OrganizationServiceImpl extends OrganizationServiceBaseImpl {
056
057
063 @Override
064 public void addGroupOrganizations(long groupId, long[] organizationIds)
065 throws PortalException {
066
067 GroupPermissionUtil.check(
068 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
069
070 organizationLocalService.addGroupOrganizations(
071 groupId, organizationIds);
072 }
073
074
102 @Override
103 public Organization addOrganization(
104 long parentOrganizationId, String name, String type, long regionId,
105 long countryId, long statusId, String comments, boolean site,
106 List<Address> addresses, List<EmailAddress> emailAddresses,
107 List<OrgLabor> orgLabors, List<Phone> phones,
108 List<Website> websites, ServiceContext serviceContext)
109 throws PortalException {
110
111 boolean indexingEnabled = true;
112
113 if (serviceContext != null) {
114 indexingEnabled = serviceContext.isIndexingEnabled();
115
116 serviceContext.setIndexingEnabled(false);
117 }
118
119 try {
120 Organization organization = addOrganization(
121 parentOrganizationId, name, type, regionId, countryId, statusId,
122 comments, site, serviceContext);
123
124 UsersAdminUtil.updateAddresses(
125 Organization.class.getName(), organization.getOrganizationId(),
126 addresses);
127
128 UsersAdminUtil.updateEmailAddresses(
129 Organization.class.getName(), organization.getOrganizationId(),
130 emailAddresses);
131
132 UsersAdminUtil.updateOrgLabors(
133 organization.getOrganizationId(), orgLabors);
134
135 UsersAdminUtil.updatePhones(
136 Organization.class.getName(), organization.getOrganizationId(),
137 phones);
138
139 UsersAdminUtil.updateWebsites(
140 Organization.class.getName(), organization.getOrganizationId(),
141 websites);
142
143 if (indexingEnabled) {
144 Indexer<Organization> indexer =
145 IndexerRegistryUtil.nullSafeGetIndexer(Organization.class);
146
147 indexer.reindex(organization);
148 }
149
150 return organization;
151 }
152 finally {
153 if (serviceContext != null) {
154 serviceContext.setIndexingEnabled(indexingEnabled);
155 }
156 }
157 }
158
159
182 @Override
183 public Organization addOrganization(
184 long parentOrganizationId, String name, String type, long regionId,
185 long countryId, long statusId, String comments, boolean site,
186 ServiceContext serviceContext)
187 throws PortalException {
188
189 if (parentOrganizationId ==
190 OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID) {
191
192 PortalPermissionUtil.check(
193 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION);
194 }
195 else {
196 OrganizationPermissionUtil.check(
197 getPermissionChecker(), parentOrganizationId,
198 ActionKeys.ADD_ORGANIZATION);
199 }
200
201 Organization organization = organizationLocalService.addOrganization(
202 getUserId(), parentOrganizationId, name, type, regionId, countryId,
203 statusId, comments, site, serviceContext);
204
205 OrganizationMembershipPolicyUtil.verifyPolicy(organization);
206
207 return organization;
208 }
209
210
217 @Override
218 public void addPasswordPolicyOrganizations(
219 long passwordPolicyId, long[] organizationIds)
220 throws PortalException {
221
222 PasswordPolicyPermissionUtil.check(
223 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
224
225 organizationLocalService.addPasswordPolicyOrganizations(
226 passwordPolicyId, organizationIds);
227 }
228
229
234 @Override
235 public void deleteLogo(long organizationId) throws PortalException {
236 OrganizationPermissionUtil.check(
237 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
238
239 organizationLocalService.deleteLogo(organizationId);
240 }
241
242
248 @Override
249 public void deleteOrganization(long organizationId) throws PortalException {
250 OrganizationPermissionUtil.check(
251 getPermissionChecker(), organizationId, ActionKeys.DELETE);
252
253 organizationLocalService.deleteOrganization(organizationId);
254 }
255
256
264 @Override
265 public Organization fetchOrganization(long organizationId)
266 throws PortalException {
267
268 Organization organization = organizationLocalService.fetchOrganization(
269 organizationId);
270
271 if (organization != null) {
272 OrganizationPermissionUtil.check(
273 getPermissionChecker(), organization, ActionKeys.VIEW);
274 }
275
276 return organization;
277 }
278
279
285 @Override
286 public Organization getOrganization(long organizationId)
287 throws PortalException {
288
289 Organization organization = organizationLocalService.getOrganization(
290 organizationId);
291
292 OrganizationPermissionUtil.check(
293 getPermissionChecker(), organization, ActionKeys.VIEW);
294
295 return organization;
296 }
297
298
306 @Override
307 public long getOrganizationId(long companyId, String name)
308 throws PortalException {
309
310 long organizationId = organizationLocalService.getOrganizationId(
311 companyId, name);
312
313 OrganizationPermissionUtil.check(
314 getPermissionChecker(), organizationId, ActionKeys.VIEW);
315
316 return organizationId;
317 }
318
319
327 @Override
328 public List<Organization> getOrganizations(
329 long companyId, long parentOrganizationId) {
330
331 if (parentOrganizationId ==
332 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID) {
333
334 return organizationPersistence.filterFindByCompanyId(companyId);
335 }
336
337 return organizationPersistence.filterFindByC_P(
338 companyId, parentOrganizationId);
339 }
340
341
363 @Override
364 public List<Organization> getOrganizations(
365 long companyId, long parentOrganizationId, int start, int end) {
366
367 if (parentOrganizationId ==
368 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID) {
369
370 return organizationPersistence.filterFindByCompanyId(
371 companyId, start, end);
372 }
373
374 return organizationPersistence.filterFindByC_P(
375 companyId, parentOrganizationId, start, end);
376 }
377
378
386 @Override
387 public int getOrganizationsCount(
388 long companyId, long parentOrganizationId) {
389
390 if (parentOrganizationId ==
391 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID) {
392
393 return organizationPersistence.filterCountByCompanyId(companyId);
394 }
395
396 return organizationPersistence.filterCountByC_P(
397 companyId, parentOrganizationId);
398 }
399
400
413 @Override
414 public List<Organization> getUserOrganizations(long userId)
415 throws PortalException {
416
417 UserPermissionUtil.check(
418 getPermissionChecker(), userId, ActionKeys.VIEW);
419
420 return organizationLocalService.getUserOrganizations(userId);
421 }
422
423
430 @Override
431 public void setGroupOrganizations(long groupId, long[] organizationIds)
432 throws PortalException {
433
434 GroupPermissionUtil.check(
435 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
436
437 organizationLocalService.setGroupOrganizations(
438 groupId, organizationIds);
439 }
440
441
447 @Override
448 public void unsetGroupOrganizations(long groupId, long[] organizationIds)
449 throws PortalException {
450
451 GroupPermissionUtil.check(
452 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
453
454 organizationLocalService.unsetGroupOrganizations(
455 groupId, organizationIds);
456 }
457
458
464 @Override
465 public void unsetPasswordPolicyOrganizations(
466 long passwordPolicyId, long[] organizationIds)
467 throws PortalException {
468
469 PasswordPolicyPermissionUtil.check(
470 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
471
472 organizationLocalService.unsetPasswordPolicyOrganizations(
473 passwordPolicyId, organizationIds);
474 }
475
476
503 @Override
504 public Organization updateOrganization(
505 long organizationId, long parentOrganizationId, String name,
506 String type, long regionId, long countryId, long statusId,
507 String comments, boolean logo, byte[] logoBytes, boolean site,
508 List<Address> addresses, List<EmailAddress> emailAddresses,
509 List<OrgLabor> orgLabors, List<Phone> phones,
510 List<Website> websites, ServiceContext serviceContext)
511 throws PortalException {
512
513 Organization organization = organizationPersistence.findByPrimaryKey(
514 organizationId);
515
516 OrganizationPermissionUtil.check(
517 getPermissionChecker(), organization, ActionKeys.UPDATE);
518
519 if (organization.getParentOrganizationId() != parentOrganizationId) {
520 if (parentOrganizationId ==
521 OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID) {
522
523 PortalPermissionUtil.check(
524 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION);
525 }
526 else {
527 OrganizationPermissionUtil.check(
528 getPermissionChecker(), parentOrganizationId,
529 ActionKeys.ADD_ORGANIZATION);
530 }
531 }
532
533 if (addresses != null) {
534 UsersAdminUtil.updateAddresses(
535 Organization.class.getName(), organizationId, addresses);
536 }
537
538 if (emailAddresses != null) {
539 UsersAdminUtil.updateEmailAddresses(
540 Organization.class.getName(), organizationId, emailAddresses);
541 }
542
543 if (orgLabors != null) {
544 UsersAdminUtil.updateOrgLabors(organizationId, orgLabors);
545 }
546
547 if (phones != null) {
548 UsersAdminUtil.updatePhones(
549 Organization.class.getName(), organizationId, phones);
550 }
551
552 if (websites != null) {
553 UsersAdminUtil.updateWebsites(
554 Organization.class.getName(), organizationId, websites);
555 }
556
557 User user = getUser();
558
559 Organization oldOrganization = organization;
560
561 List<AssetCategory> oldAssetCategories =
562 assetCategoryLocalService.getCategories(
563 Organization.class.getName(), organizationId);
564
565 List<AssetTag> oldAssetTags = assetTagLocalService.getTags(
566 Organization.class.getName(), organizationId);
567
568 ExpandoBridge oldExpandoBridge = oldOrganization.getExpandoBridge();
569
570 Map<String, Serializable> oldExpandoAttributes =
571 oldExpandoBridge.getAttributes();
572
573 organization = organizationLocalService.updateOrganization(
574 user.getCompanyId(), organizationId, parentOrganizationId, name,
575 type, regionId, countryId, statusId, comments, logo, logoBytes,
576 site, serviceContext);
577
578 OrganizationMembershipPolicyUtil.verifyPolicy(
579 organization, oldOrganization, oldAssetCategories, oldAssetTags,
580 oldExpandoAttributes);
581
582 return organization;
583 }
584
585
614 @Deprecated
615 @Override
616 public Organization updateOrganization(
617 long organizationId, long parentOrganizationId, String name,
618 String type, long regionId, long countryId, long statusId,
619 String comments, boolean site, List<Address> addresses,
620 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
621 List<Phone> phones, List<Website> websites,
622 ServiceContext serviceContext)
623 throws PortalException {
624
625 return updateOrganization(
626 organizationId, parentOrganizationId, name, type, regionId,
627 countryId, statusId, comments, true, null, site, addresses,
628 emailAddresses, orgLabors, phones, websites, serviceContext);
629 }
630
631
651 @Override
652 public Organization updateOrganization(
653 long organizationId, long parentOrganizationId, String name,
654 String type, long regionId, long countryId, long statusId,
655 String comments, boolean site, ServiceContext serviceContext)
656 throws PortalException {
657
658 return updateOrganization(
659 organizationId, parentOrganizationId, name, type, regionId,
660 countryId, statusId, comments, true, null, site, null, null, null,
661 null, null, serviceContext);
662 }
663
664 }