/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portal.kernel.service; import aQute.bnd.annotation.ProviderType; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.jsonwebservice.JSONWebService; import com.liferay.portal.kernel.model.Group; import com.liferay.portal.kernel.model.Organization; import com.liferay.portal.kernel.model.Portlet; import com.liferay.portal.kernel.model.UserGroup; import com.liferay.portal.kernel.security.access.control.AccessControlled; import com.liferay.portal.kernel.transaction.Isolation; import com.liferay.portal.kernel.transaction.Propagation; import com.liferay.portal.kernel.transaction.Transactional; import com.liferay.portal.kernel.util.OrderByComparator; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; /** * Provides the remote service interface for Group. Methods of this * service are expected to have security checks based on the propagated JAAS * credentials because this service can be accessed remotely. * * @author Brian Wing Shun Chan * @see GroupServiceUtil * @see com.liferay.portal.service.base.GroupServiceBaseImpl * @see com.liferay.portal.service.impl.GroupServiceImpl * @generated */ @AccessControlled @JSONWebService @ProviderType @Transactional(isolation = Isolation.PORTAL, rollbackFor = { PortalException.class, SystemException.class}) public interface GroupService extends BaseService { /* * NOTE FOR DEVELOPERS: * * Never modify or reference this interface directly. Always use {@link GroupServiceUtil} to access the group remote service. Add custom service methods to {@link com.liferay.portal.service.impl.GroupServiceImpl} and rerun ServiceBuilder to automatically copy the method declarations to this interface. */ /** * Returns <code>true</code> if the user is associated with the group, * including the user's inherited organizations and user groups. System and * staged groups are not included. * * @param userId the primary key of the user * @param groupId the primary key of the group * @return <code>true</code> if the user is associated with the group; <code>false</code> otherwise * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public boolean hasUserGroup(long userId, long groupId) throws PortalException; /** * Adds a group. * * @param parentGroupId the primary key of the parent group * @param liveGroupId the primary key of the live group * @param name the entity's name * @param description the group's description (optionally <code>null</code>) * @param type the group's type. For more information see {@link GroupConstants}. * @param manualMembership whether manual membership is allowed for the group * @param membershipRestriction the group's membership restriction. For more information see {@link GroupConstants}. * @param friendlyURL the group's friendlyURL (optionally <code>null</code>) * @param site whether the group is to be associated with a main site * @param active whether the group is active * @param serviceContext the service context to be applied (optionally <code>null</code>). Can set the asset category IDs and asset tag names for the group, and can set whether the group is for staging * @return the group * @throws PortalException if a portal exception occurred * @deprecated As of 7.0.0, replaced by {@link #addGroup(long, long, Map, Map, int, boolean, int, String, boolean, boolean, ServiceContext)} */ @java.lang.Deprecated public Group addGroup(long parentGroupId, long liveGroupId, java.lang.String name, java.lang.String description, int type, boolean manualMembership, int membershipRestriction, java.lang.String friendlyURL, boolean site, boolean active, ServiceContext serviceContext) throws PortalException; public Group addGroup(long parentGroupId, long liveGroupId, Map<Locale, java.lang.String> nameMap, Map<Locale, java.lang.String> descriptionMap, int type, boolean manualMembership, int membershipRestriction, java.lang.String friendlyURL, boolean site, boolean active, ServiceContext serviceContext) throws PortalException; public Group addGroup(long parentGroupId, long liveGroupId, Map<Locale, java.lang.String> nameMap, Map<Locale, java.lang.String> descriptionMap, int type, boolean manualMembership, int membershipRestriction, java.lang.String friendlyURL, boolean site, boolean inheritContent, boolean active, ServiceContext serviceContext) throws PortalException; /** * Returns the company group. * * @param companyId the primary key of the company * @return the group associated with the company * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public Group getCompanyGroup(long companyId) throws PortalException; /** * Returns the group with the name. * * @param companyId the primary key of the company * @param groupKey the group key * @return the group with the group key * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public Group getGroup(long companyId, java.lang.String groupKey) throws PortalException; /** * Returns the group with the primary key. * * @param groupId the primary key of the group * @return the group with the primary key * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public Group getGroup(long groupId) throws PortalException; /** * Returns the group directly associated with the user. * * @param companyId the primary key of the company * @param userId the primary key of the user * @return the group directly associated with the user * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public Group getUserGroup(long companyId, long userId) throws PortalException; /** * Updates the group's friendly URL. * * @param groupId the primary key of the group * @param friendlyURL the group's new friendlyURL (optionally <code>null</code>) * @return the group * @throws PortalException if a portal exception occurred */ public Group updateFriendlyURL(long groupId, java.lang.String friendlyURL) throws PortalException; /** * Updates the group's type settings. * * @param groupId the primary key of the group * @param typeSettings the group's new type settings (optionally <code>null</code>) * @return the group * @throws PortalException if a portal exception occurred */ public Group updateGroup(long groupId, java.lang.String typeSettings) throws PortalException; /** * Updates the group. * * @param groupId the primary key of the group * @param parentGroupId the primary key of the parent group * @param name the group's name * @param description the group's new description (optionally <code>null</code>) * @param type the group's new type. For more information see {@link GroupConstants}. * @param manualMembership whether manual membership is allowed for the group * @param membershipRestriction the group's membership restriction. For more information see {@link GroupConstants}. * @param friendlyURL the group's new friendlyURL (optionally <code>null</code>) * @param inheritContent whether to inherit content from the parent group * @param active whether the group is active * @param serviceContext the service context to be applied (optionally <code>null</code>). Can set the asset category IDs and asset tag names for the group. * @return the group * @throws PortalException if a portal exception occurred * @deprecated As of 7.0.0, replaced by {@link #updateGroup(long, long, Map, Map, int, boolean, int, String, boolean, boolean, ServiceContext)} */ @java.lang.Deprecated public Group updateGroup(long groupId, long parentGroupId, java.lang.String name, java.lang.String description, int type, boolean manualMembership, int membershipRestriction, java.lang.String friendlyURL, boolean inheritContent, boolean active, ServiceContext serviceContext) throws PortalException; public Group updateGroup(long groupId, long parentGroupId, Map<Locale, java.lang.String> nameMap, Map<Locale, java.lang.String> descriptionMap, int type, boolean manualMembership, int membershipRestriction, java.lang.String friendlyURL, boolean inheritContent, boolean active, ServiceContext serviceContext) throws PortalException; /** * Returns the number of the guest or current user's groups * "sites" associated with the group entity class names, including * the Control Panel group if the user is permitted to view the Control * Panel. * * @return the number of user's groups "sites" * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public int getUserSitesGroupsCount() throws PortalException; /** * Returns the number of groups and organization groups that match the name * and description, optionally including the user's inherited organizations * and user groups. System and staged groups are not included. * * @param companyId the primary key of the company * @param name the group's name (optionally <code>null</code>) * @param description the group's description (optionally <code>null</code>) * @param params the finder params (optionally <code>null</code>). To include the user's inherited organizations and user groups in the search, add entries having "usersGroups" and "inherit" as keys mapped to the the user's ID. For more information see {@link com.liferay.portal.kernel.service.persistence.GroupFinder}. * @return the number of matching groups */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public int searchCount(long companyId, java.lang.String name, java.lang.String description, java.lang.String[] params); /** * Returns the group's display URL. * * @param groupId the primary key of the group * @param privateLayout whether the layout set is private to the group * @param secureConnection whether the generated URL uses a secure connection * @return the group's display URL * @throws PortalException if a group with the primary key could not be found or if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public java.lang.String getGroupDisplayURL(long groupId, boolean privateLayout, boolean secureConnection) throws PortalException; /** * Returns the OSGi service identifier. * * @return the OSGi service identifier */ public java.lang.String getOSGiServiceIdentifier(); /** * Returns all the groups that are direct children of the parent group. * * @param companyId the primary key of the company * @param parentGroupId the primary key of the parent group * @param site whether the group is to be associated with a main site * @return the matching groups, or <code>null</code> if no matches were found * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getGroups(long companyId, long parentGroupId, boolean site) throws PortalException; /** * Returns a range of all the site groups for which the user has control * panel access. * * @param portlets the portlets to manage * @param max the upper bound of the range of groups to consider (not inclusive) * @return the range of site groups for which the user has Control Panel access * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getManageableSiteGroups(Collection<Portlet> portlets, int max) throws PortalException; /** * Returns the groups associated with the organizations. * * @param organizations the organizations * @return the groups associated with the organizations * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getOrganizationsGroups(List<Organization> organizations) throws PortalException; /** * Returns the groups associated with the user groups. * * @param userGroups the user groups * @return the groups associated with the user groups * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getUserGroupsGroups(List<UserGroup> userGroups) throws PortalException; /** * Returns the range of all groups associated with the user's organization * groups, including the ancestors of the organization groups, unless portal * property <code>organizations.membership.strict</code> is set to * <code>true</code>. * * <p> * Useful when paginating results. Returns a maximum of <code>end - * start</code> instances. <code>start</code> and <code>end</code> are not * primary keys, they are indexes in the result set. Thus, <code>0</code> * refers to the first result in the set. Setting both <code>start</code> * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full * result set. * </p> * * @param userId the primary key of the user * @param start the lower bound of the range of groups to consider * @param end the upper bound of the range of groups to consider (not inclusive) * @return the range of groups associated with the user's organizations * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getUserOrganizationsGroups(long userId, int start, int end) throws PortalException; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getUserSitesGroups() throws PortalException; /** * Returns the guest or current user's groups "sites" associated * with the group entity class names, including the Control Panel group if * the user is permitted to view the Control Panel. * * <ul> * <li> * Class name "User" includes the user's layout set * group. * </li> * <li> * Class name "Organization" includes the user's * immediate organization groups and inherited organization groups. * </li> * <li> * Class name "Group" includes the user's immediate * organization groups and site groups. * </li> * <li> * A <code>classNames</code> * value of <code>null</code> includes the user's layout set group, * organization groups, inherited organization groups, and site groups. * </li> * </ul> * * @param classNames the group entity class names (optionally <code>null</code>). For more information see {@link #getUserSitesGroups(long, String[], int)}. * @param max the maximum number of groups to return * @return the user's groups "sites" * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getUserSitesGroups(java.lang.String[] classNames, int max) throws PortalException; /** * Returns the user's groups "sites" associated with the group * entity class names, including the Control Panel group if the user is * permitted to view the Control Panel. * * <ul> * <li> * Class name "User" includes the user's layout set * group. * </li> * <li> * Class name "Organization" includes the user's * immediate organization groups and inherited organization groups. * </li> * <li> * Class name "Group" includes the user's immediate * organization groups and site groups. * </li> * <li> * A <code>classNames</code> * value of <code>null</code> includes the user's layout set group, * organization groups, inherited organization groups, and site groups. * </li> * </ul> * * @param userId the primary key of the user * @param classNames the group entity class names (optionally <code>null</code>). For more information see {@link #getUserSitesGroups(long, String[], int)}. * @param max the maximum number of groups to return * @return the user's groups "sites" * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> getUserSitesGroups(long userId, java.lang.String[] classNames, int max) throws PortalException; /** * Returns an ordered range of all the site groups and organization groups * that match the name and description, optionally including the user's * inherited organization groups and user groups. System and staged groups * are not included. * * <p> * Useful when paginating results. Returns a maximum of <code>end - * start</code> instances. <code>start</code> and <code>end</code> are not * primary keys, they are indexes in the result set. Thus, <code>0</code> * refers to the first result in the set. Setting both <code>start</code> * and <code>end</code> to {@link QueryUtil#ALL_POS} will return the full * result set. * </p> * * @param companyId the primary key of the company * @param name the group's name (optionally <code>null</code>) * @param description the group's description (optionally <code>null</code>) * @param params the finder params (optionally <code>null</code>). To include the user's inherited organizations and user groups in the search, add entries having "usersGroups" and "inherit" as keys mapped to the the user's ID. For more information see {@link com.liferay.portal.kernel.service.persistence.GroupFinder}. * @param start the lower bound of the range of groups to return * @param end the upper bound of the range of groups to return (not inclusive) * @return the matching groups ordered by name * @throws PortalException if a portal exception occurred */ @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> search(long companyId, java.lang.String name, java.lang.String description, java.lang.String[] params, int start, int end) throws PortalException; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> search(long companyId, long[] classNameIds, java.lang.String keywords, LinkedHashMap<java.lang.String, java.lang.Object> params, int start, int end, OrderByComparator<Group> obc) throws PortalException; @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public List<Group> search(long companyId, long[] classNameIds, java.lang.String name, java.lang.String description, LinkedHashMap<java.lang.String, java.lang.Object> params, boolean andOperator, int start, int end, OrderByComparator<Group> obc) throws PortalException; /** * Adds the groups to the role. * * @param roleId the primary key of the role * @param groupIds the primary keys of the groups * @throws PortalException if a portal exception occurred */ public void addRoleGroups(long roleId, long[] groupIds) throws PortalException; /** * Checks that the current user is permitted to use the group for Remote * Staging. * * @param groupId the primary key of the group * @throws PortalException if a portal exception occurred */ public void checkRemoteStagingGroup(long groupId) throws PortalException; /** * Deletes the group. * * <p> * The group is unstaged and its assets and resources including layouts, * membership requests, subscriptions, teams, blogs, bookmarks, calendar * events, image gallery, journals, message boards, polls, shopping related * entities, and wikis are also deleted. * </p> * * @param groupId the primary key of the group * @throws PortalException if a portal exception occurred */ public void deleteGroup(long groupId) throws PortalException; public void disableStaging(long groupId) throws PortalException; public void enableStaging(long groupId) throws PortalException; /** * Sets the groups associated with the role, removing and adding * associations as necessary. * * @param roleId the primary key of the role * @param groupIds the primary keys of the groups * @throws PortalException if a portal exception occurred */ public void setRoleGroups(long roleId, long[] groupIds) throws PortalException; /** * Removes the groups from the role. * * @param roleId the primary key of the role * @param groupIds the primary keys of the groups * @throws PortalException if a portal exception occurred */ public void unsetRoleGroups(long roleId, long[] groupIds) throws PortalException; public void updateStagedPortlets(long groupId, Map<java.lang.String, java.lang.String> stagedPortletIds) throws PortalException; }