1
14
15 package com.liferay.portlet.enterpriseadmin.util;
16
17 import com.liferay.portal.PortalException;
18 import com.liferay.portal.SystemException;
19 import com.liferay.portal.kernel.util.ArrayUtil;
20 import com.liferay.portal.kernel.util.ListUtil;
21 import com.liferay.portal.kernel.util.OrderByComparator;
22 import com.liferay.portal.model.Organization;
23 import com.liferay.portal.model.Role;
24 import com.liferay.portal.model.RoleConstants;
25 import com.liferay.portal.model.User;
26 import com.liferay.portal.security.permission.ActionKeys;
27 import com.liferay.portal.security.permission.PermissionChecker;
28 import com.liferay.portal.service.OrganizationLocalServiceUtil;
29 import com.liferay.portal.service.permission.RolePermissionUtil;
30 import com.liferay.portal.util.PropsValues;
31 import com.liferay.portal.util.comparator.GroupNameComparator;
32 import com.liferay.portal.util.comparator.GroupTypeComparator;
33 import com.liferay.portal.util.comparator.OrganizationNameComparator;
34 import com.liferay.portal.util.comparator.OrganizationTypeComparator;
35 import com.liferay.portal.util.comparator.PasswordPolicyDescriptionComparator;
36 import com.liferay.portal.util.comparator.PasswordPolicyNameComparator;
37 import com.liferay.portal.util.comparator.RoleDescriptionComparator;
38 import com.liferay.portal.util.comparator.RoleNameComparator;
39 import com.liferay.portal.util.comparator.RoleTypeComparator;
40 import com.liferay.portal.util.comparator.UserEmailAddressComparator;
41 import com.liferay.portal.util.comparator.UserFirstNameComparator;
42 import com.liferay.portal.util.comparator.UserGroupDescriptionComparator;
43 import com.liferay.portal.util.comparator.UserGroupNameComparator;
44 import com.liferay.portal.util.comparator.UserJobTitleComparator;
45 import com.liferay.portal.util.comparator.UserLastNameComparator;
46 import com.liferay.portal.util.comparator.UserScreenNameComparator;
47
48 import java.util.Iterator;
49 import java.util.List;
50
51
56 public class EnterpriseAdminUtil {
57
58 public static List<Role> filterRoles(
59 PermissionChecker permissionChecker, List<Role> roles) {
60
61 List<Role> filteredRoles = ListUtil.copy(roles);
62
63 Iterator<Role> itr = filteredRoles.iterator();
64
65 while (itr.hasNext()) {
66 Role role = itr.next();
67
68 String name = role.getName();
69
70 if (name.equals(RoleConstants.COMMUNITY_MEMBER) ||
71 name.equals(RoleConstants.GUEST) ||
72 name.equals(RoleConstants.OWNER) ||
73 name.equals(RoleConstants.ORGANIZATION_MEMBER) ||
74 name.equals(RoleConstants.USER)) {
75
76 itr.remove();
77 }
78 }
79
80 if (permissionChecker.isCompanyAdmin()) {
81 return filteredRoles;
82 }
83
84 itr = filteredRoles.iterator();
85
86 while (itr.hasNext()) {
87 Role role = itr.next();
88
89 if (!RolePermissionUtil.contains(
90 permissionChecker, role.getRoleId(),
91 ActionKeys.ASSIGN_MEMBERS)) {
92
93 itr.remove();
94 }
95 }
96
97 return filteredRoles;
98 }
99
100 public static OrderByComparator getGroupOrderByComparator(
101 String orderByCol, String orderByType) {
102
103 boolean orderByAsc = false;
104
105 if (orderByType.equals("asc")) {
106 orderByAsc = true;
107 }
108
109 OrderByComparator orderByComparator = null;
110
111 if (orderByCol.equals("name")) {
112 orderByComparator = new GroupNameComparator(orderByAsc);
113 }
114 else if (orderByCol.equals("type")) {
115 orderByComparator = new GroupTypeComparator(orderByAsc);
116 }
117 else {
118 orderByComparator = new GroupNameComparator(orderByAsc);
119 }
120
121 return orderByComparator;
122 }
123
124 public static Long[][] getLeftAndRightOrganizationIds(long organizationId)
125 throws PortalException, SystemException {
126
127 Organization organization =
128 OrganizationLocalServiceUtil.getOrganization(organizationId);
129
130 return getLeftAndRightOrganizationIds(organization);
131 }
132
133 public static Long[][] getLeftAndRightOrganizationIds(
134 Organization organization) {
135
136 return new Long[][] {
137 new Long[] {
138 organization.getLeftOrganizationId(),
139 organization.getRightOrganizationId()
140 }
141 };
142 }
143
144 public static Long[][] getLeftAndRightOrganizationIds(
145 List<Organization> organizations) {
146
147 Long[][] leftAndRightOrganizationIds = new Long[organizations.size()][];
148
149 for (int i = 0; i < organizations.size(); i++) {
150 Organization organization = organizations.get(i);
151
152 leftAndRightOrganizationIds[i] =
153 new Long[] {
154 organization.getLeftOrganizationId(),
155 organization.getRightOrganizationId()
156 };
157 }
158
159 return leftAndRightOrganizationIds;
160 }
161
162 public static Long[] getOrganizationIds(List<Organization> organizations) {
163 if ((organizations == null) || organizations.isEmpty()) {
164 return new Long[0];
165 }
166
167 Long[] organizationIds = new Long[organizations.size()];
168
169 for (int i = 0; i < organizations.size(); i++) {
170 Organization organization = organizations.get(i);
171
172 organizationIds[i] = new Long(organization.getOrganizationId());
173 }
174
175 return organizationIds;
176 }
177
178 public static OrderByComparator getOrganizationOrderByComparator(
179 String orderByCol, String orderByType) {
180
181 boolean orderByAsc = false;
182
183 if (orderByType.equals("asc")) {
184 orderByAsc = true;
185 }
186
187 OrderByComparator orderByComparator = null;
188
189 if (orderByCol.equals("name")) {
190 orderByComparator = new OrganizationNameComparator(orderByAsc);
191 }
192 else if (orderByCol.equals("type")) {
193 orderByComparator = new OrganizationTypeComparator(orderByAsc);
194 }
195 else {
196 orderByComparator = new OrganizationNameComparator(orderByAsc);
197 }
198
199 return orderByComparator;
200 }
201
202 public static OrderByComparator getPasswordPolicyOrderByComparator(
203 String orderByCol, String orderByType) {
204
205 boolean orderByAsc = false;
206
207 if (orderByType.equals("asc")) {
208 orderByAsc = true;
209 }
210
211 OrderByComparator orderByComparator = null;
212
213 if (orderByCol.equals("name")) {
214 orderByComparator = new PasswordPolicyNameComparator(orderByAsc);
215 }
216 else if (orderByCol.equals("description")) {
217 orderByComparator = new PasswordPolicyDescriptionComparator(
218 orderByAsc);
219 }
220 else {
221 orderByComparator = new PasswordPolicyNameComparator(orderByAsc);
222 }
223
224 return orderByComparator;
225 }
226
227 public static OrderByComparator getRoleOrderByComparator(
228 String orderByCol, String orderByType) {
229
230 boolean orderByAsc = false;
231
232 if (orderByType.equals("asc")) {
233 orderByAsc = true;
234 }
235
236 OrderByComparator orderByComparator = null;
237
238 if (orderByCol.equals("name")) {
239 orderByComparator = new RoleNameComparator(orderByAsc);
240 }
241 else if (orderByCol.equals("description")) {
242 orderByComparator = new RoleDescriptionComparator(orderByAsc);
243 }
244 else if (orderByCol.equals("type")) {
245 orderByComparator = new RoleTypeComparator(orderByAsc);
246 }
247 else {
248 orderByComparator = new RoleNameComparator(orderByAsc);
249 }
250
251 return orderByComparator;
252 }
253
254 public static OrderByComparator getUserGroupOrderByComparator(
255 String orderByCol, String orderByType) {
256
257 boolean orderByAsc = false;
258
259 if (orderByType.equals("asc")) {
260 orderByAsc = true;
261 }
262
263 OrderByComparator orderByComparator = null;
264
265 if (orderByCol.equals("name")) {
266 orderByComparator = new UserGroupNameComparator(orderByAsc);
267 }
268 else if (orderByCol.equals("description")) {
269 orderByComparator = new UserGroupDescriptionComparator(orderByAsc);
270 }
271 else {
272 orderByComparator = new UserGroupNameComparator(orderByAsc);
273 }
274
275 return orderByComparator;
276 }
277
278 public static OrderByComparator getUserOrderByComparator(
279 String orderByCol, String orderByType) {
280
281 boolean orderByAsc = false;
282
283 if (orderByType.equals("asc")) {
284 orderByAsc = true;
285 }
286
287 OrderByComparator orderByComparator = null;
288
289 if (orderByCol.equals("email-address")) {
290 orderByComparator = new UserEmailAddressComparator(orderByAsc);
291 }
292 else if (orderByCol.equals("first-name")) {
293 orderByComparator = new UserFirstNameComparator(orderByAsc);
294 }
295 else if (orderByCol.equals("job-title")) {
296 orderByComparator = new UserJobTitleComparator(orderByAsc);
297 }
298 else if (orderByCol.equals("last-name")) {
299 orderByComparator = new UserLastNameComparator(orderByAsc);
300 }
301 else if (orderByCol.equals("screen-name")) {
302 orderByComparator = new UserScreenNameComparator(orderByAsc);
303 }
304 else {
305 orderByComparator = new UserLastNameComparator(orderByAsc);
306 }
307
308 return orderByComparator;
309 }
310
311 public static boolean hasUpdateEmailAddress(
312 PermissionChecker permissionChecker, User user) {
313
314 String[] fieldEditiableUserEmailAddress =
315 PropsValues.
316 FIELD_EDITABLE_COM_LIFERAY_PORTAL_MODEL_USER_EMAILADDRESS;
317
318 if (ArrayUtil.contains(
319 fieldEditiableUserEmailAddress, "administrator") &&
320 permissionChecker.isCompanyAdmin()) {
321
322 return true;
323 }
324
325 if (ArrayUtil.contains(
326 fieldEditiableUserEmailAddress, "user-with-mx") &&
327 user.hasCompanyMx()) {
328
329 return true;
330 }
331
332 if (ArrayUtil.contains(
333 fieldEditiableUserEmailAddress, "user-without-mx") &&
334 !user.hasCompanyMx()) {
335
336 return true;
337 }
338
339 return false;
340 }
341
342 public static boolean hasUpdateScreenName(
343 PermissionChecker permissionChecker, User user) {
344
345 String[] fieldEditiableUserScreenName =
346 PropsValues.
347 FIELD_EDITABLE_COM_LIFERAY_PORTAL_MODEL_USER_SCREENNAME;
348
349 if (ArrayUtil.contains(
350 fieldEditiableUserScreenName, "administrator") &&
351 permissionChecker.isCompanyAdmin()) {
352
353 return true;
354 }
355
356 if (ArrayUtil.contains(
357 fieldEditiableUserScreenName, "user-with-mx") &&
358 user.hasCompanyMx()) {
359
360 return true;
361 }
362
363 if (ArrayUtil.contains(
364 fieldEditiableUserScreenName, "user-without-mx") &&
365 !user.hasCompanyMx()) {
366
367 return true;
368 }
369
370 return false;
371 }
372
373 }