Interface MetadataService


public interface MetadataService
A Service to manage Metadata of any content of any type in eXo Platform. This Service will allow to store additional Metadata to contents without defining additional Services or Storage layers to allow to extends content definition
  • Method Details

    • createMetadata

      Metadata createMetadata(Metadata metadata, long userIdentityId)
      Creates a new Metadata object
      Parameters:
      metadata - Metadata
      userIdentityId - Identity identifier of the creator
      Returns:
      created Metadata
    • updateMetadata

      Metadata updateMetadata(Metadata metadata, long userIdentityId)
      Updates a Metadata object
      Parameters:
      metadata - Metadata
      userIdentityId - Identity identifier of the creator
      Returns:
      updated Metadata
    • deleteMetadataById

      Metadata deleteMetadataById(long metadataId)
      Deletes a Metadata by a given Metadata identifier
      Parameters:
      metadataId - Metadata technical identifier
      Returns:
      Deleted Metadata
    • deleteMetadataBySpaceId

      int deleteMetadataBySpaceId(long spaceId)
      Deletes all MetadataItem by a given Space identifier
      Parameters:
      spaceId - Space technical identifier
      Returns:
      deleted items count
    • deleteMetadataBySpaceIdAndAudienceId

      int deleteMetadataBySpaceIdAndAudienceId(long spaceId, long audienceId)
      Deletes all MetadataItem by a given Space identifier and audience Identity identifier
      Parameters:
      spaceId -
      audienceId -
      Returns:
      deleted items count
    • getMetadataByKey

      Metadata getMetadataByKey(MetadataKey metadataKey)
      Retrieves a Metadata identified by a unique constraint for 'Metadata Type', 'Metadata Name' and 'Metadata Audience'.
      Parameters:
      metadataKey - MetadataKey that contains MetadataType name Metadata name and Metadata audience
      Returns:
      Metadata if found, else null
    • createMetadataItem

      MetadataItem createMetadataItem(MetadataObject metadataObject, MetadataKey metadataKey, long userIdentityId) throws ObjectAlreadyExistsException
      Creates a new Metadata Item. When the metadata with the designated key doesn't exists, it will create a new one
      Parameters:
      metadataObject - object to store
      metadataKey - MetadataKey that contains MetadataType name Metadata name and Metadata audience
      userIdentityId - Identity technical identifier designating the user making the operation
      Returns:
      Created MetadataItem
      Throws:
      ObjectAlreadyExistsException - when the MetadataTypePlugin doesn't allow multiple objects per Metadata and an object is already associated to the designated Metadata
    • createMetadataItem

      MetadataItem createMetadataItem(MetadataObject metadataObject, MetadataKey metadataKey, Map<String,String> properties, long userIdentityId) throws ObjectAlreadyExistsException
      Creates a new Metadata Item. When the metadata with the designated key doesn't exists, it will create a new one
      Parameters:
      metadataObject - object to store
      metadataKey - MetadataKey that contains MetadataType name Metadata name and Metadata audience
      properties - Map properties of MetadataItem
      userIdentityId - Identity technical identifier designating the user making the operation
      Returns:
      Created MetadataItem
      Throws:
      ObjectAlreadyExistsException - when the MetadataTypePlugin doesn't allow multiple objects per Metadata and an object is already associated to the designated Metadata
    • createMetadataItem

      MetadataItem createMetadataItem(MetadataObject metadataObject, MetadataKey metadataKey, Map<String,String> properties) throws ObjectAlreadyExistsException
      Creates a new Metadata Item. When the metadata with the designated key doesn't exists, it will create a new one
      Parameters:
      metadataObject - object to store
      metadataKey - MetadataKey that contains MetadataType name Metadata name and Metadata audience
      properties - Map properties of MetadataItem
      Returns:
      Created MetadataItem
      Throws:
      ObjectAlreadyExistsException - when the MetadataTypePlugin doesn't allow multiple objects per Metadata and an object is already associated to the designated Metadata
    • updateMetadataItem

      MetadataItem updateMetadataItem(MetadataItem metadataItem, long userIdentityId)
      Parameters:
      metadataItem - MetadataItem
      userIdentityId - Identity technical identifier designating the user making the operation
      Returns:
      Deleted MetadataItem
    • deleteMetadataItem

      MetadataItem deleteMetadataItem(long itemId, long userIdentityId) throws org.exoplatform.commons.exception.ObjectNotFoundException
      Parameters:
      itemId - MetadataItem technical identifier
      userIdentityId - Identity technical identifier designating the user making the operation
      Returns:
      Deleted MetadataItem
      Throws:
      org.exoplatform.commons.exception.ObjectNotFoundException - when the MetadataItem isn't found
    • deleteMetadataItem

      MetadataItem deleteMetadataItem(long itemId, boolean broadcast) throws org.exoplatform.commons.exception.ObjectNotFoundException
      Parameters:
      itemId - MetadataItem technical identifier
      broadcast - whether broadcast event after deleting or not
      Returns:
      Deleted MetadataItem
      Throws:
      org.exoplatform.commons.exception.ObjectNotFoundException - when the MetadataItem isn't found
    • deleteMetadataItemsByObject

      void deleteMetadataItemsByObject(MetadataObject object)
      Deletes Metadata items for a given MetadataItem objectId and objectType. This is generally called when the associated object has been removed (activity removed, comment removed ...)
      Parameters:
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
    • deleteByMetadataTypeAndSpaceIdAndCreatorId

      void deleteByMetadataTypeAndSpaceIdAndCreatorId(String metadataTypeName, long spaceId, long userIdentityId)
      Deletes all metadata items by MetadataType and spaceId and audienceId
      Parameters:
      metadataTypeName - MetadataType name
      spaceId - Space id
      userIdentityId - Identity id
    • deleteByMetadataTypeAndCreatorId

      void deleteByMetadataTypeAndCreatorId(String metadataTypeName, long userIdentityId)
      Deletes all metadata items by MetadataType and audienceId
      Parameters:
      metadataTypeName - MetadataType name
      userIdentityId - Identity id
    • deleteMetadataItemsByMetadataTypeAndObject

      void deleteMetadataItemsByMetadataTypeAndObject(String metadataType, MetadataObject object)
      Deletes Metadata items for a given Metadata type, objectId and objectType. This is generally called when the associated object has been removed (activity removed, comment removed ...)
      Parameters:
      metadataType - Metadata type
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
    • shareMetadataItemsByObject

      List<MetadataItem> shareMetadataItemsByObject(MetadataObject sourceObject, String targetObjectId, long audienceId, long creatorId)
      Shares/copy the MetadataItem list of a shared object to the newly created object.
      Parameters:
      sourceObject - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
      targetObjectId - target content that will receive the metadata items
      audienceId - targeted audience Identity identifier
      creatorId - Identity identifier of user sharing object
      Returns:
      newly created MetadataItem associated to targetObjectId
    • getMetadataNamesByObject

      Set<String> getMetadataNamesByObject(MetadataObject object)
      return Set of Metadata names associated to a given object
      Parameters:
      object - MetadataObject used to search items
      Returns:
      Set of Metadata name
    • getMetadataNamesByMetadataTypeAndObject

      List<String> getMetadataNamesByMetadataTypeAndObject(String metadataTypeName, String objectType, String objectId)
      return List of Metadata names associated to a given metadata type, object type and object id. The returned list is sorted descending by id.
      Parameters:
      metadataTypeName -
      objectType -
      objectId -
      Returns:
      List of metadata names
    • getMetadataItemsByObject

      List<MetadataItem> getMetadataItemsByObject(MetadataObject object)
      Retrieves the list of Metadata attached to an object identified by its name and identifier
      Parameters:
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataTypeAndObject

      List<MetadataItem> getMetadataItemsByMetadataTypeAndObject(String metadataType, MetadataObject object)
      Retrieves the list of Metadata items attached to a given Metadata type and an object identified by its name and identifier
      Parameters:
      metadataType - Metadata type
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndObject

      List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndObject(String metadataName, String metadataTypeName, String objectType, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type and MetadataItem object type
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      objectType - objectType MetadataItem objectType
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndObject

      List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndObject(String metadataName, String metadataTypeName, String objectType, String objectId, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type and MetadataItem object type
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      objectType - MetadataItem objectType
      objectId - MetadataItem objectId
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndObjectAndSpaceId

      default List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndObjectAndSpaceId(String metadataName, String metadataTypeName, String objectType, long spaceId, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type and MetadataItem object type and MetadataItem space id
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      objectType - objectType MetadataItem objectType
      spaceId - spaceId MetadataItem spaceId
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndSpaceIds

      default List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndSpaceIds(String metadataName, String metadataTypeName, List<Long> spaceIds, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type and MetadataItem space ids
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      spaceIds - spaceId List of MetadataItem
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndObjectAndSpaceIds

      default List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndObjectAndSpaceIds(String metadataName, String metadataTypeName, String objectType, List<Long> spaceIds, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type and MetadataItem object type and MetadataItem space ids
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      objectType - objectType MetadataItem objectType
      spaceIds - spaceId List of MetadataItem
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataNameAndTypeAndObjectAndMetadataItemProperty

      List<MetadataItem> getMetadataItemsByMetadataNameAndTypeAndObjectAndMetadataItemProperty(String metadataName, String metadataTypeName, String objectType, String propertyKey, String propertyValue, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata name, type, MetadataItem object type and MetadataItem property
      Parameters:
      metadataName - Metadata name
      metadataTypeName - Metadata type name
      objectType - objectType MetadataItem objectType
      propertyKey - MetadataItem property key
      propertyValue - MetadataItem property value
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • getMetadataItemsByMetadataTypeAndCreator

      List<MetadataItem> getMetadataItemsByMetadataTypeAndCreator(String metadataTypeName, long creatorId, long offset, long limit)
      Retrieves the Metadata item attached to a given Metadata type, MetadataItem creatorId
      Parameters:
      metadataTypeName - Metadata type
      creatorId - MetadataItem creatorId
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of linked MetadataItem
    • countMetadataItemsByMetadataTypeAndCreator

      int countMetadataItemsByMetadataTypeAndCreator(String metadataTypeName, long creatorId)
      Count the size of metadata items to a given Metadata type, MetadataItem creatorId
      Parameters:
      metadataTypeName - Metadata type
      creatorId - MetadataItem creatorId
      Returns:
      integer
    • countMetadataItemsByMetadataTypeAndAudienceId

      Map<String,Long> countMetadataItemsByMetadataTypeAndAudienceId(String metadataTypeName, long creatorId, long spaceId)
      Count the size of Metadata items to a given Metadata type, MetadataItem creatorId by a given Space identifier
      Parameters:
      metadataTypeName - Metadata type
      creatorId - MetadataItem creatorId
      spaceId - Space technical identifier
      Returns:
      map of Metadata items grouped by objectId MetadataObject
    • countMetadataItemsByMetadataTypeAndSpacesIdAndCreatorId

      Map<Long,Long> countMetadataItemsByMetadataTypeAndSpacesIdAndCreatorId(String metadataTypeName, long creatorId, List<Long> spaceIds)
      Count the size of Metadata items to a given Metadata type, creatorId MetadataItem by Space technical identifier
      Parameters:
      metadataTypeName - Metadata name
      creatorId - MetadataItem creatorId
      spaceIds - Space technical identifier
      Returns:
      map of Metadata items grouped by space MetadataObject
    • getMetadataItemsByMetadataAndObject

      List<MetadataItem> getMetadataItemsByMetadataAndObject(MetadataKey metadataKey, MetadataObject object)
      Retrieves the list of Metadata items attached to a MetadataKey and an object identified by its name and identifier
      Parameters:
      metadataKey - MetadataKey that contains MetadataType name Metadata name and Metadata audience
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and an objectId (the object technical identifier. In general we use here the DB identifier of the object).
      Returns:
      List of linked MetadataItem
    • getMetadataObjectIds

      List<String> getMetadataObjectIds(String metadataType, String metadataName, String objectType, long offset, long limit)
      Retieves a list of object identifiers switch Metadata type, name and objectType
      Parameters:
      metadataType - Metadata type
      metadataName - Metadata name
      objectType - MetadataItem objectType
      offset - offset of ids to retrieve
      limit - limit of ids to retrieve
      Returns:
      List of associated objects ordered by MetadataItem creationDate desc
    • addMetadataTypePlugin

      void addMetadataTypePlugin(MetadataTypePlugin metadataTypePlugin)
      Registers a new MetadataType
      Parameters:
      metadataTypePlugin - a ComponentPlugin defining MetadataType to register
    • addMetadataPlugin

      void addMetadataPlugin(MetadataInitPlugin metadataInitPlugin)
      Save a new Metadata
      Parameters:
      metadataInitPlugin - a ComponentPlugin defining Metadata to save
    • getMetadataTypePluginByName

      MetadataTypePlugin getMetadataTypePluginByName(String name)
      Retrieves a registered MetadataTypePlugin by name
      Parameters:
      name - MetadataType name
      Returns:
      MetadataTypePlugin
    • getMetadataTypeByName

      MetadataType getMetadataTypeByName(String name)
      Retrieves a registered MetadataType by name
      Parameters:
      name - MetadataType name
      Returns:
      MetadataType
    • getMetadataTypes

      List<MetadataType> getMetadataTypes()
      Returns:
      List of Managed MetadataType
    • getMetadatasByProperty

      List<Metadata> getMetadatasByProperty(String propertyKey, String propertyValue, long limit)
      Parameters:
      propertyKey - Metadata property key
      propertyValue - Metadata property value
      limit - limit of results to retrieve
      Returns:
      List of Managed Metadata by property
    • getMetadatas

      List<Metadata> getMetadatas(String metadataTypeName, long limit)
      Parameters:
      metadataTypeName - metadata name Metadata name
      limit - limit of results to retrieve
      Returns:
      List of Managed Metadata
    • deleteMetadataItemsByParentObject

      void deleteMetadataItemsByParentObject(MetadataObject object)
      Deletes Metadata items for a given MetadataItem parentObjectId and objectType. This is generally called when the associated parent object has been removed (activity removed bu example, its comments metadata items has to be deleted as well)
      Parameters:
      object - MetadataObject that defines an objectType (an object type identifier like, ACTIVITY, COMMENT, NOTE, FILE ...) and a parentObjectId (the object technical identifier. In general we use here the DB identifier of the object).
    • findMetadataNamesByAudiences

      List<String> findMetadataNamesByAudiences(String term, String metadataTypeName, Set<Long> audienceIds, long limit)
      Retrieves a Set of Metadata name matching the given MetadataType and Set of audience Identity ids
      Parameters:
      term - Search query matching Metadata name
      metadataTypeName - MetadataType name
      audienceIds - Set of Identity identifiers
      limit - limit of results to retrieve
      Returns:
      List of Metadata names
    • findMetadataNamesByCreator

      List<String> findMetadataNamesByCreator(String term, String metadataTypeName, long creatorId, long limit)
      Retrieves a Set of Metadata name matching the given MetadataType and Set of audience Identity ids
      Parameters:
      term - Search query matching Metadata name
      metadataTypeName - MetadataType name
      creatorId - Identity identifier of creator
      limit - limit of results to retrieve
      Returns:
      List of Metadata names
    • findMetadataNamesByUserAndQuery

      List<String> findMetadataNamesByUserAndQuery(String term, String metadataTypeName, Set<Long> audienceIds, long creatorId, long limit)
      Retrieves a Set of Metadata name matching the given MetadataType and Set of audience Identity ids
      Parameters:
      term - Search query matching Metadata name
      metadataTypeName - MetadataType name
      audienceIds - Set of Identity identifiers
      creatorId - Identity identifier of creator
      limit - limit of results to retrieve
      Returns:
      List of Metadata names
    • getMetadataItemsByFilter

      default List<MetadataItem> getMetadataItemsByFilter(MetadataFilter filter, long offset, long limit)
      Retrieves Metadata items by MetadataFilter
      Parameters:
      filter - MetadataFilter metadata filter
      offset - offset of items to retrieve
      limit - limit of items to retrieve
      Returns:
      List of linked MetadataItem}