Interface FavouritesManager<S extends SharedEntity>

All Known Implementing Classes:
DefaultFavouritesManager

@PublicApi public interface FavouritesManager<S extends SharedEntity>
Manager for basic Favourites functionality. Used for adding, removing and checking favourites of generic entities. It also adjusts favourite counts for entities
Since:
v3.13
  • Method Details

    • addFavourite

      void addFavourite(ApplicationUser user, S entity) throws PermissionException
      Add the given entity as a favourite of the user passed in add to favourites count if necessary.
      Parameters:
      user - The user adding the favourite
      entity - The entity to favourite
      Throws:
      PermissionException - when trying to add a filter as favourite when you have no permissions
    • addFavouriteInPosition

      void addFavouriteInPosition(ApplicationUser user, S entity, long position) throws PermissionException
      Add the given entity as a favourite of the user passed in, in the specified position, add to favourites count if necessary. The entity currently in the specified position and all those after will be moved down one position.
      Parameters:
      user - The user adding the favourite
      entity - The entity to favourite
      position - the position in which this entity should be added in the favourites order.
      Throws:
      PermissionException - when trying to add a filter as favourite when you have no permissions
    • removeFavourite

      void removeFavourite(ApplicationUser user, S entity)
      Remove the given entity as a favourite of the user passed in. Remove even if user doesn't have permission to see it and adjust count of favourites if necessary.
      Parameters:
      user - The user removing the favourite
      entity - The entity to favourite
    • isFavourite

      boolean isFavourite(ApplicationUser user, S entity) throws PermissionException
      Check to see if the given entity is a favourite of the user passed in.
      Parameters:
      user - The user checking the favourite
      entity - The entity to favourite
      Returns:
      true if the entity is favourite and can be seen by user, otherwise false
      Throws:
      PermissionException - when checking a filter with no permission
    • getFavouriteIds

      Collection<Long> getFavouriteIds(ApplicationUser user, SharedEntity.TypeDescriptor<S> entityType)
      Get the ids of a user's favourite Entities for a given entity type
      Parameters:
      user - The user for the associated entities. Can not be null.
      entityType - The type of entities to get. E.g. SearchRequest.ENTITY_TYPE. Can not be null.
      Returns:
      A Collection on Longs that represent the entities, sorted into sequence order
      Throws:
      IllegalArgumentException - for null user or entity type
    • removeFavouritesForUser

      void removeFavouritesForUser(ApplicationUser user, SharedEntity.TypeDescriptor<S> entityType)
      Remove the favourite associations for the given User and the given type
      Parameters:
      user - The ApplicationUser with whom to disassociate entities
      entityType - The type of entity to disassociate user with.
    • removeFavouritesForEntityDelete

      void removeFavouritesForEntityDelete(SharedEntity entity)
      Remove all favourite associations for a given entity for entity deletion. This method is for only for when an entity is deleted as it does not adjust favourite counts.
      Parameters:
      entity - The entity that is being deleted
    • increaseFavouriteSequence

      void increaseFavouriteSequence(ApplicationUser user, S entity) throws PermissionException
      Increases the position of the SharedEntity relative to the user's set of all other entities of the same type.
      Parameters:
      user - the user whom the entity belongs to
      entity - The entity in question
      Throws:
      PermissionException - when the user does not have permission to perform the action.
    • decreaseFavouriteSequence

      void decreaseFavouriteSequence(ApplicationUser user, S entity) throws PermissionException
      Decreases the position of the SharedEntity relative to the user's set of all other entities of the same type.
      Parameters:
      user - the user whom the entity belongs to
      entity - The entity in question
      Throws:
      PermissionException - when the user does not have permission to perform the action.
    • moveToStartFavouriteSequence

      void moveToStartFavouriteSequence(ApplicationUser user, S entity) throws PermissionException
      Moves the position of the SharedEntity to the start relative to the user's set of all other entities of the same type.
      Parameters:
      user - the user whom the entity belongs to
      entity - The entity in question
      Throws:
      PermissionException - when the user does not have permission to perform the action.
    • moveToEndFavouriteSequence

      void moveToEndFavouriteSequence(ApplicationUser user, S entity) throws PermissionException
      Moves the position of the SharedEntity to the end relative to the user's set of all other entities of the same type.
      Parameters:
      user - the user whom the entity belongs to
      entity - The entity in question
      Throws:
      PermissionException - when the user does not have permission to perform the action.