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.portlet.usersadmin.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, String>
142                    USER_GROUP_GROUP_ROLE_TITLE_ACCESSOR =
143                            new Accessor<UserGroupGroupRole, String>() {
144    
145                                    @Override
146                                    public String get(UserGroupGroupRole userGroupGroupRole) {
147                                            Role role = RoleLocalServiceUtil.fetchRole(
148                                                    userGroupGroupRole.getRoleId());
149    
150                                            if (role == null) {
151                                                    return StringPool.BLANK;
152                                            }
153    
154                                            return role.getTitle(
155                                                    LocaleThreadLocal.getThemeDisplayLocale());
156                                    }
157    
158                                    @Override
159                                    public Class<String> getAttributeClass() {
160                                            return String.class;
161                                    }
162    
163                                    @Override
164                                    public Class<UserGroupGroupRole> getTypeClass() {
165                                            return UserGroupGroupRole.class;
166                                    }
167    
168                            };
169    
170            public static final Accessor<UserGroupRole, String>
171                    USER_GROUP_ROLE_TITLE_ACCESSOR = new Accessor<UserGroupRole, String>() {
172    
173                            @Override
174                            public String get(UserGroupRole userGroupRole) {
175                                    Role role = RoleLocalServiceUtil.fetchRole(
176                                            userGroupRole.getRoleId());
177    
178                                    if (role == null) {
179                                            return StringPool.BLANK;
180                                    }
181    
182                                    return role.getTitle(LocaleThreadLocal.getThemeDisplayLocale());
183                            }
184    
185                            @Override
186                            public Class<String> getAttributeClass() {
187                                    return String.class;
188                            }
189    
190                            @Override
191                            public Class<UserGroupRole> getTypeClass() {
192                                    return UserGroupRole.class;
193                            }
194    
195                    };
196    
197            public void addPortletBreadcrumbEntries(
198                            Organization organization, HttpServletRequest request,
199                            RenderResponse renderResponse)
200                    throws Exception;
201    
202            public long[] addRequiredRoles(long userId, long[] roleIds)
203                    throws PortalException;
204    
205            public long[] addRequiredRoles(User user, long[] roleIds)
206                    throws PortalException;
207    
208            public List<Role> filterGroupRoles(
209                            PermissionChecker permissionChecker, long groupId, List<Role> roles)
210                    throws PortalException;
211    
212            public List<Group> filterGroups(
213                            PermissionChecker permissionChecker, List<Group> groups)
214                    throws PortalException;
215    
216            public List<Organization> filterOrganizations(
217                            PermissionChecker permissionChecker,
218                            List<Organization> organizations)
219                    throws PortalException;
220    
221            public List<Role> filterRoles(
222                    PermissionChecker permissionChecker, List<Role> roles);
223    
224            public long[] filterUnsetGroupUserIds(
225                            PermissionChecker permissionChecker, long groupId, long[] userIds)
226                    throws PortalException;
227    
228            public long[] filterUnsetOrganizationUserIds(
229                            PermissionChecker permissionChecker, long organizationId,
230                            long[] userIds)
231                    throws PortalException;
232    
233            public List<UserGroupRole> filterUserGroupRoles(
234                            PermissionChecker permissionChecker,
235                            List<UserGroupRole> userGroupRoles)
236                    throws PortalException;
237    
238            public List<UserGroup> filterUserGroups(
239                    PermissionChecker permissionChecker, List<UserGroup> userGroups);
240    
241            public List<Address> getAddresses(ActionRequest actionRequest);
242    
243            public List<Address> getAddresses(
244                    ActionRequest actionRequest, List<Address> defaultAddresses);
245    
246            public List<EmailAddress> getEmailAddresses(ActionRequest actionRequest);
247    
248            public List<EmailAddress> getEmailAddresses(
249                    ActionRequest actionRequest, List<EmailAddress> defaultEmailAddresses);
250    
251            public long[] getGroupIds(PortletRequest portletRequest)
252                    throws PortalException;
253    
254            public OrderByComparator<Group> getGroupOrderByComparator(
255                    String orderByCol, String orderByType);
256    
257            public Long[] getOrganizationIds(List<Organization> organizations);
258    
259            public long[] getOrganizationIds(PortletRequest portletRequest)
260                    throws PortalException;
261    
262            public OrderByComparator<Organization> getOrganizationOrderByComparator(
263                    String orderByCol, String orderByType);
264    
265            public List<Organization> getOrganizations(Hits hits)
266                    throws PortalException;
267    
268            public List<OrgLabor> getOrgLabors(ActionRequest actionRequest);
269    
270            public List<Phone> getPhones(ActionRequest actionRequest);
271    
272            public List<Phone> getPhones(
273                    ActionRequest actionRequest, List<Phone> defaultPhones);
274    
275            public long[] getRoleIds(PortletRequest portletRequest)
276                    throws PortalException;
277    
278            public OrderByComparator<Role> getRoleOrderByComparator(
279                    String orderByCol, String orderByType);
280    
281            public <T> String getUserColumnText(
282                    Locale locale, List<? extends T> list, Accessor<T, String> accessor,
283                    int count);
284    
285            public long[] getUserGroupIds(PortletRequest portletRequest)
286                    throws PortalException;
287    
288            public OrderByComparator<UserGroup> getUserGroupOrderByComparator(
289                    String orderByCol, String orderByType);
290    
291            public List<UserGroupRole> getUserGroupRoles(PortletRequest portletRequest)
292                    throws PortalException;
293    
294            public List<UserGroup> getUserGroups(Hits hits) throws PortalException;
295    
296            public OrderByComparator<User> getUserOrderByComparator(
297                    String orderByCol, String orderByType);
298    
299            public List<User> getUsers(Hits hits) throws PortalException;
300    
301            public List<Website> getWebsites(ActionRequest actionRequest);
302    
303            public List<Website> getWebsites(
304                    ActionRequest actionRequest, List<Website> defaultWebsites);
305    
306            /**
307             * @deprecated As of 6.2.0, replaced by {@link
308             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
309             *             String)}
310             */
311            @Deprecated
312            public boolean hasUpdateEmailAddress(
313                            PermissionChecker permissionChecker, User user)
314                    throws PortalException;
315    
316            public boolean hasUpdateFieldPermission(
317                            PermissionChecker permissionChecker, User updatingUser,
318                            User updatedUser, String field)
319                    throws PortalException;
320    
321            /**
322             * @deprecated As of 6.2.0, replaced by {@link
323             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
324             *             String)}
325             */
326            @Deprecated
327            public boolean hasUpdateFieldPermission(User user, String field)
328                    throws PortalException;
329    
330            /**
331             * @deprecated As of 6.2.0, replaced by {@link
332             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
333             *             String)}
334             */
335            @Deprecated
336            public boolean hasUpdateScreenName(
337                            PermissionChecker permissionChecker, User user)
338                    throws PortalException;
339    
340            public long[] removeRequiredRoles(long userId, long[] roleIds)
341                    throws PortalException;
342    
343            public long[] removeRequiredRoles(User user, long[] roleIds)
344                    throws PortalException;
345    
346            public void updateAddresses(
347                            String className, long classPK, List<Address> addresses)
348                    throws PortalException;
349    
350            public void updateEmailAddresses(
351                            String className, long classPK, List<EmailAddress> emailAddresses)
352                    throws PortalException;
353    
354            public void updateOrgLabors(long classPK, List<OrgLabor> orgLabors)
355                    throws PortalException;
356    
357            public void updatePhones(String className, long classPK, List<Phone> phones)
358                    throws PortalException;
359    
360            public void updateWebsites(
361                            String className, long classPK, List<Website> websites)
362                    throws PortalException;
363    
364    }