001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.users.admin.kernel.util;
016    
017    import aQute.bnd.annotation.ProviderType;
018    
019    import com.liferay.portal.kernel.exception.PortalException;
020    import com.liferay.portal.kernel.language.LanguageUtil;
021    import com.liferay.portal.kernel.search.Hits;
022    import com.liferay.portal.kernel.util.Accessor;
023    import com.liferay.portal.kernel.util.LocaleThreadLocal;
024    import com.liferay.portal.kernel.util.OrderByComparator;
025    import com.liferay.portal.kernel.util.StringPool;
026    import com.liferay.portal.kernel.util.Validator;
027    import com.liferay.portal.model.Address;
028    import com.liferay.portal.model.Country;
029    import com.liferay.portal.model.EmailAddress;
030    import com.liferay.portal.model.Group;
031    import com.liferay.portal.model.OrgLabor;
032    import com.liferay.portal.model.Organization;
033    import com.liferay.portal.model.Phone;
034    import com.liferay.portal.model.Region;
035    import com.liferay.portal.model.Role;
036    import com.liferay.portal.model.User;
037    import com.liferay.portal.model.UserGroup;
038    import com.liferay.portal.model.UserGroupGroupRole;
039    import com.liferay.portal.model.UserGroupRole;
040    import com.liferay.portal.model.Website;
041    import com.liferay.portal.security.permission.PermissionChecker;
042    import com.liferay.portal.service.CountryServiceUtil;
043    import com.liferay.portal.service.RegionServiceUtil;
044    import com.liferay.portal.service.RoleLocalServiceUtil;
045    
046    import java.util.List;
047    import java.util.Locale;
048    
049    import javax.portlet.ActionRequest;
050    import javax.portlet.PortletRequest;
051    import javax.portlet.RenderResponse;
052    
053    import javax.servlet.http.HttpServletRequest;
054    
055    /**
056     * @author Brian Wing Shun Chan
057     * @author Jorge Ferrer
058     * @author Julio Camarero
059     */
060    @ProviderType
061    public interface UsersAdmin {
062    
063            public static final String CUSTOM_QUESTION = "write-my-own-question";
064    
065            public static final Accessor<Organization, String>
066                    ORGANIZATION_COUNTRY_NAME_ACCESSOR =
067                            new Accessor<Organization, String>() {
068    
069                                    @Override
070                                    public String get(Organization organization) {
071                                            Address address = organization.getAddress();
072    
073                                            Country country = address.getCountry();
074    
075                                            String countryName = country.getName(
076                                                    LocaleThreadLocal.getThemeDisplayLocale());
077    
078                                            if (Validator.isNull(countryName)) {
079                                                    country = CountryServiceUtil.fetchCountry(
080                                                            organization.getCountryId());
081    
082                                                    if (country != null) {
083                                                            countryName = country.getName(
084                                                                    LocaleThreadLocal.getThemeDisplayLocale());
085                                                    }
086                                            }
087    
088                                            return countryName;
089                                    }
090    
091                                    @Override
092                                    public Class<String> getAttributeClass() {
093                                            return String.class;
094                                    }
095    
096                                    @Override
097                                    public Class<Organization> getTypeClass() {
098                                            return Organization.class;
099                                    }
100    
101                            };
102    
103            public static final Accessor<Organization, String>
104                    ORGANIZATION_REGION_NAME_ACCESSOR =
105                            new Accessor<Organization, String>() {
106    
107                                    @Override
108                                    public String get(Organization organization) {
109                                            Address address = organization.getAddress();
110    
111                                            Region region = address.getRegion();
112    
113                                            String regionName = region.getName();
114    
115                                            if (Validator.isNull(regionName)) {
116                                                    region = RegionServiceUtil.fetchRegion(
117                                                            organization.getRegionId());
118    
119                                                    if (region != null) {
120                                                            regionName = LanguageUtil.get(
121                                                                    LocaleThreadLocal.getThemeDisplayLocale(),
122                                                                    region.getName());
123                                                    }
124                                            }
125    
126                                            return regionName;
127                                    }
128    
129                                    @Override
130                                    public Class<String> getAttributeClass() {
131                                            return String.class;
132                                    }
133    
134                                    @Override
135                                    public Class<Organization> getTypeClass() {
136                                            return Organization.class;
137                                    }
138    
139                            };
140    
141            public static final Accessor<UserGroupGroupRole, Long>
142                    USER_GROUP_GROUP_ROLE_ID_ACCESSOR =
143                            new Accessor<UserGroupGroupRole, Long>() {
144    
145                                    @Override
146                                    public Long get(UserGroupGroupRole userGroupGroupRole) {
147                                            Role role = RoleLocalServiceUtil.fetchRole(
148                                                    userGroupGroupRole.getRoleId());
149    
150                                            if (role == null) {
151                                                    return 0L;
152                                            }
153    
154                                            return role.getRoleId();
155                                    }
156    
157                                    @Override
158                                    public Class<Long> getAttributeClass() {
159                                            return Long.class;
160                                    }
161    
162                                    @Override
163                                    public Class<UserGroupGroupRole> getTypeClass() {
164                                            return UserGroupGroupRole.class;
165                                    }
166    
167                            };
168    
169            public static final Accessor<UserGroupGroupRole, String>
170                    USER_GROUP_GROUP_ROLE_TITLE_ACCESSOR =
171                            new Accessor<UserGroupGroupRole, String>() {
172    
173                                    @Override
174                                    public String get(UserGroupGroupRole userGroupGroupRole) {
175                                            Role role = RoleLocalServiceUtil.fetchRole(
176                                                    userGroupGroupRole.getRoleId());
177    
178                                            if (role == null) {
179                                                    return StringPool.BLANK;
180                                            }
181    
182                                            return role.getTitle(
183                                                    LocaleThreadLocal.getThemeDisplayLocale());
184                                    }
185    
186                                    @Override
187                                    public Class<String> getAttributeClass() {
188                                            return String.class;
189                                    }
190    
191                                    @Override
192                                    public Class<UserGroupGroupRole> getTypeClass() {
193                                            return UserGroupGroupRole.class;
194                                    }
195    
196                            };
197    
198            public static final Accessor<UserGroupRole, Long>
199                    USER_GROUP_ROLE_ID_ACCESSOR = new Accessor<UserGroupRole, Long>() {
200    
201                            @Override
202                            public Long get(UserGroupRole userGroupRole) {
203                                    Role role = RoleLocalServiceUtil.fetchRole(
204                                            userGroupRole.getRoleId());
205    
206                                    if (role == null) {
207                                            return 0L;
208                                    }
209    
210                                    return role.getRoleId();
211                            }
212    
213                            @Override
214                            public Class<Long> getAttributeClass() {
215                                    return Long.class;
216                            }
217    
218                            @Override
219                            public Class<UserGroupRole> getTypeClass() {
220                                    return UserGroupRole.class;
221                            }
222    
223                    };
224    
225            public static final Accessor<UserGroupRole, String>
226                    USER_GROUP_ROLE_TITLE_ACCESSOR = new Accessor<UserGroupRole, String>() {
227    
228                            @Override
229                            public String get(UserGroupRole userGroupRole) {
230                                    Role role = RoleLocalServiceUtil.fetchRole(
231                                            userGroupRole.getRoleId());
232    
233                                    if (role == null) {
234                                            return StringPool.BLANK;
235                                    }
236    
237                                    return role.getTitle(LocaleThreadLocal.getThemeDisplayLocale());
238                            }
239    
240                            @Override
241                            public Class<String> getAttributeClass() {
242                                    return String.class;
243                            }
244    
245                            @Override
246                            public Class<UserGroupRole> getTypeClass() {
247                                    return UserGroupRole.class;
248                            }
249    
250                    };
251    
252            public void addPortletBreadcrumbEntries(
253                            Organization organization, HttpServletRequest request,
254                            RenderResponse renderResponse)
255                    throws Exception;
256    
257            public long[] addRequiredRoles(long userId, long[] roleIds)
258                    throws PortalException;
259    
260            public long[] addRequiredRoles(User user, long[] roleIds)
261                    throws PortalException;
262    
263            public List<Role> filterGroupRoles(
264                            PermissionChecker permissionChecker, long groupId, List<Role> roles)
265                    throws PortalException;
266    
267            public List<Group> filterGroups(
268                            PermissionChecker permissionChecker, List<Group> groups)
269                    throws PortalException;
270    
271            public List<Organization> filterOrganizations(
272                            PermissionChecker permissionChecker,
273                            List<Organization> organizations)
274                    throws PortalException;
275    
276            public List<Role> filterRoles(
277                    PermissionChecker permissionChecker, List<Role> roles);
278    
279            public long[] filterUnsetGroupUserIds(
280                            PermissionChecker permissionChecker, long groupId, long[] userIds)
281                    throws PortalException;
282    
283            public long[] filterUnsetOrganizationUserIds(
284                            PermissionChecker permissionChecker, long organizationId,
285                            long[] userIds)
286                    throws PortalException;
287    
288            public List<UserGroupRole> filterUserGroupRoles(
289                            PermissionChecker permissionChecker,
290                            List<UserGroupRole> userGroupRoles)
291                    throws PortalException;
292    
293            public List<UserGroup> filterUserGroups(
294                    PermissionChecker permissionChecker, List<UserGroup> userGroups);
295    
296            public List<Address> getAddresses(ActionRequest actionRequest);
297    
298            public List<Address> getAddresses(
299                    ActionRequest actionRequest, List<Address> defaultAddresses);
300    
301            public List<EmailAddress> getEmailAddresses(ActionRequest actionRequest);
302    
303            public List<EmailAddress> getEmailAddresses(
304                    ActionRequest actionRequest, List<EmailAddress> defaultEmailAddresses);
305    
306            public long[] getGroupIds(PortletRequest portletRequest)
307                    throws PortalException;
308    
309            public OrderByComparator<Group> getGroupOrderByComparator(
310                    String orderByCol, String orderByType);
311    
312            public Long[] getOrganizationIds(List<Organization> organizations);
313    
314            public long[] getOrganizationIds(PortletRequest portletRequest)
315                    throws PortalException;
316    
317            public OrderByComparator<Organization> getOrganizationOrderByComparator(
318                    String orderByCol, String orderByType);
319    
320            public List<Organization> getOrganizations(Hits hits)
321                    throws PortalException;
322    
323            public List<OrgLabor> getOrgLabors(ActionRequest actionRequest);
324    
325            public List<Phone> getPhones(ActionRequest actionRequest);
326    
327            public List<Phone> getPhones(
328                    ActionRequest actionRequest, List<Phone> defaultPhones);
329    
330            public long[] getRoleIds(PortletRequest portletRequest)
331                    throws PortalException;
332    
333            public OrderByComparator<Role> getRoleOrderByComparator(
334                    String orderByCol, String orderByType);
335    
336            public <T> String getUserColumnText(
337                    Locale locale, List<? extends T> list, Accessor<T, String> accessor,
338                    int count);
339    
340            public long[] getUserGroupIds(PortletRequest portletRequest)
341                    throws PortalException;
342    
343            public OrderByComparator<UserGroup> getUserGroupOrderByComparator(
344                    String orderByCol, String orderByType);
345    
346            public List<UserGroupRole> getUserGroupRoles(PortletRequest portletRequest)
347                    throws PortalException;
348    
349            public List<UserGroup> getUserGroups(Hits hits) throws PortalException;
350    
351            public OrderByComparator<User> getUserOrderByComparator(
352                    String orderByCol, String orderByType);
353    
354            public List<User> getUsers(Hits hits) throws PortalException;
355    
356            public List<Website> getWebsites(ActionRequest actionRequest);
357    
358            public List<Website> getWebsites(
359                    ActionRequest actionRequest, List<Website> defaultWebsites);
360    
361            /**
362             * @deprecated As of 6.2.0, replaced by {@link
363             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
364             *             String)}
365             */
366            @Deprecated
367            public boolean hasUpdateEmailAddress(
368                            PermissionChecker permissionChecker, User user)
369                    throws PortalException;
370    
371            public boolean hasUpdateFieldPermission(
372                            PermissionChecker permissionChecker, User updatingUser,
373                            User updatedUser, String field)
374                    throws PortalException;
375    
376            /**
377             * @deprecated As of 6.2.0, replaced by {@link
378             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
379             *             String)}
380             */
381            @Deprecated
382            public boolean hasUpdateFieldPermission(User user, String field)
383                    throws PortalException;
384    
385            /**
386             * @deprecated As of 6.2.0, replaced by {@link
387             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
388             *             String)}
389             */
390            @Deprecated
391            public boolean hasUpdateScreenName(
392                            PermissionChecker permissionChecker, User user)
393                    throws PortalException;
394    
395            public long[] removeRequiredRoles(long userId, long[] roleIds)
396                    throws PortalException;
397    
398            public long[] removeRequiredRoles(User user, long[] roleIds)
399                    throws PortalException;
400    
401            public void updateAddresses(
402                            String className, long classPK, List<Address> addresses)
403                    throws PortalException;
404    
405            public void updateEmailAddresses(
406                            String className, long classPK, List<EmailAddress> emailAddresses)
407                    throws PortalException;
408    
409            public void updateOrgLabors(long classPK, List<OrgLabor> orgLabors)
410                    throws PortalException;
411    
412            public void updatePhones(String className, long classPK, List<Phone> phones)
413                    throws PortalException;
414    
415            public void updateWebsites(
416                            String className, long classPK, List<Website> websites)
417                    throws PortalException;
418    
419    }