Class TreeCommentManager
java.lang.Object
org.nuxeo.ecm.platform.comment.impl.AbstractCommentManager
org.nuxeo.ecm.platform.comment.impl.TreeCommentManager
- All Implemented Interfaces:
CommentManager
Comment service implementation. The comments are linked together as a tree under a folder related to the root
document that we comment.
- Since:
- 11.1
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.nuxeo.ecm.platform.comment.api.CommentManager
CommentManager.Feature -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe key to the config turning on or off autosubscription.protected static final Stringstatic final Stringprotected static final StringDeprecated.protected static final Stringprotected static final Stringprotected static final Stringprotected static final StringCounts how many comments where made on a specific document.protected static final StringCounts how many comments where made by a specific user on a specific document.protected static final StringFields inherited from class org.nuxeo.ecm.platform.comment.impl.AbstractCommentManager
COMMENTS_DIRECTORY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckCreateCommentPermissions(CoreSession session, DocumentRef documentRef) Checks if the user related to thesessioncan comments the document linked to thedocumentRef.createComment(CoreSession session, Comment comment) Creates a comment.createComment(DocumentModel commentedDoc, DocumentModel commentDoc) Creates a comment document model, filling its properties with given info and linking it to given document.createLocatedComment(DocumentModel doc, DocumentModel comment, String path) Creates a comment document model.voiddeleteComment(CoreSession s, String commentId) Deletes a comment.voiddeleteExternalComment(CoreSession session, String documentId, String entityId) Deletes an external comment by its {code entityId} under the document withdocumentId.getComment(CoreSession session, String commentId) Gets a comment.protected DocumentModelgetCommentDocumentModel(CoreSession session, String id) protected PartialList<DocumentModel> getCommentDocuments(CoreSession session, String documentId, Long pageSize, Long currentPageIndex, boolean sortAscending) protected DocumentModelgetCommentedDocument(CoreSession session, DocumentModel commentDoc) getComments(CoreSession session, String documentId, Long pageSize, Long currentPageIndex, boolean sortAscending) Gets all comments for a document.getComments(CoreSession session, Collection<String> documentIds) Gets all comments for a collection of documents.getComments(CoreSession session, DocumentModel doc) Gets comments of a document.getExternalComment(CoreSession session, String documentId, String entityId) Gets an external comment by itsentityIdunder the document withdocumentId.protected DocumentModelgetExternalCommentModel(CoreSession session, String documentId, String entityId) protected DocumentRefgetLocationRefOfCommentCreation(CoreSession session, DocumentModel commentedDoc) Returns theDocumentRefof the comments location in repository for the given commented document model.getThreadForComment(DocumentModel comment) Gets thread in relation with a given comment (post or comment).protected DocumentModelgetTopLevelDocument(CoreSession session, DocumentModel commentDoc) protected voidhandleNotificationAutoSubscriptions(CoreSession session, DocumentModel topLevelDoc, DocumentModel commentDoc) protected booleanhasComments(CoreSession session, DocumentModel document) Returnstrueif the document has comments.protected booleanhasComments(CoreSession session, DocumentModel document, String user) Returnstrueif the documents has comments from the given user.booleanhasFeature(CommentManager.Feature feature) Checks if a feature is available.protected voidmanageRelatedTextOfTopLevelDocument(CoreSession session, DocumentModel topLevelDoc, String commentId, String commentText) Manages (Add, Update or Remove) the related textFacetNames.HAS_RELATED_TEXTof the top level document ancestorAbstractCommentManager.getTopLevelDocumentRef(CoreSession, DocumentRef)for the given comment / annotation.protected voidremoveComment(CoreSession session, DocumentRef documentRef) Remove the comment of the givendocumentRefprotected voidsubscribeToNotifications(DocumentModel document, NuxeoPrincipal user) Subscribes a user to notifications on the document.protected Commentupdate(CoreSession session, Comment comment, DocumentModel commentDoc) updateComment(CoreSession session, String commentId, Comment comment) Updates a comment.updateExternalComment(CoreSession session, String documentId, String entityId, Comment comment) Updates an external comment by itsentityIdunder the document withdocumentId.Methods inherited from class org.nuxeo.ecm.platform.comment.impl.AbstractCommentManager
computeAncestorIds, fillCommentForCreation, getAuthor, getComments, getComments, getComments, getComments, getTopLevelDocumentRef, notifyEvent, notifyEvent, notifyEvent, setCommentPermissionsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.nuxeo.ecm.platform.comment.api.CommentManager
deleteExternalComment, getExternalComment, updateExternalComment
-
Field Details
-
COMMENT_RELATED_TEXT_ID
- See Also:
-
AUTOSUBSCRIBE_CONFIG_KEY
The key to the config turning on or off autosubscription.- See Also:
-
COMMENT_NAME
- See Also:
-
GET_COMMENT_PAGE_PROVIDER_NAME
Deprecated.since 11.1, useGET_EXTERNAL_COMMENT_PAGE_PROVIDER_NAMEinstead- See Also:
-
GET_EXTERNAL_COMMENT_PAGE_PROVIDER_NAME
- See Also:
-
GET_COMMENTS_FOR_DOCUMENT_PAGE_PROVIDER_NAME
- See Also:
-
GET_COMMENTS_FOR_DOCUMENTS_PAGE_PROVIDER_NAME
- See Also:
-
SERVICE_WITHOUT_IMPLEMENTATION_MESSAGE
- See Also:
-
QUERY_GET_COMMENTS_UUID_BY_COMMENT_ANCESTOR
Counts how many comments where made on a specific document.- See Also:
-
QUERY_GET_COMMENTS_UUID_BY_COMMENT_ANCESTOR_AND_AUTHOR
Counts how many comments where made by a specific user on a specific document.- See Also:
-
-
Constructor Details
-
TreeCommentManager
public TreeCommentManager()
-
-
Method Details
-
getComments
Description copied from interface:CommentManagerGets comments of a document.- Parameters:
session- the core sessiondoc- the document model- Returns:
- the list of comments
-
getComment
Description copied from interface:CommentManagerGets a comment.- Parameters:
session- the core sessioncommentId- the comment id- Returns:
- the comment
-
getComments
public PartialList<Comment> getComments(CoreSession session, String documentId, Long pageSize, Long currentPageIndex, boolean sortAscending) Description copied from interface:CommentManagerGets all comments for a document.- Parameters:
session- the core sessiondocumentId- the document idpageSize- the page size to query, give null or 0 to disable paginationcurrentPageIndex- the page index to query, give null or 0 to disable paginationsortAscending- whether to sort ascending or descending- Returns:
- the list of comments, ordered by comment's creation date and according to sortAscending parameter, or an empty list if no comment is found.
-
getComments
Description copied from interface:CommentManagerGets all comments for a collection of documents.- Parameters:
session- the core sessiondocumentIds- the document ids- Returns:
- the list of comments
-
getThreadForComment
Description copied from interface:CommentManagerGets thread in relation with a given comment (post or comment).- Parameters:
comment- the comment- Returns:
- the thread
-
getExternalComment
Description copied from interface:CommentManagerGets an external comment by itsentityIdunder the document withdocumentId.- Returns:
- the comment with given
entityIdunder the document with givendocumentId
-
createComment
Description copied from interface:CommentManagerCreates a comment.- Parameters:
session- the core session- Returns:
- the created comment
-
createComment
Description copied from interface:CommentManagerCreates a comment document model, filling its properties with given info and linking it to given document.- Parameters:
commentedDoc- the document to commentcommentDoc- the comment document model- Returns:
- the created comment document model.
-
createLocatedComment
Description copied from interface:CommentManagerCreates a comment document model. It gives opportunity to save the comments in a specified location.- Parameters:
doc- the document to commentcomment- the comment contentpath- the location path- Returns:
- the comment document model.
-
updateComment
Description copied from interface:CommentManagerUpdates a comment.- Parameters:
session- the core sessioncommentId- the comment idcomment- the updated comment- Returns:
- the updated comment
-
updateExternalComment
public Comment updateExternalComment(CoreSession session, String documentId, String entityId, Comment comment) Description copied from interface:CommentManagerUpdates an external comment by itsentityIdunder the document withdocumentId.- Returns:
- the updated comment with given
entityIdunder the document with givendocumentId
-
update
- Parameters:
session- the user session, in order to check permissionscomment- the comment holding new datacommentDoc- theDocumentModeljust retrieved from DB
-
deleteExternalComment
Description copied from interface:CommentManagerDeletes an external comment by its {code entityId} under the document withdocumentId. -
deleteComment
Description copied from interface:CommentManagerDeletes a comment.- Parameters:
s- the core sessioncommentId- the comment id
-
getLocationRefOfCommentCreation
protected DocumentRef getLocationRefOfCommentCreation(CoreSession session, DocumentModel commentedDoc) Returns theDocumentRefof the comments location in repository for the given commented document model.- Parameters:
session- the session needs to be privileged- Returns:
- the document model container of the comments of the given
commentedDoc - Since:
- 11.1
-
hasFeature
Description copied from interface:CommentManagerChecks if a feature is available. -
getTopLevelDocument
- Specified by:
getTopLevelDocumentin classAbstractCommentManager
-
checkCreateCommentPermissions
Checks if the user related to thesessioncan comments the document linked to thedocumentRef. -
getExternalCommentModel
protected DocumentModel getExternalCommentModel(CoreSession session, String documentId, String entityId) - Parameters:
session- the user session, in order to implicitly check permissions- Returns:
- the external document model for the given
entityId, if it exists, otherwise throws aCommentNotFoundException
-
removeComment
Remove the comment of the givendocumentRef- Parameters:
session- the user session, in order to check permissionsdocumentRef- the documentRef of the comment document model to delete
-
getCommentDocumentModel
- Parameters:
session- the user session, in order to implicitly check permissions- Returns:
- the comment document model of the given
documentRefif it exists, otherwise throws aCommentNotFoundException
-
getCommentDocuments
protected PartialList<DocumentModel> getCommentDocuments(CoreSession session, String documentId, Long pageSize, Long currentPageIndex, boolean sortAscending) - Returns:
- the page provider current page
-
manageRelatedTextOfTopLevelDocument
protected void manageRelatedTextOfTopLevelDocument(CoreSession session, DocumentModel topLevelDoc, String commentId, String commentText) Manages (Add, Update or Remove) the related textFacetNames.HAS_RELATED_TEXTof the top level document ancestorAbstractCommentManager.getTopLevelDocumentRef(CoreSession, DocumentRef)for the given comment / annotation. Each action of adding, updating or removing the comment / annotation text will call this method, which allow us to make the right action on the related text of the top level document.- Add a new Comment / Annotation will create a separate entry
- Update a text Comment / Annotation will update this specific entry
- Remove a Comment / Annotation will remove this specific entry
- Since:
- 11.1
-
getCommentedDocument
- Specified by:
getCommentedDocumentin classAbstractCommentManager
-
hasComments
Returnstrueif the document has comments.- Since:
- 11.1
-
hasComments
Returnstrueif the documents has comments from the given user.- Since:
- 11.1
-
handleNotificationAutoSubscriptions
protected void handleNotificationAutoSubscriptions(CoreSession session, DocumentModel topLevelDoc, DocumentModel commentDoc) -
subscribeToNotifications
Subscribes a user to notifications on the document.- Since:
- 11.1
-
GET_EXTERNAL_COMMENT_PAGE_PROVIDER_NAMEinstead