java.lang.Object
org.springframework.dao.support.DaoSupport
com.atlassian.confluence.core.persistence.hibernate.HibernateObjectDao<Label>
com.atlassian.confluence.labels.persistence.dao.hibernate.HibernateLabelDao
All Implemented Interfaces:
LabelDaoInternal, LabelDao, org.springframework.beans.factory.InitializingBean

public class HibernateLabelDao extends HibernateObjectDao<Label> implements LabelDaoInternal
  • Constructor Details

    • HibernateLabelDao

      public HibernateLabelDao()
  • Method Details

    • getPersistentClass

      public Class<Label> getPersistentClass()
      Specified by:
      getPersistentClass in class HibernateObjectDao<Label>
    • findById

      public Label findById(long id)
      Description copied from interface: LabelDao
      Find the label by its id.
      Specified by:
      findById in interface LabelDao
      Parameters:
      id - ID of the label
      Returns:
      a label instance, or null if the label does not exist.
    • findByLabel

      public Label findByLabel(Label label)
      Specified by:
      findByLabel in interface LabelDao
    • findByDetails

      public List<Label> findByDetails(String name, String namespace, String owner)
      Description copied from interface: LabelDao
      Find all labels based on the details passed in. If a parameter is null, it will not be considered in the search.

      The list of labels returned will be ordered by name.

      Specified by:
      findByDetails in interface LabelDao
      Parameters:
      name - Label name (can be null)
      namespace - Namespace of the label (can be null)
      owner - Owner of the label (can be null)
      Returns:
      List The list of labels matching the given criteria
    • findByDetailsInSpace

      public List<Label> findByDetailsInSpace(String name, String namespace, String owner, String spaceKey)
      Description copied from interface: LabelDao
      Find all labels for a specific space, based on the details passed in. If a parameter is null, it will not be considered in the search.

      The list of labels returned will be ordered by name.

      Specified by:
      findByDetailsInSpace in interface LabelDao
      Parameters:
      name - Label name (can be null)
      namespace - Namespace of the label (can be null)
      owner - Owner of the label (can be null)
      spaceKey - Key of the space whose content must have the returned labels (can be null)
      Returns:
      List The list of labels matching the given criteria
    • findByDetailsInSpace

      public List<Label> findByDetailsInSpace(String name, String namespace, String owner, String spaceKey, LimitedRequest limitedRequest)
      Description copied from interface: LabelDaoInternal
      Allow to find detail in Space with pagination
      Specified by:
      findByDetailsInSpace in interface LabelDaoInternal
      Returns:
    • getTotalLabelInSpace

      public long getTotalLabelInSpace(String name, String namespace, String owner, String spaceKey)
      Description copied from interface: LabelDaoInternal
      Count total number of label in space
      Specified by:
      getTotalLabelInSpace in interface LabelDaoInternal
      Returns:
    • findByDetailsInSpaces

      public List<Label> findByDetailsInSpaces(String name, String namespace, String owner, Collection<Space> spaces)
      Description copied from interface: LabelDao
      Find all labels for a specific space, based on the details passed in. If a parameter is null, it will not be considered in the search.

      The list of labels returned will be ordered by name.

      Specified by:
      findByDetailsInSpaces in interface LabelDao
      Parameters:
      name - Label name (can be null)
      namespace - Namespace of the label (can be null)
      owner - Owner of the label (can be null)
      spaces - Collection of spaces whose content must have the returned labels (can be null)
      Returns:
      List The list of labels matching the given criteria
    • findBySpace

      public List<Label> findBySpace(String spaceKey, String namespace)
      Description copied from interface: LabelDao
      Find the labels used to label the content with the specified space.
      Specified by:
      findBySpace in interface LabelDao
      Parameters:
      spaceKey - Key of the space whose content must have the returned labels (can be null)
      namespace - Namespace of the label (can be null)
      Returns:
      a list of labels, or an empty list if none exist.
    • findRecentlyUsedBySpace

      public List<Label> findRecentlyUsedBySpace(String spaceKey, int maxResults)
      Specified by:
      findRecentlyUsedBySpace in interface LabelDao
    • findRecentlyUsed

      public List<Label> findRecentlyUsed(int maxResults)
      Specified by:
      findRecentlyUsed in interface LabelDao
    • findRecentlyUsedLabelling

      public List<Labelling> findRecentlyUsedLabelling(int maxResults)
      Specified by:
      findRecentlyUsedLabelling in interface LabelDao
    • findRecentlyUsedLabellingsBySpace

      public List<Labelling> findRecentlyUsedLabellingsBySpace(String spaceKey, int maxResults)
      Specified by:
      findRecentlyUsedLabellingsBySpace in interface LabelDao
    • findRecentlyUsedUserLabels

      public List<Label> findRecentlyUsedUserLabels(String username, int maxResults)
      Specified by:
      findRecentlyUsedUserLabels in interface LabelDao
    • findRecentlyUsedUserLabellings

      public List<Labelling> findRecentlyUsedUserLabellings(String username, int maxResults)
      Specified by:
      findRecentlyUsedUserLabellings in interface LabelDao
    • findMostPopular

      public List<LabelSearchResult> findMostPopular(String namespace, int maxResults)
      Description copied from interface: LabelDao
      Find the most popular labels.

      Label popularity is defined by the number of times a label has been used / applied to content.

      Specified by:
      findMostPopular in interface LabelDao
      maxResults - Maximum size of list to return
      Returns:
      a list of label instances, or an empty list if non exist.
    • findMostPopularBySpace

      public List<LabelSearchResult> findMostPopularBySpace(String namespace, String spaceKey, int maxResults)
      Description copied from interface: LabelDao
      Find the most popular labels in the specified space. You can restrict the number of results returned by this query by setting the maxResults parameter.
      Specified by:
      findMostPopularBySpace in interface LabelDao
      spaceKey - of the space whose content must have the returned labels
      maxResults - allows you to specify the maximum number of results returned by this method. Leaving max results at zero will return all of the results.
      Returns:
      a list of LabelSearchResult objects that map the label to the number of times it appears in the space.
    • findBySingleDegreeSeparation

      public List<Label> findBySingleDegreeSeparation(EditableLabelable content, int maxResults)
      Description copied from interface: LabelDao
      Find the labels that are a single degree of separation away from the specified content.

      This query will retrieve the labels on the given content object and find any content with those labels. The labels that are used on the second "level" of content will be returned.

      e.g. Page H is passed in as the content object, which is labelled with A and B. All pages labelled with A and B are retrieved (J, K, L, M), and the labels on those four pages are returned in order of frequency.

      Specified by:
      findBySingleDegreeSeparation in interface LabelDao
      Parameters:
      content - the content object used to search for related labels
      maxResults - specifies the number of labels to be returned.
      Returns:
      a list of labels, ordered by their frequency of occurance.
    • findBySingleDegreeSeparation

      public List<Label> findBySingleDegreeSeparation(EditableLabelable content, String spaceKey, int maxResults)
      Specified by:
      findBySingleDegreeSeparation in interface LabelDao
    • findBySingleDegreeSeparation

      public List<Label> findBySingleDegreeSeparation(Label label, int maxResults)
      Description copied from interface: LabelDao
      Find the labels that are a single degree of separation away from the specified label.

      This query will return the labels located on the same pages with the given label, in order of frequency

      e.g. Page A has labels ABCX, Page B has labels ABX. A query for X will return A (2 uses) then B (1 use)

      Specified by:
      findBySingleDegreeSeparation in interface LabelDao
      Parameters:
      label - the label to look for on pages
      maxResults - the maximum number of results to return
      Returns:
      a list of labels, ordered by their frequency of occurance.
    • findBySingleDegreeSeparation

      public List<Label> findBySingleDegreeSeparation(Label label, String spaceKey, int maxResults)
      Specified by:
      findBySingleDegreeSeparation in interface LabelDao
    • findAllUserLabelledContent

      public List<? extends EditableLabelable> findAllUserLabelledContent(String username)
      Specified by:
      findAllUserLabelledContent in interface LabelDao
    • findCurrentContentForLabel

      public List<? extends EditableLabelable> findCurrentContentForLabel(Label label)
      Description copied from interface: LabelDao
      Returns current content with the specified label, sorted by last modification date. Items in the trash are not included - for those items use #findContentForLabel(Label).
      Specified by:
      findCurrentContentForLabel in interface LabelDao
      Parameters:
      label - search for content with this label
      Returns:
      current content with the specified label, sorted by last modification date.
    • findContentForLabel

      public List<? extends EditableLabelable> findContentForLabel(Label label, int maxResults)
      Description copied from interface: LabelDao
      Returns content with the specified label, ordered by content id. Items in the trash are included - for only current items use LabelDao.findCurrentContentForLabel(Label).
      Specified by:
      findContentForLabel in interface LabelDao
      Parameters:
      label - search for content with this label
      maxResults - the number of results to return; use -1 to get all results
      Returns:
      content with the specified label
    • findForAllLabels

      public <T extends EditableLabelable> PartialList<T> findForAllLabels(Class<T> labelableClass, int offset, int maxResults, Label... labels)
      Description copied from interface: LabelDao
      Retrieve current EditableLabelables which are labelled with ALL provided labels.
      Specified by:
      findForAllLabels in interface LabelDao
      Parameters:
      labelableClass - the type of EditableLabelable to return. Use one of these values:
      • ContentEntityObject.class - all CEO labelings except Attachments
      • Attachment.class - all attachment labellings
      • PageTemplate.class - all page template labellings
      offset - the offset into the results
      maxResults - the maximum number of results to return
      labels - labels which must appear on ContentEntityObjects
      Returns:
      a partial list of ContentEntityObjects labelled with the labels provided
    • findForAllLabels

      public PartialList<EditableLabelable> findForAllLabels(int offset, int maxResults, Label... labelsArray)
      Description copied from interface: LabelDao
      Retrieve EditableLabelables which are labelled with ALL provided labels.

      If ContentEntityObjects are returned in the list they may be current or in the trash.

      Specified by:
      findForAllLabels in interface LabelDao
      Parameters:
      offset - the offset into the results
      maxResults - the maximum number of results to return
      labelsArray - labels which must appear on ContentEntityObjects
      Returns:
      a partial list of ContentEntityObjects labelled with the labels provided
    • findContentInSpaceForAllLabels

      public PartialList<ContentEntityObject> findContentInSpaceForAllLabels(int offset, int maxResults, String spaceKey, Label... labels)
      Description copied from interface: LabelDao
      Retrieve current ContentEntityObjects in the space which are labelled with ALL provided labels. Does NOT include Attachments
      Specified by:
      findContentInSpaceForAllLabels in interface LabelDao
      Parameters:
      offset - the offset into the results
      maxResults - the maximum number of results to return
      spaceKey - the key of the space to search in
      labels - labels which must appear on ContentEntityObjects
      Returns:
      a partial list of ContentEntityObjects labelled with the labels provided
    • findContentInSpacesForAllLabels

      public PartialList<ContentEntityObject> findContentInSpacesForAllLabels(int offset, int maxResults, Set<String> spaceKeys, Label... labels)
      Description copied from interface: LabelDao
      Retrieve current ContentEntityObjects in the given spaces which are labelled with ALL provided labels. Does NOT include Attachments
      Specified by:
      findContentInSpacesForAllLabels in interface LabelDao
      Parameters:
      offset - the offset into the results
      maxResults - the maximum number of results to return
      spaceKeys - the keys of the spaces to search in
      labels - labels which must appear on ContentEntityObjects
      Returns:
      a partial list of ContentEntityObjects labelled with the labels provided
    • findAllContentForAllLabels

      public PartialList<ContentEntityObject> findAllContentForAllLabels(int offset, int maxResults, Label... labels)
      Description copied from interface: LabelDao
      Retrieve all ContentEntityObjects which are labelled with ALL provided labels. Includes content in the Trash. Does NOT include Attachments
      Specified by:
      findAllContentForAllLabels in interface LabelDao
      Parameters:
      offset - the offset into the results
      maxResults - the maximum number of results to return
      labels - labels which must appear on ContentEntityObjects
      Returns:
      a partial list of ContentEntityObjects labelled with the labels provided
    • findContentCountForLabel

      public int findContentCountForLabel(Label label)
      Specified by:
      findContentCountForLabel in interface LabelDao
    • findCurrentContentForLabelAndSpace

      public List<? extends EditableLabelable> findCurrentContentForLabelAndSpace(Label label, String spaceKey)
      Description copied from interface: LabelDao
      Returns current content with the specified label and spaceKey. If no spaceKey is specified, a search will be performed against the label only.
      Specified by:
      findCurrentContentForLabelAndSpace in interface LabelDao
      Parameters:
      label - search for content with this label
      spaceKey - (optional) search for content belonging to the space with this spaceKey
      Returns:
      current content with the specified label and spaceKey.
    • findSpacesContainingContentWithLabel

      public List<Space> findSpacesContainingContentWithLabel(Label label)
      Specified by:
      findSpacesContainingContentWithLabel in interface LabelDao
    • findSpacesWithLabel

      public List<Space> findSpacesWithLabel(Label label)
      Specified by:
      findSpacesWithLabel in interface LabelDao
    • findLabellingByContentAndLabel

      public Labelling findLabellingByContentAndLabel(EditableLabelable content, Label label)
      Specified by:
      findLabellingByContentAndLabel in interface LabelDao
    • findLabellingById

      public Labelling findLabellingById(long id)
      Specified by:
      findLabellingById in interface LabelDao
    • deleteLabellingBySpace

      public void deleteLabellingBySpace(String key)
      Specified by:
      deleteLabellingBySpace in interface LabelDao
    • getFavouriteSpaces

      public List<Space> getFavouriteSpaces(String username)
      Specified by:
      getFavouriteSpaces in interface LabelDao
      Parameters:
      username - username of label owner
    • findUnusedLabels

      public List<Label> findUnusedLabels()
      Specified by:
      findUnusedLabels in interface LabelDao
    • getFavouriteLabellingsByContentIds

      public List<Labelling> getFavouriteLabellingsByContentIds(Collection<Long> contentIds, com.atlassian.sal.api.user.UserKey userKey)
      Specified by:
      getFavouriteLabellingsByContentIds in interface LabelDao
    • remove

      public void remove(Labelling labelling)
      Specified by:
      remove in interface LabelDao
    • remove

      public void remove(Label label)
      Description copied from class: HibernateObjectDao
      Remove an object from the database
      Specified by:
      remove in interface LabelDao
      Overrides:
      remove in class HibernateObjectDao<Label>
      Parameters:
      label - the object to remove
    • findGlobalLabelsByNamePrefix

      public PageResponse<Label> findGlobalLabelsByNamePrefix(String namePrefix, LimitedRequest pageRequest)
      Description copied from interface: LabelDao
      Returns global-namespaced labels starting with the given string.
      Specified by:
      findGlobalLabelsByNamePrefix in interface LabelDao
    • findTeamLabelsByNamePrefix

      public PageResponse<Label> findTeamLabelsByNamePrefix(String namePrefix, LimitedRequest pageRequest)
      Description copied from interface: LabelDao
      Returns team-namespaced labels starting with the given string.
      Specified by:
      findTeamLabelsByNamePrefix in interface LabelDao
    • setConfluenceUserDao

      public void setConfluenceUserDao(ConfluenceUserDao confluenceUserDao)
    • setPageTemplateDao

      public void setPageTemplateDao(PageTemplateDao pageTemplateDao)
    • setContentEntityObjectDao

      public void setContentEntityObjectDao(ContentEntityObjectDao contentEntityObjectDao)
    • setAttachmentManager

      public void setAttachmentManager(AttachmentManager attachmentManager)