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 Summary
Fields Modifier and Type Field Description static String
EXCERPT_KEY
static String
STALE_DRAFT_REMOVE_BATCH_SIZE
-
Fields inherited from interface com.atlassian.confluence.core.ContentEntityManager
ITERATE_ALL
-
-
Constructor Summary
Constructors Constructor Description DefaultPageManager(PageDaoInternal pageDao, AttachmentManager attachmentManager, HibernateSessionManager5 hibernateSessionManager5, WikiToStorageConverter wikiToStorageConverter, com.atlassian.event.api.EventPublisher eventPublisher, BlogPostDao blogPostDao, AbstractPageDaoInternal abstractPageDao, SpaceDao spaceDao, ContentPropertyManager contentPropertyManager, PermissionManager permissionManager, LoginManager loginManager, ExceptionTolerantMigrator revertedContentMigrator, CollaborativeEditingHelper collaborativeEditingHelper, RelationManager relationManager, SpacePermissionQueryManager spacePermissionQueryManager, ContentPermissionManager contentPermissionManager, com.atlassian.beehive.ClusterLockService clusterLockService, LinksUpdater linksUpdater, SpacePermissionManager spacePermissionManager, org.springframework.transaction.PlatformTransactionManager transactionManager, AuditingContext auditingContext, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, UpdateAttachmentsOnFilesystemOnPageMoveHandler updateAttachmentsOnFilesystemOnPageMoveHandler, org.hibernate.SessionFactory sessionFactory)
Deprecated.since 8.0.0DefaultPageManager(PageDaoInternal pageDao, AttachmentManager attachmentManager, HibernateSessionManager5 hibernateSessionManager5, WikiToStorageConverter wikiToStorageConverter, com.atlassian.event.api.EventPublisher eventPublisher, BlogPostDao blogPostDao, AbstractPageDaoInternal abstractPageDao, SpaceDao spaceDao, ContentPropertyManager contentPropertyManager, PermissionManager permissionManager, LoginManager loginManager, ExceptionTolerantMigrator revertedContentMigrator, CollaborativeEditingHelper collaborativeEditingHelper, RelationManager relationManager, SpacePermissionQueryManager spacePermissionQueryManager, ContentPermissionManager contentPermissionManager, com.atlassian.beehive.ClusterLockService clusterLockService, LinksUpdater linksUpdater, SpacePermissionManager spacePermissionManager, org.springframework.transaction.PlatformTransactionManager transactionManager, AuditingContext auditingContext, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, UpdateAttachmentsOnFilesystemOnPageMoveHandler updateAttachmentsOnFilesystemOnPageMoveHandler, org.hibernate.SessionFactory sessionFactory, ContentPropertyService contentPropertyService)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
countBlogsWithUnpublishedChanges()
Counts the number of published blog posts that have unpublished changes.int
countCurrentBlogs()
Counts the total number of current blog posts across all spacesint
countCurrentPages()
Counts the total number of current pages across all spacesint
countDraftBlogs()
Counts the number of blog posts that are drafts.int
countDraftPages()
Counts the number of pages that are drafts.int
countPagesInSubtree(Page page)
Get number of descendant page including the input pageint
countPagesWithUnpublishedChanges()
Counts the number of published pages that have unpublished changes.AbstractPage
createDraft(String contentType, String spaceKey)
This method creates a draftAbstractPage
createDraft(String contentType, String spaceKey, long parentPageId)
This method creates a draft.AbstractPage
createOrFindDraftFor(@NonNull AbstractPage page)
Retrieves the draft for the given AbstractPage if exists.void
deepCopyPage(PageCopyOptions pageCopyOptions, Page originalPage, Page destinationPage)
Copy child page of originalPage to destinationPagevoid
deepDeletePage(PageDeleteOptions options, Page targetPage)
Deletes a page hierarchyList<ContentPermissionSummary>
findContentPermissionSummaryByIds(Collection<Long> ids)
Get ContentPermissionSummary for bulk permission checking@Nullable BlogPost
findNextBlogPost(BlogPost post)
@Nullable BlogPost
findNextBlogPost(String key, Date time)
@Nullable BlogPost
findPreviousBlogPost(BlogPost post)
@Nullable BlogPost
findPreviousBlogPost(String key, Date time)
@Nullable AbstractPage
getAbstractPage(long id)
Retrieve the AbstractPage subclass with the given content ID.@NonNull PageResponse<AbstractPage>
getAbstractPages(Space space, String title, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<AbstractPage>
getAbstractPages(Space space, List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull List<AbstractPage>
getAbstractPages(Iterable<Long> ids)
Retrieve a collection of the AbstractPage subclass with the given content IDs.@NonNull PageResponse<AbstractPage>
getAbstractPages(String title, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<AbstractPage>
getAbstractPages(List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<AbstractPage>
getAbstractPages(org.joda.time.DateTime date, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<AbstractPage>
getAbstractPagesByCreationDate(org.joda.time.DateTime date, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<AbstractPage>
getAbstractPagesByTitle(String title, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.since 7.0.1.@NonNull PageResponse<Page>
getAllChildren(Page page, LimitedRequest pageRequest, Depth depth)
Returns all the children of a page (including drafts), limited to the pagination requestedint
getAuthoredPagesCountByUser(String username)
Get the number of pages that have been created by a particular user@Nullable BlogPost
getBlogPost(long id)
Retrieve the blog post with the given content ID.@Nullable BlogPost
getBlogPost(String spaceKey, String postTitle, Calendar day)
Retrieve the latest version of a blog post by its space key, title, and the day on which it was published.@Nullable BlogPost
getBlogPost(String spaceKey, String postTitle, Calendar day, boolean eagerLoadComments)
Retrieve the latest version of a blog post by its space key, title, and the day on which it was published.long
getBlogPostCount(String spaceKey, @Nullable Calendar postingDate, int period)
Get total number of blogPost.@NonNull List<BlogPost>
getBlogPosts(Space space, boolean currentOnly)
@NonNull PageResponse<BlogPost>
getBlogPosts(Space space, LimitedRequest pageRequest, com.google.common.base.Predicate<? super BlogPost>... filters)
Deprecated.since 7.0.1.@NonNull List
getBlogPosts(String spaceKey, Calendar postingDate, int period)
Get list of blogPost by Date.@NonNull List
getBlogPosts(String spaceKey, Calendar postingDate, int period, int startIndex, int maxResultCount)
Get list of blogPost by Date.@NonNull List<BlogPost>
getBlogPostsInTrash(String spaceKey, String title)
Gets a blog post that is in the trash for a given space that matches the given title.Optional<BlogPostStatisticsDTO>
getBlogStatistics()
Fetches statistics about blogs@Nullable AbstractPage
getById(long id)
Override default implementation to explicitly return an AbstractPage.@NonNull PageResponse<Page>
getChildren(Page page, LimitedRequest pageRequest, Depth depth)
Returns the children of a page which have a status of CURRENT, limited to the pagination requested.int
getCommentCountOnBlog(long blogId)
Counts the number of comments on the blogpost specified by the given id.int
getCommentCountOnPage(long pageId)
Counts the number of comments on the page specified by the given id.int
getCountOfLatestXhtmlContent(long endContentId)
Count the number of AbstractPages that have an ID lower than the specified ID, excluding older versions.@NonNull Collection<Long>
getDescendantIds(Page page)
Finds the ids of a page's descendants@NonNull List<Page>
getDescendants(Page page)
Finds all descendant pages of the given page@NonNull List<String>
getDescendantTitles(Page page)
Finds all descendant titles of the given page@NonNull List
getDescendents(Page page)
Deprecated.since 5.5.1.@NonNull PageResponse<Page>
getDraftChildren(Page page, LimitedRequest pageRequest, Depth depth)
Returns the children of a page which have a status of DRAFT, limited to the pagination requested.long
getHighestCeoId()
Get the highest content ID in the database, excluding older versions of content.@NonNull Set<Date>
getMonthsWithBlogPosts(String spaceKey, Calendar year)
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.@Nullable BlogPost
getNewestBlogPost(@Nullable String spaceKey)
Retrieves the most recently created blog post in the given space.@NonNull List<ContentEntityObject>
getOrderedXhtmlContentFromContentId(long startContentId, long endContentId, int maxRows)
Gets the latest versions of AbstractPages between the given IDs limited by the specified number of rows.@NonNull List
getOrphanedPages(@Nullable String spaceKey)
Retrieve a list of pages in a given space that are not linked to.@Nullable Page
getPage(long id)
Retrieve the page with the given content ID.@Nullable Page
getPage(String spaceKey, String pageTitle)
Retrieve the latest version of a page by its space key and title.@Nullable AbstractPage
getPageByVersion(AbstractPage mostRecentPage, int version)
returns the historical version of a pagelong
getPageCount(@NonNull String spaceKey)
Get total number of current pages in a space@NonNull Collection<Long>
getPageIds(Space space)
Get the ids of all pages (current and historical) in the given space.@NonNull List
getPageInTrash(String spaceKey, String title)
@NonNull List<Page>
getPages(@Nullable Space space, boolean currentOnly)
@NonNull PageResponse<Page>
getPages(LimitedRequest pageRequest, com.google.common.base.Predicate<? super Page>... filters)
Deprecated.since 7.0.1.@NonNull PageResponse<Page>
getPages(Space space, LimitedRequest pageRequest, com.google.common.base.Predicate<? super Page>... filters)
Deprecated.since 7.0.1.@NonNull List<Page>
getPages(Iterable<Long> ids)
Retrieve a collection of pages with the given content IDs.@NonNull List
getPagesCreatedOrUpdatedSinceDate(Date previousLoginDate)
Get the list of all pages created or updated since a particular date.@NonNull List
getPagesStartingWith(Space space, String s)
Optional<PageStatisticsDTO>
getPageStatistics()
Fetches statistics about pages@NonNull List<Page>
getPagesWithPermissions(Space space)
Get all current pages in a space and eagerly fetch permissions at the same time.@Nullable Page
getPageWithComments(String spaceKey, String pageTitle)
Retrieve the latest version of a page by its space key and title.@NonNull List
getPermissionPages(Space space)
Retrieve all pages within a particular space that have page level permissions applied to them.Collection<Page>
getPermissionPages(Space space, LimitedRequest limitedRequest)
Pagination permission pages for particular Spacelong
getPermissionPagesCount(Space space)
Get total number of permission pages for particular Space@NonNull List<AbstractPage>
getPossibleBlogRedirectsInSpace(Space space, String blogTitle, int maxResultCount)
Searches for blogs in the space specified, looking for those that have the given title in a previous version.@NonNull List<AbstractPage>
getPossibleBlogRedirectsNotInSpace(Space space, String blogTitle, int maxResultCount)
Searches for pages in all spaces except the one specified, looking for those that have the given title in a previous version.@NonNull List<AbstractPage>
getPossibleRedirectsInSpace(Space space, String pageTitle, int maxResultCount)
Searches for pages in the space specified, looking for those that have the given title in a previous version.@NonNull List<AbstractPage>
getPossibleRedirectsNotInSpace(Space space, String pageTitle, int maxResultCount)
Searches for pages in all spaces except the one specified, looking for those that have the given title in a previous version.@NonNull List<ContentEntityObject>
getPreviousVersionsOfPageWithTaskId(long pageId, long taskId, int maxRows)
Get previous versions of a CEO that contain the given task ID sorted by versions in descending order.@NonNull List
getRecentlyAddedBlogPosts(int maxCount, @Nullable String spaceKey)
Retrieve the most recently created blog posts in a given space.@NonNull List
getRecentlyAddedBlogPosts(int maxPosts, @Nullable Date timeSince, String spaceKey)
@NonNull List
getRecentlyAddedPages(int maxCount, @Nullable String spaceKey)
Retrieve the most recently created pages in a given space.@NonNull List
getRecentlyUpdatedPages(int maxCount, @Nullable String spaceKey)
Retrieve the most recently modified pages in a given space.@NonNull List<Page>
getTopLevelPages(Space space)
Get all the pages in a space that do not have a parent page.@NonNull PageResponse<Page>
getTopLevelPages(Space space, LimitedRequest pageRequest)
Returns the current top-level pages in a space, limited to the pagination requested.@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.List<OutgoingLink>
getUndefinedLinks(@Nullable String spaceKey)
Retrieve a list of link destinations in a given space that do not have pages.@NonNull List<OutgoingLink>
getUndefinedPages(@Nullable String spaceKey)
Retrieve a list of link destinations in a given space that do not have pages.@NonNull List<Page>
getUnsortedTopLevelPages(Space space)
@NonNull Set<Date>
getYearsWithBlogPosts(String spaceKey)
Returns the set of years (represented as a Date with the year field populated) for which blog posts exist in the specified space.boolean
isPageRecentlyUpdatedForUser(Page page, @Nullable com.atlassian.user.User user)
Returns true if the page has been created or modified since the user last logged in.void
moveBlogPostToTopLevel(BlogPost blogPost, Space space)
Move a blog post to the top level oftargetSpace
.void
moveChildrenToNewParent(Page oldPage, Page newParent)
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 casevoid
movePageAfter(Page page, Page refPage)
Move the provided page (first argument) after the reference page (second argument).void
movePageAsChild(Page page, Page newParent)
Move the source page to the end of targetPage's children list.void
movePageBefore(Page page, Page refPage)
Move the provided page (first argument) before the reference page (second argument).void
movePageToTopLevel(Page page, Space space)
Move a page to the top level oftargetSpace
.void
reconcileIfNeeded(AbstractPage content, @Nullable SaveContext saveContext)
This method triggersSynchronyRecoveryEvent
if collab editing is turned on and data recovery is needed.void
refreshPage(ContentEntityObject page)
Refresh the page object in the hibernate session.void
removeAllBlogPosts(Space space)
void
removeAllBlogPosts(Space space, com.atlassian.core.util.ProgressMeter progress)
Remove all blog posts in a space with a progress metervoid
removeAllPages(Space space)
Removes all pages in the space.void
removeAllPages(Space space, com.atlassian.core.util.ProgressMeter progress)
removes all the pages in a space (including all dependencies like attachments and notifications)void
removePageFromAncestorCollections(Page page)
Removes the page and its ancestors from the ancestor collection of all descendants.int
removeStaleSharedDrafts()
Removes any stale shared drafts.void
renamePage(AbstractPage page, String newPageTitle)
Call this function if you want to rename the page only.void
renamePageWithoutNotifications(AbstractPage page, String newPageTitle)
Call this function if you want to rename the page only, and don't want notifications generated.void
restorePage(AbstractPage page)
Restores a trashed page, effectively moving it out of the trash and promoting it back to being normal page.void
revertChildPageOrder(Page parentPage)
Removes manual ordering of child pages.void
revertContentEntityBackToVersion(ContentEntityObject entity, int version, @Nullable String revertComment, boolean revertTitle)
Reverts aContentEntityObject
back to its state at the version specified byversion
.void
saveContentEntity(ContentEntityObject obj, @Nullable ContentEntityObject origObj, @Nullable SaveContext saveContext)
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.void
saveContentEntity(ContentEntityObject obj, @Nullable SaveContext saveContext)
<T extends ContentEntityObject>
voidsaveNewVersion(T current, Modification<T> modification, @Nullable SaveContext saveContext)
Applies the state changes supplied by modification and persists those changes to a new version.@NonNull PageResponse<Page>
scanFilteredPages(Space space, List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Page>... filter)
Returns all pages in the space which has specified content statuses, limited to the pagination request.@NonNull PageResponse<Page>
scanFilteredPages(List<ContentStatus> statuses, LimitedRequest pageRequest, Predicate<? super Page>... filter)
Returns all pages with specified content statuses, limited to the pagination request.void
setChildPageOrder(Page parentPage, List<Long> childIds)
Sets ordering of child pages for a supplied page, based on a map of child ids to positions.boolean
spaceHasBlogPosts(String spaceKey)
void
trashPage(AbstractPage page)
void
trashPage(AbstractPage page, @NonNull DeleteContext deleteContext)
void
updatePageInAncestorCollections(Page page, @Nullable Page newParent)
Updates the ancestors of a page and all it's descendant pages with the new parent page and its ancestors.-
Methods inherited from class com.atlassian.confluence.impl.content.DefaultContentEntityManager
convertFromWikiToStorageFormatIfRequired, createDraft, findAllDraftsFor, findAllDraftsWithUnpublishedChangesForUser, findDraftFor, findDraftFor, findUnpublishedContentWithUserContributions, getById, getById, getByIds, getContributionStatusByUser, getNextVersion, getOtherVersion, getPageAndBlogPostsVersionsLastEditedByUser, getPageAndBlogPostsVersionsLastEditedByUserIncludingDrafts, getPreviousVersion, getRecentlyAddedEntities, getRecentlyModifiedEntities, getRecentlyModifiedEntitiesForUser, getRecentlyModifiedForChangeDigest, getVersionHistorySummaries, getVersionHistorySummaries, getVersionsLastEditedByUser, publishCreateEvent, publishRemoveEvent, publishUpdateEvent, refreshContentEntity, removeContentEntities, removeContentEntity, removeHistoricalVersion, revertContentEntityBackToVersion, saveNewVersion
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.atlassian.confluence.core.ContentEntityManager
getContributionStatusByUser, getNextVersion, getOtherVersion, getPageAndBlogPostsVersionsLastEditedByUser, getPageAndBlogPostsVersionsLastEditedByUserIncludingDrafts, getPreviousVersion, getRecentlyAddedEntities, getRecentlyModifiedEntities, getRecentlyModifiedEntitiesForUser, getRecentlyModifiedForChangeDigest, getVersionHistorySummaries, getVersionsLastEditedByUser, refreshContentEntity, removeContentEntity, removeHistoricalVersion, saveNewVersion
-
Methods inherited from interface com.atlassian.confluence.internal.ContentEntityManagerInternal
getByIdsAndFilters
-
Methods inherited from interface com.atlassian.confluence.pages.PageManager
getNotificationManager, setNotificationManager
-
Methods inherited from interface com.atlassian.confluence.internal.pages.PageManagerInternal
getFilteredAbstractPages, getFilteredAbstractPages, getFilteredAbstractPages, getFilteredAbstractPages, getFilteredAbstractPages, getFilteredAbstractPagesByCreationDate, getFilteredAbstractPagesByTitle, getFilteredBlogPosts, getFilteredPages, getFilteredPages
-
-
-
-
Field Detail
-
EXCERPT_KEY
public static final String EXCERPT_KEY
- See Also:
- Constant Field Values
-
STALE_DRAFT_REMOVE_BATCH_SIZE
public static final String STALE_DRAFT_REMOVE_BATCH_SIZE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
DefaultPageManager
public DefaultPageManager(PageDaoInternal pageDao, AttachmentManager attachmentManager, HibernateSessionManager5 hibernateSessionManager5, WikiToStorageConverter wikiToStorageConverter, com.atlassian.event.api.EventPublisher eventPublisher, BlogPostDao blogPostDao, AbstractPageDaoInternal abstractPageDao, SpaceDao spaceDao, ContentPropertyManager contentPropertyManager, PermissionManager permissionManager, LoginManager loginManager, ExceptionTolerantMigrator revertedContentMigrator, CollaborativeEditingHelper collaborativeEditingHelper, RelationManager relationManager, SpacePermissionQueryManager spacePermissionQueryManager, ContentPermissionManager contentPermissionManager, com.atlassian.beehive.ClusterLockService clusterLockService, LinksUpdater linksUpdater, SpacePermissionManager spacePermissionManager, org.springframework.transaction.PlatformTransactionManager transactionManager, AuditingContext auditingContext, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, UpdateAttachmentsOnFilesystemOnPageMoveHandler updateAttachmentsOnFilesystemOnPageMoveHandler, org.hibernate.SessionFactory sessionFactory, ContentPropertyService contentPropertyService)
- Since:
- 8.0.0
-
DefaultPageManager
@Deprecated public DefaultPageManager(PageDaoInternal pageDao, AttachmentManager attachmentManager, HibernateSessionManager5 hibernateSessionManager5, WikiToStorageConverter wikiToStorageConverter, com.atlassian.event.api.EventPublisher eventPublisher, BlogPostDao blogPostDao, AbstractPageDaoInternal abstractPageDao, SpaceDao spaceDao, ContentPropertyManager contentPropertyManager, PermissionManager permissionManager, LoginManager loginManager, ExceptionTolerantMigrator revertedContentMigrator, CollaborativeEditingHelper collaborativeEditingHelper, RelationManager relationManager, SpacePermissionQueryManager spacePermissionQueryManager, ContentPermissionManager contentPermissionManager, com.atlassian.beehive.ClusterLockService clusterLockService, LinksUpdater linksUpdater, SpacePermissionManager spacePermissionManager, org.springframework.transaction.PlatformTransactionManager transactionManager, AuditingContext auditingContext, RetentionFeatureChecker retentionFeatureChecker, ContentReconciliationManager reconciliationManager, UpdateAttachmentsOnFilesystemOnPageMoveHandler updateAttachmentsOnFilesystemOnPageMoveHandler, org.hibernate.SessionFactory sessionFactory)
Deprecated.since 8.0.0- Since:
- 7.16
-
-
Method Detail
-
createDraft
public AbstractPage createDraft(String contentType, String spaceKey)
Description copied from interface:PageManagerInternal
This method creates a draft- Specified by:
createDraft
in interfacePageManagerInternal
- Parameters:
contentType
- - content type of the draft to create: page or blogpostspaceKey
- - space key of the space to create the draft into- Returns:
- the obj created as draft
- See Also:
ContentEntityObject.DRAFT
-
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 interfacePageManagerInternal
- Parameters:
contentType
- - content type of the draft to create: page or blogpostspaceKey
- - space key of the space to create the draft intoparentPageId
- - 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 interfacePageManagerInternal
- Parameters:
page
- the AbstractPage to retrieve the draft for- Returns:
- the draft for the given AbstractPage if exists, null otherwise
- See Also:
ContentEntityObject.DRAFT
-
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 interfacePageManager
- Parameters:
page
- to renamenewPageTitle
- 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 interfacePageManager
- Parameters:
page
- to renamenewPageTitle
- new title for page
-
getBlogPosts
public @NonNull List<BlogPost> getBlogPosts(Space space, boolean currentOnly)
- Specified by:
getBlogPosts
in interfacePageManager
-
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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
space
- Space to exclude from search. If null, all spaces are searched.blogTitle
- title of a blog post to locatemaxResultCount
- 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 interfacePageManager
- 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 interfacePageManager
-
getPage
public @Nullable Page getPage(long id)
Description copied from interface:PageManager
Retrieve the page with the given content ID.- Specified by:
getPage
in interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfaceContentEntityManager
- Overrides:
getById
in classDefaultContentEntityManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Returns:
- the page specified by the spaceKey and pageTitle, or null if the page cannot be found, or is in the trash.
-
getAbstractPagesByTitle
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPagesByTitle(String title, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.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:
getAbstractPagesByTitle
in interfacePageManagerInternal
- Parameters:
title
- the title of the page or blog post to matchpageRequest
- the pagination requestedfilter
- a predicate to apply to the results before returning- Returns:
- the paginated list of AbstractPages by title
-
getAbstractPagesByCreationDate
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPagesByCreationDate(org.joda.time.DateTime date, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.Description copied from interface:PageManagerInternal
Returns the pages and blog posts created on the given date, that also match the given predicate, limited to the page request.- Specified by:
getAbstractPagesByCreationDate
in interfacePageManagerInternal
- Parameters:
date
- the creation date of the page or blog postpageRequest
- the pagination requestfilter
- a predicate to apply to the results before returning- Returns:
- the paginated list of AbstractPages created on the given date
-
getAbstractPages
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPages(List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.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:
getAbstractPages
in interfacePageManagerInternal
- Parameters:
contentTypes
- types of the content to fetch, pages and or blog postsstatuses
- list of statuses the content can be inpageRequest
- the pagination requestedfilter
- a Predicate to apply to the results before returning- Returns:
- the paginated response of Page entities in the given space
-
getAbstractPages
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPages(Space space, List<ContentType> contentTypes, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.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:
getAbstractPages
in interfacePageManagerInternal
- Parameters:
space
- the space to locate pages incontentTypes
- types of the content to fetch, pages and or blog postsstatuses
- list of statuses the content can be inpageRequest
- the pagination requestedfilter
- a Predicate to apply to the results before returning- Returns:
- the paginated response of Page entities in the given space
-
getAbstractPages
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPages(org.joda.time.DateTime date, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.Description copied from interface:PageManagerInternal
Returns pages and blog posts created on the specified date, that are in any of the given statuses, and also match the given predicate, limited to the page request.- Specified by:
getAbstractPages
in interfacePageManagerInternal
- Parameters:
date
- the creation date to matchstatuses
- list of statuses the content can be inpageRequest
- the pagination requestfilter
- a predicate to apply to the results before returning- Returns:
- the paginated list of AbstractPages created on the given date
-
getAbstractPages
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPages(Space space, String title, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.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:
getAbstractPages
in interfacePageManagerInternal
- Parameters:
space
- space the content belongs totitle
- the title of the page to matchstatuses
- list of statuses the content can be inpageRequest
- the pagination requestedfilter
- 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
-
getAbstractPages
@Deprecated public @NonNull PageResponse<AbstractPage> getAbstractPages(String title, List<ContentStatus> statuses, LimitedRequest pageRequest, com.google.common.base.Predicate<? super AbstractPage>... filter)
Deprecated.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:
getAbstractPages
in interfacePageManagerInternal
- Parameters:
title
- the title of the page to matchstatuses
- list of statuses the content can be inpageRequest
- the pagination requestedfilter
- 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 interfacePageManagerInternal
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
-
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 interfacePageManager
- Parameters:
spaceKey
- The space key (case-insensitive) in which to look for the blogtitle
- 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 interfacePageManager
-
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 interfacePageManager
- 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 interfacePageManager
- Returns:
- a List of descendant titles
-
getDescendents
@Deprecated public @NonNull List getDescendents(Page page)
Deprecated.since 5.5.1. UsegetDescendants(Page)
- Specified by:
getDescendents
in interfacePageManager
-
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 interfacePageManager
- Parameters:
page
- the page being updated with new ancestorsnewParent
- 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 interfacePageManager
-
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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
-
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 interfacePageManager
- Parameters:
space
- the space to remove blog posts fromprogress
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
pageCopyOptions
- hint for us how we should copy page. Need to have READ permission on this page and all its child pagesoriginalPage
- source page. Need to have CREATE permission on itdestinationPage
- destination page
-
deepDeletePage
public final void deepDeletePage(PageDeleteOptions options, Page targetPage)
Description copied from interface:PageManager
Deletes a page hierarchy- Specified by:
deepDeletePage
in interfacePageManager
- Parameters:
options
- options for bulk delete pagestargetPage
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
-
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 interfacePageManager
- 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 interfacePageManagerInternal
- Parameters:
space
- the space to locate pages inpageRequest
- 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 interfacePageManagerInternal
- Parameters:
page
- the page to find children forpageRequest
- the pagination requesteddepth
- 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 interfacePageManager
- Parameters:
page
- the page to find children forpageRequest
- the pagination requesteddepth
- 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 interfacePageManagerInternal
- Parameters:
page
- the page to find children forpageRequest
- the pagination requesteddepth
- 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 interfacePageManager
- Returns:
- The number of pages removed
-
findPreviousBlogPost
public @Nullable BlogPost findPreviousBlogPost(String key, Date time)
- Specified by:
findPreviousBlogPost
in interfacePageManager
-
findNextBlogPost
public @Nullable BlogPost findNextBlogPost(String key, Date time)
- Specified by:
findNextBlogPost
in interfacePageManager
-
trashPage
public void trashPage(AbstractPage page)
- Specified by:
trashPage
in interfacePageManager
-
trashPage
public final void trashPage(AbstractPage page, @NonNull DeleteContext deleteContext)
- Specified by:
trashPage
in interfacePageManager
- Parameters:
page
- page to be trasheddeleteContext
- context aDeleteContext
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 interfacePageManager
- Parameters:
page
- a trashed page
-
movePageToTopLevel
public void movePageToTopLevel(Page page, Space space)
Description copied from interface:PageManager
Move a page to the top level oftargetSpace
. If the top-level pages are manually ordered, the page will be added to the end of the child pages.- Specified by:
movePageToTopLevel
in interfacePageManager
- Parameters:
page
- the page to movespace
- 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 oftargetSpace
.- Specified by:
moveBlogPostToTopLevel
in interfacePageManager
- Parameters:
blogPost
- the blogPost to movespace
- 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 interfacePageManager
- Parameters:
page
- the page to moverefPage
- 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 interfacePageManager
- Parameters:
page
- the page to moverefPage
- 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 interfacePageManager
- Parameters:
page
- the page to movenewParent
- 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 caseThe 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 interfacePageManager
- Parameters:
oldPage
- the page whose children you want to movenewParent
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
startContentId
- The minimum IDendContentId
- The maximum IDmaxRows
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
pageId
- The ID of the latest version of the pagetaskId
- The task ID to look for in previous versionsmaxRows
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
maxCount
- the maximum number of blog posts to retrievespaceKey
- 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 interfacePageManager
- Parameters:
maxCount
- the maximum number of pages to retrievespaceKey
- 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 interfacePageManager
- Parameters:
maxCount
- the maximum number of pages to retrievespaceKey
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManagerInternal
- 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 interfacePageManagerInternal
- Returns:
- the count
-
saveContentEntity
public void saveContentEntity(ContentEntityObject obj, @Nullable SaveContext saveContext)
- Specified by:
saveContentEntity
in interfaceContentEntityManager
- Overrides:
saveContentEntity
in classDefaultContentEntityManager
- Parameters:
obj
- - theContentEntityObject
to savesaveContext
- - aSaveContext
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 interfaceContentEntityManager
- Overrides:
saveContentEntity
in classDefaultContentEntityManager
saveContext
- - aSaveContext
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 interfaceContentEntityManager
- Overrides:
saveNewVersion
in classDefaultContentEntityManager
- 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 versionmodification
- an implementation ofModification
which describes the state changes you requiresaveContext
- the save context (null if you have no specific requirements - or just useContentEntityManager.saveNewVersion(ContentEntityObject, Modification)
).
-
reconcileIfNeeded
public void reconcileIfNeeded(AbstractPage content, @Nullable SaveContext saveContext)
Description copied from interface:PageManagerInternal
This method triggersSynchronyRecoveryEvent
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 toPageUpdateTrigger.LINK_REFACTORING
- Specified by:
reconcileIfNeeded
in interfacePageManagerInternal
- Parameters:
content
- content to be recoveredsaveContext
- context of operation
-
getAuthoredPagesCountByUser
public int getAuthoredPagesCountByUser(String username)
Description copied from interface:PageManager
Get the number of pages that have been created by a particular user- Specified by:
getAuthoredPagesCountByUser
in interfacePageManager
- Parameters:
username
- 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 interfacePageManager
- Parameters:
page
- the page in questionuser
- 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 byversion
. 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 interfaceContentEntityManager
- Overrides:
revertContentEntityBackToVersion
in classDefaultContentEntityManager
- Parameters:
entity
- The ContentEntityObject to revertversion
- The version to revert torevertComment
- A comment to be associated with the revertrevertTitle
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
spaceKey
- the space to look for posts inpostingDate
- 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 interfacePageManager
- Parameters:
spaceKey
- the space to look for posts inpostingDate
- 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 supportedstartIndex
- start number of postsmaxResultCount
- 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 interfacePageManager
- Parameters:
spaceKey
- the space to look for posts inpostingDate
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- 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 interfacePageManager
- Parameters:
spaceKey
- the key of the space to look for blog posts in.- Returns:
- the set of years for which blog posts exist.
-
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 interfacePageManager
- 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 interfacePageManager
-
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 interfacePageManager
- Returns:
- a list of all the current pages in a space
-
getPages
@Deprecated public @NonNull PageResponse<Page> getPages(Space space, LimitedRequest pageRequest, com.google.common.base.Predicate<? super Page>... filters)
Deprecated.Description copied from interface:PageManagerInternal
Returns all the current pages in the space, limited to the pagination request.- Specified by:
getPages
in interfacePageManagerInternal
- Parameters:
space
- the space to locate pages inpageRequest
- the pagination requestedfilters
- a Predicate to apply to the results before returning- Returns:
- the paginated response of Page entities in the given space
-
getPages
@Deprecated public @NonNull PageResponse<Page> getPages(LimitedRequest pageRequest, com.google.common.base.Predicate<? super Page>... filters)
Deprecated.Description copied from interface:PageManagerInternal
Returns all the current pages in this instance of confluence, limited to the pagination request.- Specified by:
getPages
in interfacePageManagerInternal
- Parameters:
pageRequest
- the pagination requestedfilters
- 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 interfacePageManagerInternal
- Parameters:
statuses
- list of content status which we are interested to fetchpageRequest
- the pagination requestedfilter
- 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 interfacePageManagerInternal
- Parameters:
space
- the space to locate pages instatuses
- list of content status which we are interested to fetchpageRequest
- the pagination requestedfilter
- a Predicate to apply to the results before returning- Returns:
- the paginated response of Page entities in the given space
-
getBlogPosts
@Deprecated public @NonNull PageResponse<BlogPost> getBlogPosts(Space space, LimitedRequest pageRequest, com.google.common.base.Predicate<? super BlogPost>... filters)
Deprecated.Description copied from interface:PageManagerInternal
Returns all the current blog posts in the space, limited to the pagination request.- Specified by:
getBlogPosts
in interfacePageManagerInternal
- Parameters:
space
- the space to locate blog posts inpageRequest
- 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 interfacePageManager
- 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 interfacePageManager
-
findPreviousBlogPost
public @Nullable BlogPost findPreviousBlogPost(BlogPost post)
- Specified by:
findPreviousBlogPost
in interfacePageManager
-
findNextBlogPost
public @Nullable BlogPost findNextBlogPost(BlogPost post)
- Specified by:
findNextBlogPost
in interfacePageManager
-
-