001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portlet.usersadmin.util;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.language.LanguageUtil;
020    import com.liferay.portal.kernel.search.Hits;
021    import com.liferay.portal.kernel.util.Accessor;
022    import com.liferay.portal.kernel.util.LocaleThreadLocal;
023    import com.liferay.portal.kernel.util.OrderByComparator;
024    import com.liferay.portal.kernel.util.StringPool;
025    import com.liferay.portal.kernel.util.Tuple;
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    public interface UsersAdmin {
061    
062            public static final String CUSTOM_QUESTION = "write-my-own-question";
063    
064            public static final Accessor<Organization, String>
065                    ORGANIZATION_COUNTRY_NAME_ACCESSOR =
066                            new Accessor<Organization, String>() {
067    
068                            @Override
069                            public String get(Organization organization) {
070                                    Address address = organization.getAddress();
071    
072                                    Country country = address.getCountry();
073    
074                                    String countryName = country.getName(
075                                            LocaleThreadLocal.getThemeDisplayLocale());
076    
077                                    if (Validator.isNull(countryName)) {
078                                            try {
079                                                    country = CountryServiceUtil.fetchCountry(
080                                                            organization.getCountryId());
081    
082                                                    if (country != null) {
083                                                            countryName = country.getName(
084                                                                    LocaleThreadLocal.getThemeDisplayLocale());
085                                                    }
086                                            }
087                                            catch (SystemException se) {
088                                            }
089                                    }
090    
091                                    return countryName;
092                            }
093    
094                    };
095    
096            public static final Accessor<Organization, String>
097                    ORGANIZATION_REGION_NAME_ACCESSOR =
098                            new Accessor<Organization, String>() {
099    
100                            @Override
101                            public String get(Organization organization) {
102                                    Address address = organization.getAddress();
103    
104                                    Region region = address.getRegion();
105    
106                                    String regionName = region.getName();
107    
108                                    if (Validator.isNull(regionName)) {
109                                            try {
110                                                    region = RegionServiceUtil.fetchRegion(
111                                                            organization.getRegionId());
112    
113                                                    if (region != null) {
114                                                            regionName = LanguageUtil.get(
115                                                                    LocaleThreadLocal.getThemeDisplayLocale(),
116                                                                    region.getName());
117                                                    }
118                                            }
119                                            catch (SystemException se) {
120                                            }
121                                    }
122    
123                                    return regionName;
124                            }
125    
126                    };
127    
128            public static final Accessor<UserGroupGroupRole, String>
129                    USER_GROUP_GROUP_ROLE_TITLE_ACCESSOR =
130                            new Accessor<UserGroupGroupRole, String>() {
131    
132                                    @Override
133                                    public String get(UserGroupGroupRole userGroupGroupRole) {
134                                            try {
135                                                    Role role = RoleLocalServiceUtil.fetchRole(
136                                                            userGroupGroupRole.getRoleId());
137    
138                                                    if (role == null) {
139                                                            return StringPool.BLANK;
140                                                    }
141    
142                                                    return role.getTitle(
143                                                            LocaleThreadLocal.getThemeDisplayLocale());
144                                            }
145                                            catch (SystemException se) {
146                                                    return StringPool.BLANK;
147                                            }
148                                    }
149    
150                            };
151    
152            public static final Accessor<UserGroupRole, String>
153                    USER_GROUP_ROLE_TITLE_ACCESSOR =
154                            new Accessor<UserGroupRole, String>() {
155    
156                                    @Override
157                                    public String get(UserGroupRole userGroupRole) {
158                                            try {
159                                                    Role role = RoleLocalServiceUtil.fetchRole(
160                                                            userGroupRole.getRoleId());
161    
162                                                    if (role == null) {
163                                                            return StringPool.BLANK;
164                                                    }
165    
166                                                    return role.getTitle(
167                                                            LocaleThreadLocal.getThemeDisplayLocale());
168                                            }
169                                            catch (SystemException se) {
170                                                    return StringPool.BLANK;
171                                            }
172                                    }
173    
174                            };
175    
176            public void addPortletBreadcrumbEntries(
177                            Organization organization, HttpServletRequest request,
178                            RenderResponse renderResponse)
179                    throws Exception;
180    
181            public long[] addRequiredRoles(long userId, long[] roleIds)
182                    throws PortalException, SystemException;
183    
184            public long[] addRequiredRoles(User user, long[] roleIds)
185                    throws PortalException, SystemException;
186    
187            public List<Role> filterGroupRoles(
188                            PermissionChecker permissionChecker, long groupId, List<Role> roles)
189                    throws PortalException, SystemException;
190    
191            public List<Group> filterGroups(
192                            PermissionChecker permissionChecker, List<Group> groups)
193                    throws PortalException, SystemException;
194    
195            public List<Organization> filterOrganizations(
196                            PermissionChecker permissionChecker,
197                            List<Organization> organizations)
198                    throws PortalException, SystemException;
199    
200            public List<Role> filterRoles(
201                    PermissionChecker permissionChecker, List<Role> roles);
202    
203            public long[] filterUnsetGroupUserIds(
204                            PermissionChecker permissionChecker, long groupId, long[] userIds)
205                    throws PortalException, SystemException;
206    
207            public long[] filterUnsetOrganizationUserIds(
208                            PermissionChecker permissionChecker, long organizationId,
209                            long[] userIds)
210                    throws PortalException, SystemException;
211    
212            public List<UserGroupRole> filterUserGroupRoles(
213                            PermissionChecker permissionChecker,
214                            List<UserGroupRole> userGroupRoles)
215                    throws PortalException, SystemException;
216    
217            public List<UserGroup> filterUserGroups(
218                    PermissionChecker permissionChecker, List<UserGroup> userGroups);
219    
220            public List<Address> getAddresses(ActionRequest actionRequest);
221    
222            public List<Address> getAddresses(
223                    ActionRequest actionRequest, List<Address> defaultAddresses);
224    
225            public List<EmailAddress> getEmailAddresses(ActionRequest actionRequest);
226    
227            public List<EmailAddress> getEmailAddresses(
228                    ActionRequest actionRequest, List<EmailAddress> defaultEmailAddresses);
229    
230            public long[] getGroupIds(PortletRequest portletRequest)
231                    throws PortalException, SystemException;
232    
233            public OrderByComparator getGroupOrderByComparator(
234                    String orderByCol, String orderByType);
235    
236            public Long[] getOrganizationIds(List<Organization> organizations);
237    
238            public long[] getOrganizationIds(PortletRequest portletRequest)
239                    throws PortalException, SystemException;
240    
241            public OrderByComparator getOrganizationOrderByComparator(
242                    String orderByCol, String orderByType);
243    
244            public Tuple getOrganizations(Hits hits)
245                    throws PortalException, SystemException;
246    
247            public List<OrgLabor> getOrgLabors(ActionRequest actionRequest);
248    
249            public List<Phone> getPhones(ActionRequest actionRequest);
250    
251            public List<Phone> getPhones(
252                    ActionRequest actionRequest, List<Phone> defaultPhones);
253    
254            public long[] getRoleIds(PortletRequest portletRequest)
255                    throws PortalException, SystemException;
256    
257            public OrderByComparator getRoleOrderByComparator(
258                    String orderByCol, String orderByType);
259    
260            public <T> String getUserColumnText(
261                    Locale locale, List<T> list, Accessor<T, String> accessor, int count);
262    
263            public long[] getUserGroupIds(PortletRequest portletRequest)
264                    throws PortalException, SystemException;
265    
266            public OrderByComparator getUserGroupOrderByComparator(
267                    String orderByCol, String orderByType);
268    
269            public List<UserGroupRole> getUserGroupRoles(PortletRequest portletRequest)
270                    throws PortalException, SystemException;
271    
272            public Tuple getUserGroups(Hits hits)
273                    throws PortalException, SystemException;
274    
275            public OrderByComparator getUserOrderByComparator(
276                    String orderByCol, String orderByType);
277    
278            public Tuple getUsers(Hits hits) throws PortalException, SystemException;
279    
280            public List<Website> getWebsites(ActionRequest actionRequest);
281    
282            public List<Website> getWebsites(
283                    ActionRequest actionRequest, List<Website> defaultWebsites);
284    
285            /**
286             * @deprecated As of 6.2.0, replaced by {@link
287             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
288             *             String)}
289             */
290            public boolean hasUpdateEmailAddress(
291                            PermissionChecker permissionChecker, User user)
292                    throws PortalException, SystemException;
293    
294            public boolean hasUpdateFieldPermission(
295                            PermissionChecker permissionChecker, User updatingUser,
296                            User updatedUser, String field)
297                    throws PortalException, SystemException;
298    
299            /**
300             * @deprecated As of 6.2.0, replaced by {@link
301             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
302             *             String)}
303             */
304            @Deprecated
305            public boolean hasUpdateFieldPermission(User user, String field)
306                    throws PortalException, SystemException;
307    
308            /**
309             * @deprecated As of 6.2.0, replaced by {@link
310             *             #hasUpdateFieldPermission(PermissionChecker, User, User,
311             *             String)}
312             */
313            public boolean hasUpdateScreenName(
314                            PermissionChecker permissionChecker, User user)
315                    throws PortalException, SystemException;
316    
317            public long[] removeRequiredRoles(long userId, long[] roleIds)
318                    throws PortalException, SystemException;
319    
320            public long[] removeRequiredRoles(User user, long[] roleIds)
321                    throws PortalException, SystemException;
322    
323            public void updateAddresses(
324                            String className, long classPK, List<Address> addresses)
325                    throws PortalException, SystemException;
326    
327            public void updateEmailAddresses(
328                            String className, long classPK, List<EmailAddress> emailAddresses)
329                    throws PortalException, SystemException;
330    
331            public void updateOrgLabors(long classPK, List<OrgLabor> orgLabors)
332                    throws PortalException, SystemException;
333    
334            public void updatePhones(String className, long classPK, List<Phone> phones)
335                    throws PortalException, SystemException;
336    
337            public void updateWebsites(
338                            String className, long classPK, List<Website> websites)
339                    throws PortalException, SystemException;
340    
341    }