/* * Copyright (C) 2003-2011 eXo Platform SAS. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.exoplatform.social.core.storage.api; import org.chromattic.api.query.QueryBuilder; import org.chromattic.api.query.QueryResult; import org.exoplatform.social.core.chromattic.entity.IdentityEntity; import org.exoplatform.social.core.chromattic.entity.SpaceEntity; import org.exoplatform.social.core.chromattic.entity.SpaceRef; import org.exoplatform.social.core.identity.provider.OrganizationIdentityProvider; import org.exoplatform.social.core.space.SpaceFilter; import org.exoplatform.social.core.space.model.Space; import org.exoplatform.social.core.storage.SpaceStorageException; import org.exoplatform.social.core.storage.exception.NodeNotFoundException; import org.exoplatform.social.core.storage.query.WhereExpression; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; /** * @author <a href="mailto:alain.defrance@exoplatform.com">Alain Defrance</a> * @version $Revision$ */ public interface SpaceStorage { /** * Gets a space by its display name. * * @param spaceDisplayName * @return the space with spaceDisplayName that matches the spaceDisplayName input. * @since 1.2.0-GA * @throws org.exoplatform.social.core.storage.SpaceStorageException */ public Space getSpaceByDisplayName(String spaceDisplayName) throws SpaceStorageException; /** * Saves a space. If isNew is true, creates new space. If not only updates space * an saves it. * * @param space * @param isNew * @throws SpaceStorageException */ public void saveSpace(Space space, boolean isNew) throws SpaceStorageException; /** * Deletes a space by space id. * * @param id * @throws SpaceStorageException */ public void deleteSpace(String id) throws SpaceStorageException; /** * Gets the count of the spaces that a user has the "member" role. * * @param userId * @return the count of the member spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public int getMemberSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the spaces which user has "member" role by filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getMemberSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets the spaces that a user has the "member" role. * * @param userId * @return a list of the member spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getMemberSpaces(String userId) throws SpaceStorageException; /** * Gets the spaces that a user has the "member" role with offset, limit. * * @param userId * @param offset * @param limit * @return a list of the member spaces with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getMemberSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the member spaces of the user id by the filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getMemberSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets the count of the pending spaces of the userId. * * @param userId * @return the count of the pending spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public int getPendingSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the pending spaces of the user by space filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getPendingSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets a user's pending spaces and that the user can revoke that request. * * @param userId * @return a list of the pending spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getPendingSpaces(String userId) throws SpaceStorageException; /** * Gets a user's pending spaces and that the user can revoke that request with offset, limit. * * @param userId * @param offset * @param limit * @return a list of the pending spaces with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getPendingSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the pending spaces of the user by space filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getPendingSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets the count of the invited spaces of the userId. * * @param userId * @return the count of the invited spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public int getInvitedSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the invited spaces of the user by filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getInvitedSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets a user's invited spaces and that user can accept or deny the request. * * @param userId * @return a list of the invited spaces. * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getInvitedSpaces(String userId) throws SpaceStorageException; /** * Gets a user's invited spaces and that user can accept or deny the request with offset, limit. * * @param userId * @param offset * @param limit * @return a list of the invited spaces with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getInvitedSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the invited spaces of the user by space filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getInvitedSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets the count of the public spaces of the userId. * * @param userId * @return the count of the spaces in which the user can request to join * @throws SpaceStorageException * @since 1.2.0-GA */ public int getPublicSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the public spaces of the user by space filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getPublicSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets the public spaces of the user by filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getPublicSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets a user's public spaces and that user can request to join. * * @param userId * @return spaces list in which the user can request to join. * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getPublicSpaces(String userId) throws SpaceStorageException; /** * Gets a user's public spaces and that user can request to join with offset, limit. * * @param userId * @param offset * @param limit * @return spaces list in which the user can request to join with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getPublicSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the count of the accessible spaces of the userId. * * @param userId * @return the count of the accessible spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public int getAccessibleSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the accessible spaces of the user by filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getAccessibleSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets the spaces of a user which that user has the "member" role or edit permission. * * @param userId the userId * @return a list of the accessible spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getAccessibleSpaces(String userId) throws SpaceStorageException; /** * Gets the spaces of a user which that user has "member" role or edit permission with offset, limit. * * @param userId the userId * @param offset * @param limit * @return a list of the accessible space with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getAccessibleSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the accessible spaces of the user by filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getAccessibleSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets the count of the spaces of a user which that user has the edit permission. * * @param userId * @return the count of the editable spaces. * @throws SpaceStorageException * @since 1.2.0-GA */ public int getEditableSpacesCount(String userId) throws SpaceStorageException; /** * Gets the count of the editable spaces of the user by filter. * * @param userId * @param spaceFilter * @return * @since 1.2.0-GA */ public int getEditableSpacesByFilterCount(String userId, SpaceFilter spaceFilter); /** * Gets the spaces of a user which that user has the edit permission. * * @param userId * @return a list of the editable spaces. * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getEditableSpaces(String userId) throws SpaceStorageException; /** * Gets the spaces of a user which that user has the edit permission with offset, limit. * * @param userId * @param offset * @param limit * @return a list of the spaces with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getEditableSpaces(String userId, long offset, long limit) throws SpaceStorageException; /** * Gets the editable spaces of the user by filter with offset, limit. * * @param userId * @param spaceFilter * @param offset * @param limit * @return * @since 1.2.0-GA */ public List<Space> getEditableSpacesByFilter(String userId, SpaceFilter spaceFilter, long offset, long limit); /** * Gets the count of the spaces. * * @return the count of all spaces * @throws SpaceStorageException * @since 1.2.0-GA */ public int getAllSpacesCount() throws SpaceStorageException; /** * Gets all the spaces. By the default get the all spaces with OFFSET = 0, LIMIT = 200; * * @throws SpaceStorageException * @return the list of all spaces */ public List<Space> getAllSpaces() throws SpaceStorageException; /** * Gets the count of the spaces which are searched by space filter. * * @param spaceFilter * @return * @since 1.2.0-GA */ public int getAllSpacesByFilterCount(SpaceFilter spaceFilter); /** * Gets the spaces with offset, limit. * * @param offset * @param limit * @return the list of the spaces with offset, limit * @throws SpaceStorageException * @since 1.2.0-GA */ public List<Space> getSpaces(long offset, long limit) throws SpaceStorageException; /** * Gets the spaces by space filter with offset, limit. * * @param spaceFilter * @param offset * @param limit * @return * @throws SpaceStorageException */ public List<Space> getSpacesByFilter(SpaceFilter spaceFilter, long offset, long limit); /** * Gets a space by its space id. * * @param id * @return space with id specified * @throws SpaceStorageException */ public Space getSpaceById(String id) throws SpaceStorageException; /** * Gets a space by its pretty name. * * @param spacePrettyName * @return the space with spacePrettyName that matches spacePrettyName input. * @throws SpaceStorageException * @since 1.2.0-GA */ public Space getSpaceByPrettyName(String spacePrettyName) throws SpaceStorageException; /** * Gets a space by its associated group id. * * @param groupId * @return the space that has group id matching the groupId string input. * @throws SpaceStorageException * @since 1.2.0-GA */ public Space getSpaceByGroupId(String groupId) throws SpaceStorageException; /** * Gets a space by its url. * * @param url * @return the space with string url specified * @throws SpaceStorageException */ public Space getSpaceByUrl(String url) throws SpaceStorageException; }