1
22
23 package com.liferay.portal.service.impl;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.model.Address;
29 import com.liferay.portal.model.EmailAddress;
30 import com.liferay.portal.model.OrgLabor;
31 import com.liferay.portal.model.Organization;
32 import com.liferay.portal.model.Phone;
33 import com.liferay.portal.model.Website;
34 import com.liferay.portal.security.auth.PrincipalException;
35 import com.liferay.portal.security.permission.ActionKeys;
36 import com.liferay.portal.security.permission.PermissionChecker;
37 import com.liferay.portal.service.ServiceContext;
38 import com.liferay.portal.service.base.OrganizationServiceBaseImpl;
39 import com.liferay.portal.service.permission.GroupPermissionUtil;
40 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
41 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
42 import com.liferay.portal.service.permission.PortalPermissionUtil;
43 import com.liferay.portal.util.PropsValues;
44 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
45 import com.liferay.util.UniqueList;
46
47 import java.util.List;
48
49
57 public class OrganizationServiceImpl extends OrganizationServiceBaseImpl {
58
59 public void addGroupOrganizations(long groupId, long[] organizationIds)
60 throws PortalException, SystemException {
61
62 GroupPermissionUtil.check(
63 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
64
65 organizationLocalService.addGroupOrganizations(
66 groupId, organizationIds);
67 }
68
69 public void addPasswordPolicyOrganizations(
70 long passwordPolicyId, long[] organizationIds)
71 throws PortalException, SystemException {
72
73 PasswordPolicyPermissionUtil.check(
74 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
75
76 organizationLocalService.addPasswordPolicyOrganizations(
77 passwordPolicyId, organizationIds);
78 }
79
80 public Organization addOrganization(
81 long parentOrganizationId, String name, String type,
82 boolean recursable, long regionId, long countryId, int statusId,
83 String comments, ServiceContext serviceContext)
84 throws PortalException, SystemException {
85
86 if (!OrganizationPermissionUtil.contains(
87 getPermissionChecker(), parentOrganizationId,
88 ActionKeys.MANAGE_SUBORGANIZATIONS) &&
89 !PortalPermissionUtil.contains(
90 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION)) {
91
92 throw new PrincipalException(
93 "User " + getUserId() + " does not have permissions to add " +
94 "an organization with parent " + parentOrganizationId);
95 }
96
97 return organizationLocalService.addOrganization(
98 getUserId(), parentOrganizationId, name, type, recursable,
99 regionId, countryId, statusId, comments, serviceContext);
100 }
101
102 public Organization addOrganization(
103 long parentOrganizationId, String name, String type,
104 boolean recursable, long regionId, long countryId, int statusId,
105 String comments, List<Address> addresses,
106 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
107 List<Phone> phones, List<Website> websites,
108 ServiceContext serviceContext)
109 throws PortalException, SystemException {
110
111 Organization organization = addOrganization(
112 parentOrganizationId, name, type, recursable, regionId, countryId,
113 statusId, comments, serviceContext);
114
115 EnterpriseAdminUtil.updateAddresses(
116 Organization.class.getName(), organization.getOrganizationId(),
117 addresses);
118
119 EnterpriseAdminUtil.updateEmailAddresses(
120 Organization.class.getName(), organization.getOrganizationId(),
121 emailAddresses);
122
123 EnterpriseAdminUtil.updateOrgLabors(organization.getOrganizationId(),
124 orgLabors);
125
126 EnterpriseAdminUtil.updatePhones(
127 Organization.class.getName(), organization.getOrganizationId(),
128 phones);
129
130 EnterpriseAdminUtil.updateWebsites(
131 Organization.class.getName(), organization.getOrganizationId(),
132 websites);
133
134 return organization;
135 }
136
137 public void deleteOrganization(long organizationId)
138 throws PortalException, SystemException {
139
140 OrganizationPermissionUtil.check(
141 getPermissionChecker(), organizationId, ActionKeys.DELETE);
142
143 organizationLocalService.deleteOrganization(organizationId);
144 }
145
146 public List<Organization> getManageableOrganizations(
147 long userId, String actionId)
148 throws PortalException, SystemException {
149
150 return getManageableOrganizations(userId, actionId, true);
151 }
152
153 public List<Organization> getManageableOrganizations(
154 long userId, String actionId, boolean recurse)
155 throws PortalException, SystemException {
156
157 PermissionChecker permissionChecker = getPermissionChecker();
158
159 if (permissionChecker.isCompanyAdmin()) {
160 return organizationLocalService.search(
161 permissionChecker.getCompanyId(), 0, null, null, null, null,
162 null, 0,
163 PropsValues.CONTROL_PANEL_NAVIGATION_MAX_ORGANIZATIONS);
164 }
165
166 if (Validator.isNull(actionId)) {
167 return organizationLocalService.getManageableOrganizations(userId);
168 }
169
170 List<Organization> manageableOrganizations =
171 new UniqueList<Organization>();
172
173 List<Organization> userOrganizations = userPersistence.getOrganizations(
174 userId);
175
176 for (Organization userOrganization : userOrganizations) {
177 if (OrganizationPermissionUtil.contains(
178 permissionChecker, userOrganization.getOrganizationId(),
179 actionId)) {
180
181 manageableOrganizations.add(userOrganization);
182 }
183
184 if (recurse && OrganizationPermissionUtil.contains(
185 permissionChecker, userOrganization.getOrganizationId(),
186 ActionKeys.MANAGE_SUBORGANIZATIONS)) {
187
188 manageableOrganizations.addAll(
189 userOrganization.getSuborganizations());
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 SystemException {
213
214 return organizationLocalService.getUserOrganizations(userId);
215 }
216
217 public void setGroupOrganizations(long groupId, long[] organizationIds)
218 throws PortalException, SystemException {
219
220 GroupPermissionUtil.check(
221 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
222
223 organizationLocalService.setGroupOrganizations(
224 groupId, organizationIds);
225 }
226
227 public void unsetGroupOrganizations(long groupId, long[] organizationIds)
228 throws PortalException, SystemException {
229
230 GroupPermissionUtil.check(
231 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
232
233 organizationLocalService.unsetGroupOrganizations(
234 groupId, organizationIds);
235 }
236
237 public void unsetPasswordPolicyOrganizations(
238 long passwordPolicyId, long[] organizationIds)
239 throws PortalException, SystemException {
240
241 PasswordPolicyPermissionUtil.check(
242 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
243
244 organizationLocalService.unsetPasswordPolicyOrganizations(
245 passwordPolicyId, organizationIds);
246 }
247
248 public Organization updateOrganization(
249 long organizationId, long parentOrganizationId, String name,
250 String type, boolean recursable, long regionId, long countryId,
251 int statusId, String comments, ServiceContext serviceContext)
252 throws PortalException, SystemException {
253
254 OrganizationPermissionUtil.check(
255 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
256
257 return organizationLocalService.updateOrganization(
258 getUser().getCompanyId(), organizationId, parentOrganizationId,
259 name, type, recursable, regionId, countryId, statusId, comments,
260 serviceContext);
261 }
262
263 public Organization updateOrganization(
264 long organizationId, long parentOrganizationId, String name,
265 String type, boolean recursable, long regionId, long countryId,
266 int statusId, String comments, List<Address> addresses,
267 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
268 List<Phone> phones, List<Website> websites,
269 ServiceContext serviceContext)
270 throws PortalException, SystemException {
271
272 Organization organization = updateOrganization(
273 organizationId, parentOrganizationId, name, type, recursable,
274 regionId, countryId, statusId, comments, serviceContext);
275
276 EnterpriseAdminUtil.updateAddresses(
277 Organization.class.getName(), organizationId, addresses);
278
279 EnterpriseAdminUtil.updateEmailAddresses(
280 Organization.class.getName(), organizationId, emailAddresses);
281
282 EnterpriseAdminUtil.updateOrgLabors(organizationId, orgLabors);
283
284 EnterpriseAdminUtil.updatePhones(
285 Organization.class.getName(), organizationId, phones);
286
287 EnterpriseAdminUtil.updateWebsites(
288 Organization.class.getName(), organizationId, websites);
289
290 return organization;
291 }
292
293 }