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.exception.SystemException;
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.model.Address;
027    import com.liferay.portal.model.EmailAddress;
028    import com.liferay.portal.model.Group;
029    import com.liferay.portal.model.OrgLabor;
030    import com.liferay.portal.model.Organization;
031    import com.liferay.portal.model.Phone;
032    import com.liferay.portal.model.Role;
033    import com.liferay.portal.model.User;
034    import com.liferay.portal.model.UserGroup;
035    import com.liferay.portal.model.UserGroupGroupRole;
036    import com.liferay.portal.model.UserGroupRole;
037    import com.liferay.portal.model.Website;
038    import com.liferay.portal.security.permission.PermissionChecker;
039    import com.liferay.portal.service.RoleLocalServiceUtil;
040    
041    import java.util.List;
042    
043    import javax.portlet.ActionRequest;
044    import javax.portlet.PortletRequest;
045    import javax.portlet.RenderResponse;
046    
047    import javax.servlet.http.HttpServletRequest;
048    
049    /**
050     * @author Brian Wing Shun Chan
051     * @author Jorge Ferrer
052     * @author Julio Camarero
053     */
054    @ProviderType
055    public interface UsersAdmin {
056    
057            public static final String CUSTOM_QUESTION = "write-my-own-question";
058    
059            public static final Accessor<UserGroupGroupRole, String>
060                    USER_GROUP_GROUP_ROLE_TITLE_ACCESSOR =
061                            new Accessor<UserGroupGroupRole, String>() {
062    
063                                    @Override
064                                    public String get(UserGroupGroupRole userGroupGroupRole) {
065                                            try {
066                                                    Role role = RoleLocalServiceUtil.fetchRole(
067                                                            userGroupGroupRole.getRoleId());
068    
069                                                    return role.getTitle(
070                                                            LocaleThreadLocal.getThemeDisplayLocale());
071                                            }
072                                            catch (SystemException se) {
073                                            }
074    
075                                            return StringPool.BLANK;
076                                    }
077    
078                                    @Override
079                                    public Class<String> getAttributeClass() {
080                                            return String.class;
081                                    }
082    
083                                    @Override
084                                    public Class<UserGroupGroupRole> getTypeClass() {
085                                            return UserGroupGroupRole.class;
086                                    }
087    
088                            };
089    
090            public static final Accessor<UserGroupRole, String>
091                    USER_GROUP_ROLE_TITLE_ACCESSOR =
092                            new Accessor<UserGroupRole, String>() {
093    
094                                    @Override
095                                    public String get(UserGroupRole userGroupRole) {
096                                            try {
097                                                    Role role = RoleLocalServiceUtil.fetchRole(
098                                                            userGroupRole.getRoleId());
099    
100                                                    return role.getTitle(
101                                                            LocaleThreadLocal.getThemeDisplayLocale());
102                                            }
103                                            catch (SystemException se) {
104                                            }
105    
106                                            return StringPool.BLANK;
107                                    }
108    
109                                    @Override
110                                    public Class<String> getAttributeClass() {
111                                            return String.class;
112                                    }
113    
114                                    @Override
115                                    public Class<UserGroupRole> getTypeClass() {
116                                            return UserGroupRole.class;
117                                    }
118    
119                            };
120    
121            public void addPortletBreadcrumbEntries(
122                            Organization organization, HttpServletRequest request,
123                            RenderResponse renderResponse)
124                    throws Exception;
125    
126            public long[] addRequiredRoles(long userId, long[] roleIds)
127                    throws PortalException;
128    
129            public long[] addRequiredRoles(User user, long[] roleIds)
130                    throws PortalException;
131    
132            public List<Role> filterGroupRoles(
133                            PermissionChecker permissionChecker, long groupId, List<Role> roles)
134                    throws PortalException;
135    
136            public List<Group> filterGroups(
137                            PermissionChecker permissionChecker, List<Group> groups)
138                    throws PortalException;
139    
140            public List<Organization> filterOrganizations(
141                            PermissionChecker permissionChecker,
142                            List<Organization> organizations)
143                    throws PortalException;
144    
145            public List<Role> filterRoles(
146                    PermissionChecker permissionChecker, List<Role> roles);
147    
148            public long[] filterUnsetGroupUserIds(
149                            PermissionChecker permissionChecker, long groupId, long[] userIds)
150                    throws PortalException;
151    
152            public long[] filterUnsetOrganizationUserIds(
153                            PermissionChecker permissionChecker, long organizationId,
154                            long[] userIds)
155                    throws PortalException;
156    
157            public List<UserGroupRole> filterUserGroupRoles(
158                            PermissionChecker permissionChecker,
159                            List<UserGroupRole> userGroupRoles)
160                    throws PortalException;
161    
162            public List<UserGroup> filterUserGroups(
163                    PermissionChecker permissionChecker, List<UserGroup> userGroups);
164    
165            public List<Address> getAddresses(ActionRequest actionRequest);
166    
167            public List<Address> getAddresses(
168                    ActionRequest actionRequest, List<Address> defaultAddresses);
169    
170            public List<EmailAddress> getEmailAddresses(ActionRequest actionRequest);
171    
172            public List<EmailAddress> getEmailAddresses(
173                    ActionRequest actionRequest, List<EmailAddress> defaultEmailAddresses);
174    
175            public OrderByComparator<Group> getGroupOrderByComparator(
176                    String orderByCol, String orderByType);
177    
178            public Long[] getOrganizationIds(List<Organization> organizations);
179    
180            public OrderByComparator<Organization> getOrganizationOrderByComparator(
181                    String orderByCol, String orderByType);
182    
183            public List<Organization> getOrganizations(Hits hits)
184                    throws PortalException;
185    
186            public List<OrgLabor> getOrgLabors(ActionRequest actionRequest);
187    
188            public List<Phone> getPhones(ActionRequest actionRequest);
189    
190            public List<Phone> getPhones(
191                    ActionRequest actionRequest, List<Phone> defaultPhones);
192    
193            public OrderByComparator<Role> getRoleOrderByComparator(
194                    String orderByCol, String orderByType);
195    
196            public OrderByComparator<UserGroup> getUserGroupOrderByComparator(
197                    String orderByCol, String orderByType);
198    
199            public List<UserGroupRole> getUserGroupRoles(PortletRequest portletRequest)
200                    throws PortalException;
201    
202            public List<UserGroup> getUserGroups(Hits hits) throws PortalException;
203    
204            public OrderByComparator<User> getUserOrderByComparator(
205                    String orderByCol, String orderByType);
206    
207            public List<User> getUsers(Hits hits) throws PortalException;
208    
209            public List<Website> getWebsites(ActionRequest actionRequest);
210    
211            public List<Website> getWebsites(
212                    ActionRequest actionRequest, List<Website> defaultWebsites);
213    
214            /**
215             * @deprecated As of 6.2.0, replaced by {@link
216             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
217             *             String)}
218             */
219            @Deprecated
220            public boolean hasUpdateEmailAddress(
221                            PermissionChecker permissionChecker, User user)
222                    throws PortalException;
223    
224            public boolean hasUpdateFieldPermission(
225                            PermissionChecker permissionChecker, User updatingUser,
226                            User updatedUser, String field)
227                    throws PortalException;
228    
229            /**
230             * @deprecated As of 6.2.0, replaced by {@link
231             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
232             *             String)}
233             */
234            @Deprecated
235            public boolean hasUpdateFieldPermission(User user, String field)
236                    throws PortalException;
237    
238            /**
239             * @deprecated As of 6.2.0, replaced by {@link
240             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
241             *             String)}
242             */
243            @Deprecated
244            public boolean hasUpdateScreenName(
245                            PermissionChecker permissionChecker, User user)
246                    throws PortalException;
247    
248            public long[] removeRequiredRoles(long userId, long[] roleIds)
249                    throws PortalException;
250    
251            public long[] removeRequiredRoles(User user, long[] roleIds)
252                    throws PortalException;
253    
254            public void updateAddresses(
255                            String className, long classPK, List<Address> addresses)
256                    throws PortalException;
257    
258            public void updateEmailAddresses(
259                            String className, long classPK, List<EmailAddress> emailAddresses)
260                    throws PortalException;
261    
262            public void updateOrgLabors(long classPK, List<OrgLabor> orgLabors)
263                    throws PortalException;
264    
265            public void updatePhones(String className, long classPK, List<Phone> phones)
266                    throws PortalException;
267    
268            public void updateWebsites(
269                            String className, long classPK, List<Website> websites)
270                    throws PortalException;
271    
272    }