001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.util.ListUtil;
020 import com.liferay.portal.model.Address;
021 import com.liferay.portal.model.EmailAddress;
022 import com.liferay.portal.model.OrgLabor;
023 import com.liferay.portal.model.Organization;
024 import com.liferay.portal.model.OrganizationConstants;
025 import com.liferay.portal.model.Phone;
026 import com.liferay.portal.model.Website;
027 import com.liferay.portal.security.auth.PrincipalException;
028 import com.liferay.portal.security.permission.ActionKeys;
029 import com.liferay.portal.security.permission.PermissionChecker;
030 import com.liferay.portal.service.ServiceContext;
031 import com.liferay.portal.service.base.OrganizationServiceBaseImpl;
032 import com.liferay.portal.service.permission.GroupPermissionUtil;
033 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
034 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
035 import com.liferay.portal.service.permission.PortalPermissionUtil;
036 import com.liferay.portlet.enterpriseadmin.util.EnterpriseAdminUtil;
037
038 import java.util.Iterator;
039 import java.util.LinkedHashMap;
040 import java.util.List;
041
042
047 public class OrganizationServiceImpl extends OrganizationServiceBaseImpl {
048
049 public void addGroupOrganizations(long groupId, long[] organizationIds)
050 throws PortalException, SystemException {
051
052 GroupPermissionUtil.check(
053 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
054
055 organizationLocalService.addGroupOrganizations(
056 groupId, organizationIds);
057 }
058
059 public void addPasswordPolicyOrganizations(
060 long passwordPolicyId, long[] organizationIds)
061 throws PortalException, SystemException {
062
063 PasswordPolicyPermissionUtil.check(
064 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
065
066 organizationLocalService.addPasswordPolicyOrganizations(
067 passwordPolicyId, organizationIds);
068 }
069
070 public Organization addOrganization(
071 long parentOrganizationId, String name, String type,
072 boolean recursable, long regionId, long countryId, int statusId,
073 String comments, ServiceContext serviceContext)
074 throws PortalException, SystemException {
075
076 if (!OrganizationPermissionUtil.contains(
077 getPermissionChecker(), parentOrganizationId,
078 ActionKeys.MANAGE_SUBORGANIZATIONS) &&
079 !PortalPermissionUtil.contains(
080 getPermissionChecker(), ActionKeys.ADD_ORGANIZATION)) {
081
082 throw new PrincipalException(
083 "User " + getUserId() + " does not have permissions to add " +
084 "an organization with parent " + parentOrganizationId);
085 }
086
087 return organizationLocalService.addOrganization(
088 getUserId(), parentOrganizationId, name, type, recursable,
089 regionId, countryId, statusId, comments, serviceContext);
090 }
091
092 public Organization addOrganization(
093 long parentOrganizationId, String name, String type,
094 boolean recursable, long regionId, long countryId, int statusId,
095 String comments, List<Address> addresses,
096 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
097 List<Phone> phones, List<Website> websites,
098 ServiceContext serviceContext)
099 throws PortalException, SystemException {
100
101 Organization organization = addOrganization(
102 parentOrganizationId, name, type, recursable, regionId, countryId,
103 statusId, comments, serviceContext);
104
105 EnterpriseAdminUtil.updateAddresses(
106 Organization.class.getName(), organization.getOrganizationId(),
107 addresses);
108
109 EnterpriseAdminUtil.updateEmailAddresses(
110 Organization.class.getName(), organization.getOrganizationId(),
111 emailAddresses);
112
113 EnterpriseAdminUtil.updateOrgLabors(organization.getOrganizationId(),
114 orgLabors);
115
116 EnterpriseAdminUtil.updatePhones(
117 Organization.class.getName(), organization.getOrganizationId(),
118 phones);
119
120 EnterpriseAdminUtil.updateWebsites(
121 Organization.class.getName(), organization.getOrganizationId(),
122 websites);
123
124 return organization;
125 }
126
127 public void deleteLogo(long organizationId)
128 throws PortalException, SystemException {
129
130 OrganizationPermissionUtil.check(
131 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
132
133 organizationLocalService.deleteLogo(organizationId);
134 }
135
136 public void deleteOrganization(long organizationId)
137 throws PortalException, SystemException {
138
139 OrganizationPermissionUtil.check(
140 getPermissionChecker(), organizationId, ActionKeys.DELETE);
141
142 organizationLocalService.deleteOrganization(organizationId);
143 }
144
145 public List<Organization> getManageableOrganizations(
146 String actionId, int max)
147 throws PortalException, SystemException {
148
149 PermissionChecker permissionChecker = getPermissionChecker();
150
151 if (permissionChecker.isCompanyAdmin()) {
152 return organizationLocalService.search(
153 permissionChecker.getCompanyId(),
154 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID, null, null,
155 null, null, null, 0, max);
156 }
157
158 LinkedHashMap<String, Object> params =
159 new LinkedHashMap<String, Object>();
160
161 List<Organization> userOrganizations =
162 organizationLocalService.getUserOrganizations(
163 permissionChecker.getUserId());
164
165 Long[][] leftAndRightOrganizationIds =
166 EnterpriseAdminUtil.getLeftAndRightOrganizationIds(
167 userOrganizations);
168
169 params.put("organizationsTree", leftAndRightOrganizationIds);
170
171 List<Organization> manageableOrganizations =
172 organizationLocalService.search(
173 permissionChecker.getCompanyId(),
174 OrganizationConstants.ANY_PARENT_ORGANIZATION_ID, null, null,
175 null, null, params, 0, max);
176
177 manageableOrganizations = ListUtil.copy(manageableOrganizations);
178
179 Iterator<Organization> itr = manageableOrganizations.iterator();
180
181 while (itr.hasNext()) {
182 Organization organization = itr.next();
183
184 if (!OrganizationPermissionUtil.contains(
185 permissionChecker, organization, actionId)) {
186
187 itr.remove();
188 }
189 }
190
191 return manageableOrganizations;
192 }
193
194 public Organization getOrganization(long organizationId)
195 throws PortalException, SystemException {
196
197 OrganizationPermissionUtil.check(
198 getPermissionChecker(), organizationId, ActionKeys.VIEW);
199
200 return organizationLocalService.getOrganization(organizationId);
201 }
202
203 public long getOrganizationId(long companyId, String name)
204 throws SystemException {
205
206 return organizationLocalService.getOrganizationId(companyId, name);
207 }
208
209 public List<Organization> getUserOrganizations(long userId)
210 throws PortalException, SystemException {
211
212 return organizationLocalService.getUserOrganizations(userId);
213 }
214
215 public List<Organization> getUserOrganizations(
216 long userId, boolean inheritUserGroups)
217 throws PortalException, SystemException {
218
219 return organizationLocalService.getUserOrganizations(
220 userId, inheritUserGroups);
221 }
222
223 public void setGroupOrganizations(long groupId, long[] organizationIds)
224 throws PortalException, SystemException {
225
226 GroupPermissionUtil.check(
227 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
228
229 organizationLocalService.setGroupOrganizations(
230 groupId, organizationIds);
231 }
232
233 public void unsetGroupOrganizations(long groupId, long[] organizationIds)
234 throws PortalException, SystemException {
235
236 GroupPermissionUtil.check(
237 getPermissionChecker(), groupId, ActionKeys.ASSIGN_MEMBERS);
238
239 organizationLocalService.unsetGroupOrganizations(
240 groupId, organizationIds);
241 }
242
243 public void unsetPasswordPolicyOrganizations(
244 long passwordPolicyId, long[] organizationIds)
245 throws PortalException, SystemException {
246
247 PasswordPolicyPermissionUtil.check(
248 getPermissionChecker(), passwordPolicyId, ActionKeys.UPDATE);
249
250 organizationLocalService.unsetPasswordPolicyOrganizations(
251 passwordPolicyId, organizationIds);
252 }
253
254 public Organization updateOrganization(
255 long organizationId, long parentOrganizationId, String name,
256 String type, boolean recursable, long regionId, long countryId,
257 int statusId, String comments, ServiceContext serviceContext)
258 throws PortalException, SystemException {
259
260 OrganizationPermissionUtil.check(
261 getPermissionChecker(), organizationId, ActionKeys.UPDATE);
262
263 return organizationLocalService.updateOrganization(
264 getUser().getCompanyId(), organizationId, parentOrganizationId,
265 name, type, recursable, regionId, countryId, statusId, comments,
266 serviceContext);
267 }
268
269 public Organization updateOrganization(
270 long organizationId, long parentOrganizationId, String name,
271 String type, boolean recursable, long regionId, long countryId,
272 int statusId, String comments, List<Address> addresses,
273 List<EmailAddress> emailAddresses, List<OrgLabor> orgLabors,
274 List<Phone> phones, List<Website> websites,
275 ServiceContext serviceContext)
276 throws PortalException, SystemException {
277
278 EnterpriseAdminUtil.updateAddresses(
279 Organization.class.getName(), organizationId, addresses);
280
281 EnterpriseAdminUtil.updateEmailAddresses(
282 Organization.class.getName(), organizationId, emailAddresses);
283
284 EnterpriseAdminUtil.updateOrgLabors(organizationId, orgLabors);
285
286 EnterpriseAdminUtil.updatePhones(
287 Organization.class.getName(), organizationId, phones);
288
289 EnterpriseAdminUtil.updateWebsites(
290 Organization.class.getName(), organizationId, websites);
291
292 Organization organization = updateOrganization(
293 organizationId, parentOrganizationId, name, type, recursable,
294 regionId, countryId, statusId, comments, serviceContext);
295
296 return organization;
297 }
298
299 }