Class DefaultPageManager

java.lang.Object
com.atlassian.confluence.impl.content.DefaultContentEntityManager
com.atlassian.confluence.impl.content.DefaultPageManager
All Implemented Interfaces:
ContentEntityManager, ContentDraftManagerInternal, ContentEntityManagerInternal, PageManagerInternal, PageManager

@ParametersAreNonnullByDefault public class DefaultPageManager extends DefaultContentEntityManager implements PageManagerInternal
Since:
7.15
  • Field Details

  • Constructor Details

  • Method Details

    • createDraft

      public AbstractPage createDraft(String contentType, String spaceKey)
      Description copied from interface: PageManagerInternal
      This method creates a draft
      Specified by:
      createDraft in interface PageManagerInternal
      Parameters:
      contentType - - content type of the draft to create: page or blogpost
      spaceKey - - space key of the space to create the draft into
      Returns:
      the obj created as draft
      See Also:
    • createDraft

      public AbstractPage createDraft(String contentType, String spaceKey, long parentPageId)
      Description copied from interface: PageManagerInternal
      This method creates a draft. The draft is created as a child of the parentPage
      Specified by:
      createDraft in interface PageManagerInternal
      Parameters:
      contentType - - content type of the draft to create: page or blogpost
      spaceKey - - space key of the space to create the draft into
      parentPageId - - parent page ID of the newly created draft
      Returns:
      the obj created as draft
    • createOrFindDraftFor

      public AbstractPage createOrFindDraftFor(@NonNull AbstractPage page)
      Description copied from interface: PageManagerInternal
      Retrieves the draft for the given AbstractPage if exists.
      Specified by:
      createOrFindDraftFor in interface PageManagerInternal
      Parameters:
      page - the AbstractPage to retrieve the draft for
      Returns:
      the draft for the given AbstractPage if exists, null otherwise
      See Also:
    • renamePage

      public void renamePage(AbstractPage page, String newPageTitle)
      Description copied from interface: PageManager
      Call this function if you want to rename the page only. If you want to update not only the title, but the content and other attributes, modify the entity and call save instead.
      Specified by:
      renamePage in interface PageManager
      Parameters:
      page - to rename
      newPageTitle - new title for page
    • renamePageWithoutNotifications

      public void renamePageWithoutNotifications(AbstractPage page, String newPageTitle)
      Description copied from interface: PageManager
      Call this function if you want to rename the page only, and don't want notifications generated. If you want to update not only the title, but the content and other attributes, modify the entity and call save instead.
      Specified by:
      renamePageWithoutNotifications in interface PageManager
      Parameters:
      page - to rename
      newPageTitle - new title for page
    • getBlogPosts

      public @NonNull List<BlogPost> getBlogPosts(Space space, boolean currentOnly)
      Specified by:
      getBlogPosts in interface PageManager
    • getPossibleRedirectsInSpace

      public @NonNull List<AbstractPage> getPossibleRedirectsInSpace(Space space, String pageTitle, int maxResultCount)
      Description copied from interface: PageManager
      Searches for pages in the space specified, looking for those that have the given title in a previous version.
      Specified by:
      getPossibleRedirectsInSpace in interface PageManager
      Parameters:
      space - Space to search. Must not be null.
      pageTitle - title of a page in a previous version.
      maxResultCount - maximum pages to return
    • getPossibleBlogRedirectsInSpace

      public @NonNull List<AbstractPage> getPossibleBlogRedirectsInSpace(Space space, String blogTitle, int maxResultCount)
      Description copied from interface: PageManager
      Searches for blogs in the space specified, looking for those that have the given title in a previous version.
      Specified by:
      getPossibleBlogRedirectsInSpace in interface PageManager
      Parameters:
      space - Space to search. Must not be null.
      blogTitle - title of a blog in a previous version.
      maxResultCount - maximum blogs to return
    • getPossibleBlogRedirectsNotInSpace

      public @NonNull List<AbstractPage> getPossibleBlogRedirectsNotInSpace(Space space, String blogTitle, int maxResultCount)
      Description copied from interface: PageManager
      Searches for pages in all spaces except the one specified, looking for those that have the given title in a previous version.
      Specified by:
      getPossibleBlogRedirectsNotInSpace in interface PageManager
      Parameters:
      space - Space to exclude from search. If null, all spaces are searched.
      blogTitle - title of a blog post to locate
      maxResultCount - maximum blog posts to return
    • getPossibleRedirectsNotInSpace

      public @NonNull List<AbstractPage> getPossibleRedirectsNotInSpace(Space space, String pageTitle, int maxResultCount)
      Description copied from interface: PageManager
      Searches for pages in all spaces except the one specified, looking for those that have the given title in a previous version.
      Specified by:
      getPossibleRedirectsNotInSpace in interface PageManager
      Parameters:
      space - Space to exclude from search. If null, all spaces are searched.
      pageTitle - title of a page in a previous version.
      maxResultCount - maximum pages to return
    • getRecentlyAddedBlogPosts

      public @NonNull List getRecentlyAddedBlogPosts(int maxPosts, @Nullable Date timeSince, String spaceKey)
      Specified by:
      getRecentlyAddedBlogPosts in interface PageManager
    • getPage

      public @Nullable Page getPage(long id)
      Description copied from interface: PageManager
      Retrieve the page with the given content ID.
      Specified by:
      getPage in interface PageManager
      Parameters:
      id - the database content ID for the page to return
      Returns:
      the page with that id, or null if the page could not be found (or the object with that id is not a page)
    • getPages

      public @NonNull List<Page> getPages(Iterable<Long> ids)
      Description copied from interface: PageManager
      Retrieve a collection of pages with the given content IDs.
      Specified by:
      getPages in interface PageManager
      Parameters:
      ids - an Iterable of content IDs for the pages to return
      Returns:
      pages found with those ids, or an empty list if no pages were found
    • getAbstractPage

      public @Nullable AbstractPage getAbstractPage(long id)
      Description copied from interface: PageManager
      Retrieve the AbstractPage subclass with the given content ID. This will return either a page or a blogpost, depending on the type of the database entity.
      Specified by:
      getAbstractPage in interface PageManager
      Parameters:
      id - the database content ID for the page to return
      Returns:
      the abstractpage with that id, or null if there is no AbstractPage with that ID.
    • getAbstractPages

      public @NonNull List<AbstractPage> getAbstractPages(Iterable<Long> ids)
      Description copied from interface: PageManager
      Retrieve a collection of the AbstractPage subclass with the given content IDs. This can contain both pages or a blogposts, depending on the type of the database entity.
      Specified by:
      getAbstractPages in interface PageManager
      Parameters:
      ids - an Iterable of content IDs for the pages or blogposts to return
      Returns:
      pages and blogposts found with those ids, or an empty list if none was found.
    • getById

      public @Nullable AbstractPage getById(long id)
      Override default implementation to explicitly return an AbstractPage.
      Specified by:
      getById in interface ContentEntityManager
      Overrides:
      getById in class DefaultContentEntityManager
      Returns:
      an AbstractPage with the given id.
    • getBlogPost

      public @Nullable BlogPost getBlogPost(long id)
      Description copied from interface: PageManager
      Retrieve the blog post with the given content ID.
      Specified by:
      getBlogPost in interface PageManager
      Parameters:
      id - the database content ID for the blog post to return
      Returns:
      the page with that id, or null if the post could not be found (or the object with that id is not a blog post)
    • getPage

      public @Nullable Page getPage(String spaceKey, String pageTitle)
      Description copied from interface: PageManager
      Retrieve the latest version of a page by its space key and title. Pages that are not current (i.e. in the trash) will not be returned.

      Both the space key and page title matches are case-insensitive.

      Specified by:
      getPage in interface PageManager
      Returns:
      the page specified by the spaceKey and pageTitle, or null if the page cannot be found, or is in the trash.
    • getPageWithComments

      public @Nullable Page getPageWithComments(String spaceKey, String pageTitle)
      Description copied from interface: PageManager
      Retrieve the latest version of a page by its space key and title. Pages that are not current (i.e. in the trash) will not be returned. This method will eager load comments for the page.

      Both the space key and page title matches are case-insensitive.

      Specified by:
      getPageWithComments in interface PageManager
      Returns:
      the page specified by the spaceKey and pageTitle, or null if the page cannot be found, or is in the trash.
    • getFilteredAbstractPagesByTitle

      @Deprecated public @NonNull PageResponse<AbstractPage> getFilteredAbstractPagesByTitle(String title, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Description copied from interface: PageManagerInternal
      Returns all current pages and blog posts that exactly match the given title, that also match the given predicate, limited to the pagination request.
      Specified by:
      getFilteredAbstractPagesByTitle in interface PageManagerInternal
      Parameters:
      title - the title of the page or blog post to match
      pageRequest - the pagination requested
      filter - a predicate to apply to the results before returning
      Returns:
      the paginated list of AbstractPages by title
    • getFilteredAbstractPages

      @Deprecated public @NonNull PageResponse<AbstractPage> getFilteredAbstractPages(List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Description copied from interface: PageManagerInternal
      Returns all content in the instance within any of the specified statuses, limited to the specified content types and the pagination request.
      Specified by:
      getFilteredAbstractPages in interface PageManagerInternal
      Parameters:
      contentTypes - types of the content to fetch, pages and or blog posts
      statuses - list of statuses the content can be in
      pageRequest - the pagination requested
      filter - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities in the given space
    • getFilteredAbstractPages

      @Deprecated public @NonNull PageResponse<AbstractPage> getFilteredAbstractPages(Space space, List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Description copied from interface: PageManagerInternal
      Returns all content in the space within any of the specified statuses and content types, limited to the pagination request.
      Specified by:
      getFilteredAbstractPages in interface PageManagerInternal
      Parameters:
      space - the space to locate pages in
      contentTypes - types of the content to fetch, pages and or blog posts
      statuses - list of statuses the content can be in
      pageRequest - the pagination requested
      filter - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities in the given space
    • getAbstractPages

      public PageResponse<AbstractPage> getAbstractPages(LocalDate creationDay, ZoneId zone, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Specified by:
      getAbstractPages in interface PageManagerInternal
    • getFilteredAbstractPages

      @Deprecated public @NonNull PageResponse<AbstractPage> getFilteredAbstractPages(Space space, String title, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Description copied from interface: PageManagerInternal
      Returns pages and blog posts that belong to the space, exactly match the given title, are in any of the specified statuses, and match the given predicate, limited to the pagination request.
      Specified by:
      getFilteredAbstractPages in interface PageManagerInternal
      Parameters:
      space - space the content belongs to
      title - the title of the page to match
      statuses - list of statuses the content can be in
      pageRequest - the pagination requested
      filter - a Predicate to apply to the results before returning
      Returns:
      the paginated list of AbstractPages that have a title, are in the specified statuses, and belong to the given space
    • getFilteredAbstractPages

      @Deprecated public @NonNull PageResponse<AbstractPage> getFilteredAbstractPages(String title, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super AbstractPage>... filter)
      Description copied from interface: PageManagerInternal
      Returns pages and blog posts that exactly match the given title, are in any of the specified statuses, and match the given predicate, limited to the pagination request.
      Specified by:
      getFilteredAbstractPages in interface PageManagerInternal
      Parameters:
      title - the title of the page to match
      statuses - list of statuses the content can be in
      pageRequest - the pagination requested
      filter - a predicate to apply to the results before returning
      Returns:
      the paginated list of AbstractPages by title
    • findContentPermissionSummaryByIds

      public List<ContentPermissionSummary> findContentPermissionSummaryByIds(Collection<Long> ids)
      Description copied from interface: PageManagerInternal
      Get ContentPermissionSummary for bulk permission checking
      Specified by:
      findContentPermissionSummaryByIds in interface PageManagerInternal
      Parameters:
      ids - of Content
      Returns:
      List of ContentPermissionSummary
    • getCommentCountOnPage

      public int getCommentCountOnPage(long pageId)
      Description copied from interface: PageManager
      Counts the number of comments on the page specified by the given id.
      Specified by:
      getCommentCountOnPage in interface PageManager
      Parameters:
      pageId - the id to check for comments on
      Returns:
      a count of the total number of comments on this page
    • getCommentCountOnBlog

      public int getCommentCountOnBlog(long blogId)
      Description copied from interface: PageManager
      Counts the number of comments on the blogpost specified by the given id.
      Specified by:
      getCommentCountOnBlog in interface PageManager
      Parameters:
      blogId - the id to check for comments on
      Returns:
      a count of the total number of comments on this blogpost
    • getPageInTrash

      public @NonNull List getPageInTrash(String spaceKey, String title)
      Specified by:
      getPageInTrash in interface PageManager
    • getBlogPostsInTrash

      public @NonNull List<BlogPost> getBlogPostsInTrash(String spaceKey, String title)
      Description copied from interface: PageManager
      Gets a blog post that is in the trash for a given space that matches the given title.
      Specified by:
      getBlogPostsInTrash in interface PageManager
      Parameters:
      spaceKey - The space key (case-insensitive) in which to look for the blog
      title - The title (case-insensitive) of the blog to look for
      Returns:
      a list of blog posts in the trash that have the given title and space key.
    • spaceHasBlogPosts

      public boolean spaceHasBlogPosts(String spaceKey)
      Specified by:
      spaceHasBlogPosts in interface PageManager
    • getDescendants

      public @NonNull List<Page> getDescendants(Page page)
      Description copied from interface: PageManager
      Finds all descendant pages of the given page
      Specified by:
      getDescendants in interface PageManager
      Returns:
      a List of descendant pages
    • getDescendantTitles

      public @NonNull List<String> getDescendantTitles(Page page)
      Description copied from interface: PageManager
      Finds all descendant titles of the given page
      Specified by:
      getDescendantTitles in interface PageManager
      Returns:
      a List of descendant titles
    • getDescendents

      @Deprecated public @NonNull List getDescendents(Page page)
      Deprecated.
      since 5.5.1. Use getDescendants(Page)
      Specified by:
      getDescendents in interface PageManager
    • updatePageInAncestorCollections

      public void updatePageInAncestorCollections(Page page, @Nullable Page newParent)
      Description copied from interface: PageManager
      Updates the ancestors of a page and all it's descendant pages with the new parent page and its ancestors.
      Specified by:
      updatePageInAncestorCollections in interface PageManager
      Parameters:
      page - the page being updated with new ancestors
      newParent - the new parent page of the page being updated
    • removePageFromAncestorCollections

      public void removePageFromAncestorCollections(Page page)
      Description copied from interface: PageManager
      Removes the page and its ancestors from the ancestor collection of all descendants.
      Specified by:
      removePageFromAncestorCollections in interface PageManager
    • removeAllPages

      public void removeAllPages(Space space)
      Description copied from interface: PageManager
      Removes all pages in the space.

      This can be a lengthy operation and should be performed in a long running task. Current Hibernate session will be cleared as part of this method.

      Specified by:
      removeAllPages in interface PageManager
      Parameters:
      space - the space to remove pages from.
    • removeAllPages

      public void removeAllPages(Space space, com.atlassian.core.util.ProgressMeter progress)
      removes all the pages in a space (including all dependencies like attachments and notifications)
      Specified by:
      removeAllPages in interface PageManager
      Parameters:
      space - the space to remove all pages for.
      progress - progress meter to report progress on, can not be null.
    • removeAllBlogPosts

      public void removeAllBlogPosts(Space space)
      Specified by:
      removeAllBlogPosts in interface PageManager
    • removeAllBlogPosts

      public void removeAllBlogPosts(Space space, com.atlassian.core.util.ProgressMeter progress)
      Description copied from interface: PageManager
      Remove all blog posts in a space with a progress meter
      Specified by:
      removeAllBlogPosts in interface PageManager
      Parameters:
      space - the space to remove blog posts from
      progress - progress meter to report progress on, can not be null.
    • refreshPage

      public void refreshPage(ContentEntityObject page)
      Description copied from interface: PageManager
      Refresh the page object in the hibernate session. This might be necessary if the page object has become stale.
      Specified by:
      refreshPage in interface PageManager
      Parameters:
      page - the page to refresh
    • deepCopyPage

      public void deepCopyPage(PageCopyOptions pageCopyOptions, Page originalPage, Page destinationPage)
      Description copied from interface: PageManager
      Copy child page of originalPage to destinationPage
      Specified by:
      deepCopyPage in interface PageManager
      Parameters:
      pageCopyOptions - hint for us how we should copy page. Need to have READ permission on this page and all its child pages
      originalPage - source page. Need to have CREATE permission on it
      destinationPage - destination page
    • deepDeletePage

      public final void deepDeletePage(PageDeleteOptions options, Page targetPage)
      Description copied from interface: PageManager
      Deletes a page hierarchy
      Specified by:
      deepDeletePage in interface PageManager
      Parameters:
      options - options for bulk delete pages
      targetPage - target page hierarchy to be deleted
    • countPagesInSubtree

      public int countPagesInSubtree(Page page)
      Description copied from interface: PageManager
      Get number of descendant page including the input page
      Specified by:
      countPagesInSubtree in interface PageManager
      Returns:
      total descendant page
    • getDescendantIds

      public @NonNull Collection<Long> getDescendantIds(Page page)
      Description copied from interface: PageManager
      Finds the ids of a page's descendants
      Specified by:
      getDescendantIds in interface PageManager
      Returns:
      a collection of page ids
    • getTopLevelPages

      public @NonNull List<Page> getTopLevelPages(Space space)
      Description copied from interface: PageManager
      Get all the pages in a space that do not have a parent page. Since there can be an arbitrary number of such pages it is NOT RECOMMENDED to call this method. Use the builder method instead.
      Specified by:
      getTopLevelPages in interface PageManager
    • getUnsortedTopLevelPages

      public @NonNull List<Page> getUnsortedTopLevelPages(Space space)
    • getTopLevelPagesBuilder

      public @NonNull ListBuilder<Page> getTopLevelPagesBuilder(Space space)
      NOTE: Despite our best intentions, we still have to retrieve all the top level pages and order them outside the database. It would be nice if page ordering could be fixed so that this was not necessary, but for now we will fix the interface so that if we ever fix the implementation clients will already be taking advantage of it.
      Specified by:
      getTopLevelPagesBuilder in interface PageManager
      Parameters:
      space - the space in which to look for pages
      Returns:
      the new list builder.
    • getTopLevelPages

      public @NonNull PageResponse<Page> getTopLevelPages(Space space, LimitedRequest pageRequest)
      Description copied from interface: PageManagerInternal
      Returns the current top-level pages in a space, limited to the pagination requested.
      Specified by:
      getTopLevelPages in interface PageManagerInternal
      Parameters:
      space - the space to locate pages in
      pageRequest - the pagination requested
      Returns:
      the paginated response of Page entities
    • getChildren

      public @NonNull PageResponse<Page> getChildren(Page page, LimitedRequest pageRequest, Depth depth)
      Description copied from interface: PageManagerInternal
      Returns the children of a page which have a status of CURRENT, limited to the pagination requested.
      Specified by:
      getChildren in interface PageManagerInternal
      Parameters:
      page - the page to find children for
      pageRequest - the pagination requested
      depth - the depth to return children to
      Returns:
      the paginated response of Page entities
    • getDraftChildren

      public @NonNull PageResponse<Page> getDraftChildren(Page page, LimitedRequest pageRequest, Depth depth)
      Description copied from interface: PageManager
      Returns the children of a page which have a status of DRAFT, limited to the pagination requested. Will fetch drafts all drafts regardless of whether the current authenticated user has permission to view the drafts
      Specified by:
      getDraftChildren in interface PageManager
      Parameters:
      page - the page to find children for
      pageRequest - the pagination requested
      depth - the depth to return children to
      Returns:
      the paginated response of Page entities
    • getAllChildren

      public @NonNull PageResponse<Page> getAllChildren(Page page, LimitedRequest pageRequest, Depth depth)
      Description copied from interface: PageManagerInternal
      Returns all the children of a page (including drafts), limited to the pagination requested
      Specified by:
      getAllChildren in interface PageManagerInternal
      Parameters:
      page - the page to find children for
      pageRequest - the pagination requested
      depth - the depth to return children to
      Returns:
      the paginated response of Page entities
    • removeStaleSharedDrafts

      public int removeStaleSharedDrafts()
      Description copied from interface: PageManager
      Removes any stale shared drafts. Stale shared drafts are pages with a content_status 'draft' and which have a last modified date that is earlier than or equal to the last modified date on the published page.
      Specified by:
      removeStaleSharedDrafts in interface PageManager
      Returns:
      The number of pages removed
    • findPreviousBlogPost

      public @Nullable BlogPost findPreviousBlogPost(String key, Date time)
      Specified by:
      findPreviousBlogPost in interface PageManager
    • findNextBlogPost

      public @Nullable BlogPost findNextBlogPost(String key, Date time)
      Specified by:
      findNextBlogPost in interface PageManager
    • trashPage

      public void trashPage(AbstractPage page)
      Specified by:
      trashPage in interface PageManager
    • trashPage

      public final void trashPage(AbstractPage page, @NonNull DeleteContext deleteContext)
      Specified by:
      trashPage in interface PageManager
      Parameters:
      page - page to be trashed
      deleteContext - context a DeleteContext holding additional parameters for the manager to use when trashing the page.
    • restorePage

      public void restorePage(AbstractPage page)
      Description copied from interface: PageManager
      Restores a trashed page, effectively moving it out of the trash and promoting it back to being normal page.
      Specified by:
      restorePage in interface PageManager
      Parameters:
      page - a trashed page
    • movePageToTopLevel

      public void movePageToTopLevel(Page oldPage, Space destinationSpace)
      Description copied from interface: PageManager
      Move a page to the top level of targetSpace. If the top-level pages are manually ordered, the page will be added to the end of the child pages.
      Specified by:
      movePageToTopLevel in interface PageManager
      Parameters:
      oldPage - the page to move
      destinationSpace - the space to move the page to
    • moveBlogPostToTopLevel

      public void moveBlogPostToTopLevel(BlogPost blogPost, Space space)
      Description copied from interface: PageManager
      Move a blog post to the top level of targetSpace.
      Specified by:
      moveBlogPostToTopLevel in interface PageManager
      Parameters:
      blogPost - the blogPost to move
      space - the space to move the page to
    • movePageAfter

      public void movePageAfter(Page page, Page refPage)
      Description copied from interface: PageManager
      Move the provided page (first argument) after the reference page (second argument). This may also mean moving the target page to another space, if the reference page is in another space.
      Specified by:
      movePageAfter in interface PageManager
      Parameters:
      page - the page to move
      refPage - the page which the first page will be placed after
    • movePageBefore

      public void movePageBefore(Page page, Page refPage)
      Description copied from interface: PageManager
      Move the provided page (first argument) before the reference page (second argument). This may also mean moving the target page to another space, if the reference page is in another space.
      Specified by:
      movePageBefore in interface PageManager
      Parameters:
      page - the page to move
      refPage - the page which the first page will be placed before
    • movePageAsChild

      public void movePageAsChild(Page page, Page newParent)
      Move the source page to the end of targetPage's children list.
      Specified by:
      movePageAsChild in interface PageManager
      Parameters:
      page - the page to move
      newParent - the page which the first page will be made a child of
    • moveChildrenToNewParent

      public void moveChildrenToNewParent(Page oldPage, Page newParent)
      Description copied from interface: PageManager
      Moves all the children from one page to another The new parent should NOT be the child of the old parent, this method will return with no operation in that case

      The location of the children under their new parent is dependent on the new parent's existing order. If they are not explicitly ordered, the children will be in their default location in the list. If the new parent have an existing order, the children will be ordered under the new parent.

      Specified by:
      moveChildrenToNewParent in interface PageManager
      Parameters:
      oldPage - the page whose children you want to move
      newParent - the page whose the children will now belong to
    • setChildPageOrder

      public void setChildPageOrder(Page parentPage, List<Long> childIds)
      Description copied from interface: PageManager
      Sets ordering of child pages for a supplied page, based on a map of child ids to positions.
      Specified by:
      setChildPageOrder in interface PageManager
      Parameters:
      parentPage - the page for which children should be ordered.
      childIds - children page IDs in the new order
    • revertChildPageOrder

      public void revertChildPageOrder(Page parentPage)
      Description copied from interface: PageManager
      Removes manual ordering of child pages.
      Specified by:
      revertChildPageOrder in interface PageManager
      Parameters:
      parentPage - the page for which children should be unordered.
    • getOrderedXhtmlContentFromContentId

      public @NonNull List<ContentEntityObject> getOrderedXhtmlContentFromContentId(long startContentId, long endContentId, int maxRows)
      Description copied from interface: PageManager
      Gets the latest versions of AbstractPages between the given IDs limited by the specified number of rows. Sorted by IDs in ascending order.
      Specified by:
      getOrderedXhtmlContentFromContentId in interface PageManager
      Parameters:
      startContentId - The minimum ID
      endContentId - The maximum ID
      maxRows - The maximum number of rows to return
      Returns:
      A list of CEOs that match the criteria.
    • getCountOfLatestXhtmlContent

      public int getCountOfLatestXhtmlContent(long endContentId)
      Description copied from interface: PageManager
      Count the number of AbstractPages that have an ID lower than the specified ID, excluding older versions.
      Specified by:
      getCountOfLatestXhtmlContent in interface PageManager
      Parameters:
      endContentId - The maximum ID
      Returns:
      The number of AbstractPages that have IDs lower than the specified ID
    • getHighestCeoId

      public long getHighestCeoId()
      Description copied from interface: PageManager
      Get the highest content ID in the database, excluding older versions of content.
      Specified by:
      getHighestCeoId in interface PageManager
      Returns:
      The highest content ID
    • getPreviousVersionsOfPageWithTaskId

      public @NonNull List<ContentEntityObject> getPreviousVersionsOfPageWithTaskId(long pageId, long taskId, int maxRows)
      Description copied from interface: PageManager
      Get previous versions of a CEO that contain the given task ID sorted by versions in descending order.
      Specified by:
      getPreviousVersionsOfPageWithTaskId in interface PageManager
      Parameters:
      pageId - The ID of the latest version of the page
      taskId - The task ID to look for in previous versions
      maxRows - The maximum number of previous versions to return
      Returns:
      A maximum of maxRows previous versions of the page that contain the given taskId
    • getPageByVersion

      public @Nullable AbstractPage getPageByVersion(AbstractPage mostRecentPage, int version)
      Description copied from interface: PageManager
      returns the historical version of a page
      Specified by:
      getPageByVersion in interface PageManager
      Parameters:
      mostRecentPage - - must specify the most recent recent version of the page (page must be associated with a space)
      version - - historical version to retrieve
      Returns:
      the specified version of the page
    • getBlogPost

      public @Nullable BlogPost getBlogPost(String spaceKey, String postTitle, Calendar day)
      Description copied from interface: PageManager
      Retrieve the latest version of a blog post by its space key, title, and the day on which it was published. Blog posts that are not current (i.e. in the trash) will not be returned.

      Both the space key and page title matches are case-insensitive.

      Specified by:
      getBlogPost in interface PageManager
      Returns:
      the appropriate blog post, or null if none can be found, or the post is in the trash.
    • getBlogPost

      public @Nullable BlogPost getBlogPost(String spaceKey, String postTitle, Calendar day, boolean eagerLoadComments)
      Description copied from interface: PageManager
      Retrieve the latest version of a blog post by its space key, title, and the day on which it was published. Blog posts that are not current (i.e. in the trash) will not be returned. If eager load comments is true, the comments and their immediate children will also be eagerly loaded for this BlogPost.

      Both the space key and page title matches are case-insensitive.

      Specified by:
      getBlogPost in interface PageManager
      Returns:
      the appropriate blog post, or null if none can be found, or the post is in the trash.
    • getNewestBlogPost

      public @Nullable BlogPost getNewestBlogPost(@Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieves the most recently created blog post in the given space. Only the latest version of the blog post is returned. blog posts that are not current (i.e. in the trash) are not considered.
      Specified by:
      getNewestBlogPost in interface PageManager
      Parameters:
      spaceKey - the key of the space to retrieve the most recently created blog post for.
      Returns:
      the most recently created blog post in the given space, or null if the space contains no blog posts.
    • getRecentlyAddedBlogPosts

      public @NonNull List getRecentlyAddedBlogPosts(int maxCount, @Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve the most recently created blog posts in a given space. If no space key is supplied, the most recent blog posts from all spaces are returned. Only the latest version of each post is returned. Posts that are not current (i.e. in the trash) are not included.

      For queries like this, you're probably much better off using the SearchManager

      Specified by:
      getRecentlyAddedBlogPosts in interface PageManager
      Parameters:
      maxCount - the maximum number of blog posts to retrieve
      spaceKey - the key of the space to retrieve the posts from, or null to retrieve posts from all spaces
      Returns:
      a list of the most recently created blog posts in the given space
    • getRecentlyAddedPages

      public @NonNull List getRecentlyAddedPages(int maxCount, @Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve the most recently created pages in a given space. If no space key is supplied, the most recent pages from all spaces are returned. Only the latest version of each page is returned. Pages that are not current (i.e. in the trash) are not included.

      For queries like this, you're probably much better off using the SearchManager

      Specified by:
      getRecentlyAddedPages in interface PageManager
      Parameters:
      maxCount - the maximum number of pages to retrieve
      spaceKey - the key of the space to retrieve the pages from, or null to retrieve posts from all spaces
      Returns:
      a list of the most recently created pages in the given space
    • getRecentlyUpdatedPages

      public @NonNull List getRecentlyUpdatedPages(int maxCount, @Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve the most recently modified pages in a given space. If no space key is supplied, the most recent pages from all spaces are returned. Only the latest version of each page is returned. Pages that are not current (i.e. in the trash) are not included.

      For queries like this, you're probably much better off using the SearchManager

      Specified by:
      getRecentlyUpdatedPages in interface PageManager
      Parameters:
      maxCount - the maximum number of pages to retrieve
      spaceKey - the key of the space to retrieve the pages from, or null to retrieve posts from all spaces
      Returns:
      a list of the most recently updated pages in the given space
    • getOrphanedPages

      public @NonNull List getOrphanedPages(@Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve a list of pages in a given space that are not linked to. If no space key is supplied, the search is performed across all spaces. Only the latest version of each page is returned. Pages that are not current (i.e. in the trash) are not returned.

      The orphaned pages search is not 100% accurate, as the algorithm used to track links doesn't account for all links. Hopefully this can be fixed with future versions of the wiki renderer that allow more accurate tracking of link destinations.

      Specified by:
      getOrphanedPages in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for orphans in, or null to search all spaces
      Returns:
      the list of orphaned pages
    • getUndefinedPages

      public @NonNull List<OutgoingLink> getUndefinedPages(@Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve a list of link destinations in a given space that do not have pages.

      The undefined pages search is not 100% accurate, as the algorithm used to track links doesn't account for all links. Hopefully this can be fixed with future versions of the wiki renderer that allow more accurate tracking of link destinations.

      Specified by:
      getUndefinedPages in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for undefined pages in, or null to search all spaces
      Returns:
      the list of undefined pages
    • getUndefinedLinks

      public final List<OutgoingLink> getUndefinedLinks(@Nullable String spaceKey)
      Description copied from interface: PageManager
      Retrieve a list of link destinations in a given space that do not have pages.

      The undefined pages search is not 100% accurate, as the algorithm used to track links doesn't account for all links. Hopefully this can be fixed with future versions of the wiki renderer that allow more accurate tracking of link destinations.

      Specified by:
      getUndefinedLinks in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for undefined pages in, or null to search all spaces
      Returns:
      the list of link destinations
    • getPermissionPages

      public @NonNull List getPermissionPages(Space space)
      Description copied from interface: PageManager
      Retrieve all pages within a particular space that have page level permissions applied to them. Only the latest version of each page is returned. Pages that are not current (i.e. in the trash) are not returned.
      Specified by:
      getPermissionPages in interface PageManager
      Parameters:
      space - the space to search
      Returns:
      the list of all pages in that space with page-level permissions
    • getPermissionPages

      public Collection<Page> getPermissionPages(Space space, LimitedRequest limitedRequest)
      Description copied from interface: PageManagerInternal
      Pagination permission pages for particular Space
      Specified by:
      getPermissionPages in interface PageManagerInternal
      Returns:
      Collection of permission pages within the request range
    • getPermissionPagesCount

      public long getPermissionPagesCount(Space space)
      Description copied from interface: PageManagerInternal
      Get total number of permission pages for particular Space
      Specified by:
      getPermissionPagesCount in interface PageManagerInternal
      Returns:
      the count
    • saveContentEntity

      public void saveContentEntity(ContentEntityObject obj, @Nullable SaveContext saveContext)
      Specified by:
      saveContentEntity in interface ContentEntityManager
      Overrides:
      saveContentEntity in class DefaultContentEntityManager
      Parameters:
      obj - - the ContentEntityObject to save
      saveContext - - a SaveContext holding additional parameters for the manager to use when saving.
      Throws:
      DuplicateDataRuntimeException - if the supplied page has a duplicate title.
    • saveContentEntity

      public void saveContentEntity(ContentEntityObject obj, @Nullable ContentEntityObject origObj, @Nullable SaveContext saveContext)
      Description copied from interface: ContentEntityManager
      In order to create a history for this object, we need to pass in the modified as well as the original version of the object.
      Specified by:
      saveContentEntity in interface ContentEntityManager
      Overrides:
      saveContentEntity in class DefaultContentEntityManager
      saveContext - - a SaveContext holding additional parameters for the manager to use when saving.
      Throws:
      DuplicateDataRuntimeException - if the supplied page has a duplicate title.
    • saveNewVersion

      public <T extends ContentEntityObject> void saveNewVersion(T current, Modification<T> modification, @Nullable SaveContext saveContext)
      Description copied from interface: ContentEntityManager
      Applies the state changes supplied by modification and persists those changes to a new version.

       manager.<Page>saveNewVersion(page, new Modification<Page>() {
            public void modify(Page page) {
                page.setTitle("foobar");
            }
       }, new DefaultSaveContext());
       
      Specified by:
      saveNewVersion in interface ContentEntityManager
      Overrides:
      saveNewVersion in class DefaultContentEntityManager
      Type Parameters:
      T - the type content. This ensures that the type of current is the same as the type passed to the modification
      Parameters:
      current - the current / latest version
      modification - an implementation of Modification which describes the state changes you require
      saveContext - the save context (null if you have no specific requirements - or just use ContentEntityManager.saveNewVersion(ContentEntityObject, Modification)).
    • reconcileIfNeeded

      public void reconcileIfNeeded(AbstractPage content, @Nullable SaveContext saveContext)
      Description copied from interface: PageManagerInternal
      This method triggers SynchronyRecoveryEvent if collab editing is turned on and data recovery is needed. Recovery is needed when:
      • content is the latest version of the page or blog post AND
      • content is not reconciled ('sync-rev-source' content property is not empty and not equals to neither 'synchrony' or 'synchrony-ack') AND
      • update trigger of saveContext is not equal to PageUpdateTrigger.LINK_REFACTORING
      Specified by:
      reconcileIfNeeded in interface PageManagerInternal
      Parameters:
      content - content to be recovered
      saveContext - context of operation
    • getAuthoredPagesCountByUser

      public int getAuthoredPagesCountByUser(ConfluenceUser user)
      Description copied from interface: PageManager
      Get the number of pages that have been created by a particular user
      Specified by:
      getAuthoredPagesCountByUser in interface PageManager
      Parameters:
      user - the username of the user to search for
      Returns:
      the number of pages that have been created by that user.
    • isPageRecentlyUpdatedForUser

      public boolean isPageRecentlyUpdatedForUser(Page page, @Nullable com.atlassian.user.User user)
      Description copied from interface: PageManager
      Returns true if the page has been created or modified since the user last logged in. If the user has no last login time, returns false. For an anonymous user returns false.
      Specified by:
      isPageRecentlyUpdatedForUser in interface PageManager
      Parameters:
      page - the page in question
      user - the user or null if it is the anonymous user
      Returns:
      true if the page has been created or modified since the user's last login, false otherwise
    • revertContentEntityBackToVersion

      public void revertContentEntityBackToVersion(ContentEntityObject entity, int version, @Nullable String revertComment, boolean revertTitle)
      Description copied from interface: ContentEntityManager

      Reverts a ContentEntityObject back to its state at the version specified by version. Creates a new latest version that resembles the previous state.

      Since Confluence 4.0 most ContentEntityObjects are assumed to be XHTML formatted. So in reverting a ContentEntityObject which actually has a WIKI BodyType this will be migrated on the fly to XHTML.

      Specified by:
      revertContentEntityBackToVersion in interface ContentEntityManager
      Overrides:
      revertContentEntityBackToVersion in class DefaultContentEntityManager
      Parameters:
      entity - The ContentEntityObject to revert
      version - The version to revert to
      revertComment - A comment to be associated with the revert
      revertTitle - If true, the ContentEntityObject title will be reverted to the old state
    • getPagesCreatedOrUpdatedSinceDate

      public @NonNull List getPagesCreatedOrUpdatedSinceDate(Date previousLoginDate)
      Description copied from interface: PageManager
      Get the list of all pages created or updated since a particular date.
      Specified by:
      getPagesCreatedOrUpdatedSinceDate in interface PageManager
      Parameters:
      previousLoginDate - the date the pages must have been created or edited after
      Returns:
      all pages created or edited since that date
    • getBlogPosts

      public @NonNull List getBlogPosts(String spaceKey, Calendar postingDate, int period)
      Description copied from interface: PageManager
      Get list of blogPost by Date.
      Specified by:
      getBlogPosts in interface PageManager
      Parameters:
      spaceKey - the space to look for posts in
      postingDate - a calendar object representing the date range we are looking for. Any part of the calendar more specific than the supplied period will be ignored.
      period - one of the Calendar constants specifying the granularity of the search. currently, only Calendar.MONTH and Calendar.DATE are supported
      Returns:
      a list of blogPost
    • getBlogPosts

      public @NonNull List getBlogPosts(String spaceKey, Calendar postingDate, int period, int startIndex, int maxResultCount)
      Description copied from interface: PageManager
      Get list of blogPost by Date.
      Specified by:
      getBlogPosts in interface PageManager
      Parameters:
      spaceKey - the space to look for posts in
      postingDate - a calendar object representing the date range we are looking for. Any part of the calendar more specific than the supplied period will be ignored.
      period - one of the Calendar constants specifying the granularity of the search. currently, only Calendar.MONTH and Calendar.DATE are supported
      startIndex - start number of posts
      maxResultCount - Maximum number of posts to return
      Returns:
      a list of blogPost
    • getBlogPostCount

      public long getBlogPostCount(String spaceKey, @Nullable Calendar postingDate, int period)
      Description copied from interface: PageManager
      Get total number of blogPost.
      Specified by:
      getBlogPostCount in interface PageManager
      Parameters:
      spaceKey - the space to look for posts in
      postingDate - a calendar object representing the date range we are looking for. Any part of the calendar more specific than the supplied period will be ignored.
      period - one of the Calendar constants specifying the granularity of the search. currently, only Calendar.MONTH and Calendar.DATE are supported
      Returns:
      a count number of blogPosts
    • getPageCount

      public long getPageCount(@NonNull String spaceKey)
      Description copied from interface: PageManager
      Get total number of current pages in a space
      Specified by:
      getPageCount in interface PageManager
      Parameters:
      spaceKey - the space to look for posts in
      Returns:
      a count number of pages
    • countCurrentPages

      public int countCurrentPages()
      Description copied from interface: PageManager
      Counts the total number of current pages across all spaces
      Specified by:
      countCurrentPages in interface PageManager
      Returns:
      the number of current pages
    • countDraftPages

      public int countDraftPages()
      Description copied from interface: PageManager
      Counts the number of pages that are drafts. This does not include drafts of pages that have already been published (i.e. pages with unpublished changes).
      Specified by:
      countDraftPages in interface PageManager
      Returns:
      the number of draft pages
    • countPagesWithUnpublishedChanges

      public int countPagesWithUnpublishedChanges()
      Description copied from interface: PageManager
      Counts the number of published pages that have unpublished changes.
      Specified by:
      countPagesWithUnpublishedChanges in interface PageManager
      Returns:
      the number of pages with unpublished changes.
    • getPageStatistics

      public Optional<PageStatisticsDTO> getPageStatistics()
      Description copied from interface: PageManager
      Fetches statistics about pages
      Specified by:
      getPageStatistics in interface PageManager
      Returns:
      a PageStatisticsDTO object with statistics about pages such as total, current, and draft count
    • countCurrentBlogs

      public int countCurrentBlogs()
      Description copied from interface: PageManager
      Counts the total number of current blog posts across all spaces
      Specified by:
      countCurrentBlogs in interface PageManager
      Returns:
      the number of current blog posts
    • countDraftBlogs

      public int countDraftBlogs()
      Description copied from interface: PageManager
      Counts the number of blog posts that are drafts. This does not include drafts of blog posts that have already been published (i.e. blog posts with unpublished changes).
      Specified by:
      countDraftBlogs in interface PageManager
      Returns:
      the number of draft blog posts
    • countBlogsWithUnpublishedChanges

      public int countBlogsWithUnpublishedChanges()
      Description copied from interface: PageManager
      Counts the number of published blog posts that have unpublished changes.
      Specified by:
      countBlogsWithUnpublishedChanges in interface PageManager
      Returns:
      the number of blog posts with unpublished changes.
    • getBlogStatistics

      public Optional<BlogPostStatisticsDTO> getBlogStatistics()
      Description copied from interface: PageManager
      Fetches statistics about blogs
      Specified by:
      getBlogStatistics in interface PageManager
      Returns:
      a BlogStatisticsDTO object with statistics about blogs such as total, current, and draft count
    • getYearsWithBlogPosts

      public @NonNull Set<Date> getYearsWithBlogPosts(String spaceKey)
      Description copied from interface: PageManager
      Returns the set of years (represented as a Date with the year field populated) for which blog posts exist in the specified space.
      Specified by:
      getYearsWithBlogPosts in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for blog posts in.
      Returns:
      the set of years for which blog posts exist.
    • getBlogPostDates

      public @NonNull List<Date> getBlogPostDates(String spaceKey)
      Description copied from interface: PageManager
      Returns a list of creation dates for all the blog posts in a space.
      Specified by:
      getBlogPostDates in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for blog posts in.
      Returns:
      the list of dates for which blog posts exist.
    • getBlogPostDates

      public @NonNull List<Date> getBlogPostDates(String spaceKey, Calendar date, int period)
      Description copied from interface: PageManager
      Returns a list of creation dates for all the blog posts in a space for a particular period.
      Specified by:
      getBlogPostDates in interface PageManager
      Parameters:
      spaceKey - the space to look for posts in.
      date - a calendar object representing the date range we are looking for. Any part of the calendar more specific than the supplied period will be ignored.
      period - one of the Calendar constants specifying the granularity of the search. currently, only Calendar.YEAR, Calendar.MONTH and Calendar.DATE are supported
      Returns:
      a list of creation dates for the blog posts created in the time-range. The list may be empty but will never be null
    • getMonthsWithBlogPosts

      public @NonNull Set<Date> getMonthsWithBlogPosts(String spaceKey, Calendar year)
      Description copied from interface: PageManager
      Returns the set of months in the specified year (represented as a Calendar with the year and month fields populated) for which blog posts exist in the specified space.
      Specified by:
      getMonthsWithBlogPosts in interface PageManager
      Parameters:
      spaceKey - the key of the space to look for blog posts in.
      year - the year to examine blog posts for, represented as a Calendar with the year field specified.
      Returns:
      the set of months for which blog posts exist.
    • getPages

      public @NonNull List<Page> getPages(@Nullable Space space, boolean currentOnly)
      Specified by:
      getPages in interface PageManager
    • getPagesWithPermissions

      public @NonNull List<Page> getPagesWithPermissions(Space space)
      Description copied from interface: PageManager
      Get all current pages in a space and eagerly fetch permissions at the same time. This is an optimisation for when you known that permissions will need to be fetched for all or most of the pages later.
      Specified by:
      getPagesWithPermissions in interface PageManager
      Returns:
      a list of all the current pages in a space
    • getFilteredPages

      @Deprecated public @NonNull PageResponse<Page> getFilteredPages(Space space, LimitedRequest pageRequest, Predicate<? super Page>... filters)
      Description copied from interface: PageManagerInternal
      Returns all the current pages in the space, limited to the pagination request.
      Specified by:
      getFilteredPages in interface PageManagerInternal
      Parameters:
      space - the space to locate pages in
      pageRequest - the pagination requested
      filters - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities in the given space
    • getFilteredPages

      @Deprecated public @NonNull PageResponse<Page> getFilteredPages(LimitedRequest pageRequest, Predicate<? super Page>... filters)
      Description copied from interface: PageManagerInternal
      Returns all the current pages in this instance of confluence, limited to the pagination request.
      Specified by:
      getFilteredPages in interface PageManagerInternal
      Parameters:
      pageRequest - the pagination requested
      filters - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities
    • scanFilteredPages

      public @NonNull PageResponse<Page> scanFilteredPages(List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Page>... filter)
      Description copied from interface: PageManagerInternal
      Returns all pages with specified content statuses, limited to the pagination request.
      Specified by:
      scanFilteredPages in interface PageManagerInternal
      Parameters:
      statuses - list of content status which we are interested to fetch
      pageRequest - the pagination requested
      filter - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities
    • scanFilteredPages

      public @NonNull PageResponse<Page> scanFilteredPages(Space space, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Page>... filter)
      Description copied from interface: PageManagerInternal
      Returns all pages in the space which has specified content statuses, limited to the pagination request.
      Specified by:
      scanFilteredPages in interface PageManagerInternal
      Parameters:
      space - the space to locate pages in
      statuses - list of content status which we are interested to fetch
      pageRequest - the pagination requested
      filter - a Predicate to apply to the results before returning
      Returns:
      the paginated response of Page entities in the given space
    • getFilteredBlogPosts

      @Deprecated public @NonNull PageResponse<BlogPost> getFilteredBlogPosts(Space space, LimitedRequest pageRequest, Predicate<? super BlogPost>... filters)
      Description copied from interface: PageManagerInternal
      Returns all the current blog posts in the space, limited to the pagination request.
      Specified by:
      getFilteredBlogPosts in interface PageManagerInternal
      Parameters:
      space - the space to locate blog posts in
      pageRequest - the pagination requested
      Returns:
      the paginated response of BlogPost entities
    • getPageIds

      public @NonNull Collection<Long> getPageIds(Space space)
      Description copied from interface: PageManager
      Get the ids of all pages (current and historical) in the given space.
      Specified by:
      getPageIds in interface PageManager
      Parameters:
      space - space to retrieve page ids from, can not be null.
      Returns:
      a Collection of ids for pages.
    • getPagesStartingWith

      public @NonNull List getPagesStartingWith(Space space, String s)
      Specified by:
      getPagesStartingWith in interface PageManager
    • findPreviousBlogPost

      public @Nullable BlogPost findPreviousBlogPost(BlogPost post)
      Specified by:
      findPreviousBlogPost in interface PageManager
    • findNextBlogPost

      public @Nullable BlogPost findNextBlogPost(BlogPost post)
      Specified by:
      findNextBlogPost in interface PageManager