Class CachedSpaceStorage
-
Constructor Summary
ConstructorsConstructorDescriptionCachedSpaceStorage(SpaceDAO spaceDAO, SpaceMemberDAO spaceMemberDAO, org.exoplatform.social.core.storage.api.IdentityStorage identityStorage, IdentityDAO identityDAO, ActivityDAO activityDAO, SpaceExternalInvitationDAO spaceExternalInvitationDAO, SocialStorageCacheService cacheService, org.exoplatform.social.metadata.favorite.FavoriteService favoriteService, org.exoplatform.web.security.security.RemindPasswordTokenService remindPasswordTokenService) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidclearSpaceCached(String spaceId) intcountUserSpaces(String viewerUsername, String profileOwnerUsername, io.meeds.social.space.constant.UserSpacesScope scope) Counts the spaces returned bySpaceStorage.getUserSpaces(String, String, UserSpacesScope, Sorting, long, long).voiddeleteSpace(String id) List<org.exoplatform.social.core.space.model.Space> getAccessibleSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) intgetAccessibleSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) intgetAllSpacesByFilterCount(org.exoplatform.social.core.space.SpaceFilter spaceFilter) Get cached identity storage.List<org.exoplatform.social.core.space.model.Space> getInvitedSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) intgetInvitedSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) List<org.exoplatform.social.core.space.model.Space> getLastAccessedSpace(org.exoplatform.social.core.space.SpaceFilter filter, int offset, int limit) List<org.exoplatform.social.core.space.model.Space> getLastSpaces(int limit) List<org.exoplatform.social.core.space.model.Space> getManagerSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) intgetManagerSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) getMemberRoleSpaceIdentityIds(String identityId, int offset, int limit) getMemberRoleSpaceIds(String identityId, int offset, int limit) List<org.exoplatform.social.core.space.model.Space> getMemberSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) intgetMemberSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) List<org.exoplatform.social.core.space.model.Space> getPendingSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) intgetPendingSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) org.exoplatform.social.core.space.model.SpacegetSpaceByGroupId(String groupId) org.exoplatform.social.core.space.model.SpacegetSpaceById(long id) org.exoplatform.social.core.space.model.SpacegetSpaceByPrettyName(String spacePrettyName) List<org.exoplatform.social.core.space.model.Space> getSpacesByFilter(org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) List<org.exoplatform.social.core.space.model.Space> getUserSpaces(String viewerUsername, String profileOwnerUsername, io.meeds.social.space.constant.UserSpacesScope scope, org.exoplatform.social.core.search.Sorting sorting, long offset, long limit) Lists the spaces where a profile owner has the member role, restricted to what a viewer is allowed to see.intgetVisibleSpacesCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) voidignoreSpace(String spaceId, String userId) voidrenameSpace(org.exoplatform.social.core.space.model.Space space) org.exoplatform.social.core.space.model.SpacesaveSpace(org.exoplatform.social.core.space.model.Space space, boolean isNew) org.exoplatform.social.core.space.model.SpacevoidupdateSpaceAccessed(String remoteId, org.exoplatform.social.core.space.model.Space space) Methods inherited from class org.exoplatform.social.core.jpa.storage.SpaceStorage
countCommonSpaces, countExternalMembers, countPendingSpaceRequestsToManage, deleteExternalUserInvitations, deleteSpaceExternalInvitation, findExternalInvitationsSpacesByEmail, findSpaceExternalInvitationById, findSpaceExternalInvitationsBySpaceId, getAccessibleSpaces, getAccessibleSpaces, getAccessibleSpacesCount, getAllSpaces, getAllSpacesCount, getCommonSpaces, getFavoriteSpaceIdentityIds, getFavoriteSpacesByFilter, getFavoriteSpacesByFilterCount, getInvitedSpaces, getInvitedSpaces, getInvitedSpacesCount, getLastAccessedSpaceCount, getManagerRoleSpaceIds, getManagerSpaces, getManagerSpacesCount, getMemberSpaces, getMemberSpaces, getMemberSpacesCount, getPendingSpaceRequestsToManage, getPendingSpaces, getPendingSpaces, getPendingSpacesCount, getSpaceCategoryIds, getSpaceIdentityIdsByUserRole, getSpaceMembershipDate, getSpaces, getVisibleSpaces, getVisibleSpaces, isSpaceIgnored, normalizeUserSpacesScope, saveSpaceExternalInvitation, setIdentityStorage, validateUserSpacesArguments
-
Constructor Details
-
CachedSpaceStorage
public CachedSpaceStorage(SpaceDAO spaceDAO, SpaceMemberDAO spaceMemberDAO, org.exoplatform.social.core.storage.api.IdentityStorage identityStorage, IdentityDAO identityDAO, ActivityDAO activityDAO, SpaceExternalInvitationDAO spaceExternalInvitationDAO, SocialStorageCacheService cacheService, org.exoplatform.social.metadata.favorite.FavoriteService favoriteService, org.exoplatform.web.security.security.RemindPasswordTokenService remindPasswordTokenService)
-
-
Method Details
-
getCachedIdentityStorage
Get cached identity storage.- Returns:
- Since:
- 1.2.8
-
saveSpace
public org.exoplatform.social.core.space.model.Space saveSpace(org.exoplatform.social.core.space.model.Space space, boolean isNew) - Overrides:
saveSpacein classSpaceStorage
-
saveSpace
public org.exoplatform.social.core.space.model.Space saveSpace(org.exoplatform.social.core.space.model.Space space, Long parentSpaceId, boolean isNew) - Overrides:
saveSpacein classSpaceStorage
-
renameSpace
public void renameSpace(org.exoplatform.social.core.space.model.Space space) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
renameSpacein classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
deleteSpace
- Overrides:
deleteSpacein classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
ignoreSpace
- Overrides:
ignoreSpacein classSpaceStorage
-
getManagerSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getManagerSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getManagerSpacesByFilterin classSpaceStorage
-
getManagerSpacesByFilterCount
public int getManagerSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getManagerSpacesByFilterCountin classSpaceStorage
-
getMemberSpacesByFilterCount
public int getMemberSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getMemberSpacesByFilterCountin classSpaceStorage
-
getMemberSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getMemberSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getMemberSpacesByFilterin classSpaceStorage
-
getUserSpaces
public List<org.exoplatform.social.core.space.model.Space> getUserSpaces(String viewerUsername, String profileOwnerUsername, io.meeds.social.space.constant.UserSpacesScope scope, org.exoplatform.social.core.search.Sorting sorting, long offset, long limit) Lists the spaces where a profile owner has the member role, restricted to what a viewer is allowed to see. The access decision itself belongs to the Service layer: this method only translates an already decided scope into a datastore filter.Only the first page is cached. This listing is the first family of
spacesCachekeyed on a pair of users (owner x viewer x scope), where every other family is keyed on a single one, and the cache is shared: the region is registered outside this repository, inMeeds-io/meeds->webapps/plf-meeds-extension/src/main/webapp/WEB-INF/conf/meeds/cache-configuration.xml, as${meeds.cache.social.SpacesCache.MaxNodes:4000}entries for every space listing of the instance, with no implementation or strategy set, so eviction is FIFO: the oldest entry goes first, however hot it is. Caching the drawer's subsequent pages as well would let profile browsing evict the listings this cache exists for — the home spaces widget, the space directory. Bounding the new family to the page that renders on every profile view is the fallback the specification states for this cardinality (eXIP 7.3.0.18, note 50524 §4).The bypass removes the offset dimension, not the
limitone:ListSpacesKeycompares both, so a caller varyinglimitstill multiplies entries. The widget and the drawer each pass a fixed page size, and the REST endpoint boundslimittoUserSpacesRest.MAX_LIMIT.- Overrides:
getUserSpacesin classSpaceStorage- Parameters:
viewerUsername- remote id of the viewer, mandatory. When it is the profile owner themselves, both scopes list every space they are a member of, hidden ones included — the viewer is a member of all of them by definitionprofileOwnerUsername- remote id of the profile ownerscope- effectiveUserSpacesScope, as decided by the Servicesorting- theSortingto applyoffset- The starting pointlimit- The maximum number of returned results- Returns:
ListofSpace
-
countUserSpaces
public int countUserSpaces(String viewerUsername, String profileOwnerUsername, io.meeds.social.space.constant.UserSpacesScope scope) Counts the spaces returned bySpaceStorage.getUserSpaces(String, String, UserSpacesScope, Sorting, long, long).Cached for every page, unlike the listing above: the count carries neither an offset nor a limit dimension, so it adds at most one entry per (owner, viewer, scope) — and in
social.SpacesCountCache, a budget of its own, separate from the listing cache. It is offered to REST callers through thereturnSizeparameter; no product screen issues it today — the widget displays no total and the "See all" drawer paginates with an extra row instead (eXIP 7.3.0.18, note 50524 §2 query budget). Recomputing it means a fullCOUNT(DISTINCT s.id)over the membership scan, reasoned to be the more expensive of the two — not measured here, the unit suite proves the statement executes, not what it costs.- Overrides:
countUserSpacesin classSpaceStorage- Parameters:
viewerUsername- remote id of the viewer, mandatoryprofileOwnerUsername- remote id of the profile ownerscope- effectiveUserSpacesScope, as decided by the Service- Returns:
- the number of spaces
-
getPendingSpacesByFilterCount
public int getPendingSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getPendingSpacesByFilterCountin classSpaceStorage
-
getPendingSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getPendingSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getPendingSpacesByFilterin classSpaceStorage
-
getInvitedSpacesByFilterCount
public int getInvitedSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getInvitedSpacesByFilterCountin classSpaceStorage
-
getInvitedSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getInvitedSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getInvitedSpacesByFilterin classSpaceStorage
-
getAccessibleSpacesByFilterCount
public int getAccessibleSpacesByFilterCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getAccessibleSpacesByFilterCountin classSpaceStorage
-
getVisibleSpacesCount
public int getVisibleSpacesCount(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getVisibleSpacesCountin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getAccessibleSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getAccessibleSpacesByFilter(String userId, org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getAccessibleSpacesByFilterin classSpaceStorage
-
getAllSpacesByFilterCount
public int getAllSpacesByFilterCount(org.exoplatform.social.core.space.SpaceFilter spaceFilter) - Overrides:
getAllSpacesByFilterCountin classSpaceStorage
-
getSpacesByFilter
public List<org.exoplatform.social.core.space.model.Space> getSpacesByFilter(org.exoplatform.social.core.space.SpaceFilter spaceFilter, long offset, long limit) - Overrides:
getSpacesByFilterin classSpaceStorage
-
getSpaceById
public org.exoplatform.social.core.space.model.Space getSpaceById(long id) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getSpaceByIdin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getSpaceByPrettyName
public org.exoplatform.social.core.space.model.Space getSpaceByPrettyName(String spacePrettyName) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getSpaceByPrettyNamein classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getSpaceByGroupId
public org.exoplatform.social.core.space.model.Space getSpaceByGroupId(String groupId) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getSpaceByGroupIdin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
updateSpaceAccessed
public void updateSpaceAccessed(String remoteId, org.exoplatform.social.core.space.model.Space space) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
updateSpaceAccessedin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getLastAccessedSpace
public List<org.exoplatform.social.core.space.model.Space> getLastAccessedSpace(org.exoplatform.social.core.space.SpaceFilter filter, int offset, int limit) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getLastAccessedSpacein classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getLastSpaces
- Overrides:
getLastSpacesin classSpaceStorage
-
getMemberRoleSpaceIdentityIds
public List<String> getMemberRoleSpaceIdentityIds(String identityId, int offset, int limit) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getMemberRoleSpaceIdentityIdsin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
getMemberRoleSpaceIds
public List<String> getMemberRoleSpaceIds(String identityId, int offset, int limit) throws org.exoplatform.social.core.storage.SpaceStorageException - Overrides:
getMemberRoleSpaceIdsin classSpaceStorage- Throws:
org.exoplatform.social.core.storage.SpaceStorageException
-
countSpacesByTemplate
- Overrides:
countSpacesByTemplatein classSpaceStorage
-
clearSpaceCached
-
clearCaches
public void clearCaches()
-