public class DefaultCommentManager extends Object implements CommentManager, GroupConfigurable
Modifier and Type | Field and Description |
---|---|
static String |
COMMENT_ENTITY |
EVENT_ORIGINAL_COMMENT_PARAMETER
Constructor and Description |
---|
DefaultCommentManager(ProjectRoleManager projectRoleManager,
CommentPermissionManager commentPermissionManager,
OfBizDelegator delegator,
JiraAuthenticationContext jiraAuthenticationContext,
TextFieldCharacterLengthValidator textFieldCharacterLengthValidator,
UserManager userManager,
JsonEntityPropertyManager jsonEntityPropertyManager,
CommentPropertyHelper commentPropertyHelper,
CommentSearchManager commentSearchManager,
CommentEventPublisher commentEventPublisher,
IssueUpdater issueUpdater,
DbConnectionManager dbConnectionManager,
QueryDSLCommentFactory queryDSLCommentFactory,
QueryDslAccessor queryDslAccessor) |
Modifier and Type | Method and Description |
---|---|
Comment |
convertToComment(org.ofbiz.core.entity.GenericValue gv)
This is a convenience method that can be used to convert a GenericValue representation of a comment to a comment
object.
|
Comment |
create(Issue issue,
ApplicationUser author,
ApplicationUser updateAuthor,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Date updated,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
ApplicationUser updateAuthor,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Date updated,
boolean dispatchEvent,
boolean modifyIssueUpdateDate)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
ApplicationUser updateAuthor,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Date updated,
Map<String,JSONObject> commentProperties,
boolean dispatchEvent,
boolean modifyIssueUpdateDate)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
String body,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
String body,
String groupLevel,
Long roleLevelId,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
String body,
String groupLevel,
Long roleLevelId,
Date created,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
ApplicationUser author,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Map<String,JSONObject> commentProperties,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
String author,
String body,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
String author,
String body,
String groupLevel,
Long roleLevelId,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
String author,
String body,
String groupLevel,
Long roleLevelId,
Date created,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
String author,
String updateAuthor,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Date updated,
boolean dispatchEvent)
Creates a comment and associates it with the given issue.
|
Comment |
create(Issue issue,
String author,
String updateAuthor,
String body,
String groupLevel,
Long roleLevelId,
Date created,
Date updated,
boolean dispatchEvent,
boolean modifyIssueUpdateDate)
Creates a comment and associates it with the given issue.
|
ChangeItemBean |
delete(Comment comment)
Deletes the specified comment.
|
void |
delete(Comment comment,
boolean dispatchEvent,
ApplicationUser user)
Deletes the specified comment.
|
void |
deleteCommentsForIssue(Issue issue) |
Comment |
getCommentById(Long commentId)
Will return a comment for the passed in commentId.
|
List<Comment> |
getComments(Issue issue)
This will return all comments for a given issue.
|
List<Comment> |
getCommentsForUser(Issue issue,
ApplicationUser user)
Retrieves all
Comment s on the given Issue that the given ApplicationUser
has permission to see. |
List<Comment> |
getCommentsForUserSince(Issue issue,
ApplicationUser user,
Date since)
Retrieves
Comment s that were created or updated after the provided date, on the given Issue that the
given ApplicationUser has permission to see. |
CommentSummary |
getCommentSummary(ApplicationUser user,
Issue issue,
Optional<Long> focusedCommentId)
Method that will return a summary of comments required to render the initial view issue page.
|
long |
getCountForCommentsRestrictedByGroup(String groupName)
Returns the count of all
Comment 's that have their visibility restricted by the named group. |
long |
getCountForCommentsRestrictedByRole(Long roleId)
Returns the count of all
Comment 's that have their visibility restricted by the role with the given id. |
Comment |
getLastComment(Issue issue)
|
MutableComment |
getMutableComment(Long commentId)
Retrieves comment by given id and returns it as mutable object.
|
ProjectRole |
getProjectRole(Long projectRoleId)
This is a convenience method to allow us to easily get a ProjectRole.
|
boolean |
isGroupUsed(com.atlassian.crowd.embedded.api.Group group)
Determine whether configuration exists for the specified
Group . |
boolean |
isUserCommentAuthor(ApplicationUser user,
Comment comment)
Returns true if the given user is the author of the given comment.
|
java.util.stream.Stream<Comment> |
streamComments(ApplicationUser user,
Issue issue)
Streams every comment of the given issue that is visible to the user.
|
int |
swapCommentGroupRestriction(String groupName,
String swapGroup)
Updates
Comment 's such that comments that have a visibility restriction of the provided groupName will be
changed to have a visibility restriction of the provided swapGroup. |
int |
swapCommentRoleRestriction(Long roleId,
Long swapRoleId)
Updates
Comment 's such that comments that have a visibility restriction of the provided role will be
changed to have a visibility restriction of the role with the provided swapRoleId. |
void |
update(Comment comment,
boolean dispatchEvent)
Persists the updated comment.
|
void |
update(Comment comment,
Map<String,JSONObject> commentProperties,
boolean dispatchEvent)
Persists the updated comment.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
isGroupUsed
public static final String COMMENT_ENTITY
public DefaultCommentManager(ProjectRoleManager projectRoleManager, CommentPermissionManager commentPermissionManager, OfBizDelegator delegator, JiraAuthenticationContext jiraAuthenticationContext, TextFieldCharacterLengthValidator textFieldCharacterLengthValidator, UserManager userManager, JsonEntityPropertyManager jsonEntityPropertyManager, CommentPropertyHelper commentPropertyHelper, CommentSearchManager commentSearchManager, CommentEventPublisher commentEventPublisher, IssueUpdater issueUpdater, DbConnectionManager dbConnectionManager, QueryDSLCommentFactory queryDSLCommentFactory, QueryDslAccessor queryDslAccessor)
public ProjectRole getProjectRole(Long projectRoleId)
CommentManager
ProjectRole
.
ProjectRole
then you should be using the ProjectRoleManager
.getProjectRole
in interface CommentManager
projectRoleId
- the id to the ProjectRole
object you would like returned.public Comment convertToComment(org.ofbiz.core.entity.GenericValue gv)
CommentManager
convertToComment
in interface CommentManager
gv
- is the GenericValue representation of a comment.public Comment getCommentById(Long commentId)
CommentManager
getCommentById
in interface CommentManager
commentId
- the id representing the Comment
you would like to retrieve.Comment
or null (if the user cannot browse the comment).public MutableComment getMutableComment(Long commentId)
CommentManager
getMutableComment
in interface CommentManager
commentId
- comment idpublic List<Comment> getCommentsForUser(Issue issue, ApplicationUser user)
CommentManager
Comment
s on the given Issue that the given ApplicationUser
has permission to see. If the passed in user is null, only comments with no permission level set will be
returned.
getCommentsForUser
in interface CommentManager
issue
- the comments are associated with.user
- the user whose permission level will be used to limit the comments returned.Comment
spublic java.util.stream.Stream<Comment> streamComments(@Nullable ApplicationUser user, @Nonnull Issue issue)
CommentManager
streamComments
in interface CommentManager
user
- the user to check permissions against, or null if anonymousissue
- issue for which to get commentspublic CommentSummary getCommentSummary(@Nullable ApplicationUser user, @Nonnull Issue issue, @Nonnull Optional<Long> focusedCommentId)
CommentManager
APKeys.COMMENT_COLLAPSING_MINIMUM_HIDDEN
) then all comments will be
returned (similar to the results of calling CommentManager.getCommentsForUser(Issue, ApplicationUser)
.getCommentSummary
in interface CommentManager
user
- the user whose permission level will be used to limit the comments returned.issue
- the comments are associated with.focusedCommentId
- optional id of a comment to focus. If the summary doesn't contain the focusedComment, then all comments are retrievedpublic Comment getLastComment(Issue issue)
CommentManager
Comment
on the given Issue
. For performance reasons this method does not
take into account access level of the user logged in. As a result, output of this method might not be the same as
what is presented in the application UI to users.getLastComment
in interface CommentManager
issue
- the comments are associated with.@Nonnull public List<Comment> getCommentsForUserSince(@Nonnull Issue issue, @Nullable ApplicationUser user, @Nonnull Date since)
CommentManager
Comment
s that were created or updated after the provided date, on the given Issue that the
given ApplicationUser
has permission to see. If the passed in user is null, only
comments with no permission level set will be returned.
getCommentsForUserSince
in interface CommentManager
issue
- the comments are associated with. Must not be nulluser
- the user whose permission level will be used to limit the comments returned.since
- only comments created or updated after this date will be returned. Must not be null.Comment
spublic List<Comment> getComments(Issue issue)
CommentManager
User
please use CommentManager.getCommentsForUser(com.atlassian.jira.issue.Issue, com.atlassian.jira.user.ApplicationUser)
)}getComments
in interface CommentManager
issue
- the comments are associated with.public Comment create(Issue issue, ApplicationUser author, String body, boolean dispatchEvent)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, String author, String body, boolean dispatchEvent)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, ApplicationUser author, String body, String groupLevel, Long roleLevelId, boolean dispatchEvent) throws DataAccessException
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.DataAccessException
public Comment create(Issue issue, String author, String body, String groupLevel, Long roleLevelId, boolean dispatchEvent)
CommentManager
NOTE: A comment should not have both a group level and role level visibility restriction. This method will not stop this, but it does not semantically make sense.
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, ApplicationUser author, String body, String groupLevel, Long roleLevelId, Date created, boolean dispatchEvent) throws DataAccessException
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.DataAccessException
public Comment create(Issue issue, ApplicationUser author, String body, String groupLevel, Long roleLevelId, Date created, Map<String,JSONObject> commentProperties, boolean dispatchEvent)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.commentProperties
- Comment properties that should be attached to the created comment before the comment can
be considered 'created'. May be null.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, String author, String body, String groupLevel, Long roleLevelId, Date created, boolean dispatchEvent)
CommentManager
NOTE: A comment should not have both a group level and role level visibility restriction. This method will not stop this, but it does not semantically make sense.
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.body
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, ApplicationUser author, ApplicationUser updateAuthor, String body, String groupLevel, Long roleLevelId, Date created, Date updated, boolean dispatchEvent) throws DataAccessException
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.updateAuthor
- the key of the user who has updated this comment lastbody
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.updated
- is the date that will be used as the comments updated date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.DataAccessException
public Comment create(Issue issue, String author, String updateAuthor, String body, String groupLevel, Long roleLevelId, Date created, Date updated, boolean dispatchEvent)
CommentManager
NOTE: A comment should not have both a group level and role level visibility restriction. This method will not stop this, but it does not semantically make sense.
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.updateAuthor
- the key of the user who has updated this comment lastbody
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.updated
- is the date that will be used as the comments updated date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public Comment create(Issue issue, ApplicationUser author, ApplicationUser updateAuthor, String body, String groupLevel, Long roleLevelId, Date created, Date updated, boolean dispatchEvent, boolean modifyIssueUpdateDate)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.updateAuthor
- the key of the user who has updated this comment lastbody
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.updated
- is the date that will be used as the comments updated date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.modifyIssueUpdateDate
- if true the issue's "updated" date will set to the date of this comment (unless the
given date is earlier than the current issue update date).public Comment create(Issue issue, ApplicationUser author, ApplicationUser updateAuthor, String body, String groupLevel, Long roleLevelId, Date created, Date updated, Map<String,JSONObject> commentProperties, boolean dispatchEvent, boolean modifyIssueUpdateDate)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.updateAuthor
- the key of the user who has updated this comment lastbody
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.updated
- is the date that will be used as the comments updated date.commentProperties
- Comment properties that should be attached to the created comment before the comment can
be considered 'created'dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.modifyIssueUpdateDate
- if true the issue's "updated" date will set to the date of this comment (unless the
given date is earlier than the current issue update date).public Comment create(Issue issue, String author, String updateAuthor, String body, String groupLevel, Long roleLevelId, Date created, Date updated, boolean dispatchEvent, boolean modifyIssueUpdateDate)
CommentManager
create
in interface CommentManager
issue
- the issue to associate the comment with.author
- the key of the user who has created this comment.updateAuthor
- the key of the user who has updated this comment lastbody
- the text of the comment.groupLevel
- is the group name to limit comment visibility to, this must be a valid group name.roleLevelId
- is the id of the the ProjectRole
to limit comment visibility to, this must reference a
valid project role.created
- is the date that will be used as the comments creation date.updated
- is the date that will be used as the comments updated date.dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENTED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.modifyIssueUpdateDate
- if true the issue's "updated" date will set to the date of this comment (unless the
given date is earlier than the current issue update date).public void update(Comment comment, boolean dispatchEvent)
CommentManager
update
in interface CommentManager
comment
- to updatedispatchEvent
- if true then an event of type EventType.ISSUE_COMMENT_EDITED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public void update(Comment comment, Map<String,JSONObject> commentProperties, boolean dispatchEvent)
CommentManager
update
in interface CommentManager
comment
- to updatecommentProperties
- Comment properties that should be attached to the created comment before the comment can
be considered 'created'dispatchEvent
- if true then an event of type EventType.ISSUE_COMMENT_EDITED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched.public ChangeItemBean delete(Comment comment)
CommentManager
delete
in interface CommentManager
comment
- to deletepublic void delete(Comment comment, boolean dispatchEvent, ApplicationUser user)
CommentManager
delete
in interface CommentManager
comment
- to deletedispatchEvent
- if true then an event of type EventType.ISSUE_COMMENT_DELETED_ID
will be dispatched and any notifications listening for that event will be triggered. If false no event will be
dispatched. Together with IssueEvent
CommentDeletedEvent
user
- who executes this action.
will be dispatched.public void deleteCommentsForIssue(Issue issue)
deleteCommentsForIssue
in interface CommentManager
public boolean isUserCommentAuthor(ApplicationUser user, Comment comment)
CommentManager
If the given Comment has a null author, this represents that it was created anonymously, and no-one is the author (returns false). If the given User is null, then this represents that the current user is anonymous, and the method will always return false.
isUserCommentAuthor
in interface CommentManager
user
- The User. Can be null to represent current user is not logged in (anonymous).comment
- The Comment. Cannot be null.public int swapCommentGroupRestriction(String groupName, String swapGroup)
CommentManager
Comment
's such that comments that have a visibility restriction of the provided groupName will be
changed to have a visibility restriction of the provided swapGroup.
swapCommentGroupRestriction
in interface CommentManager
groupName
- identifies the group the comments are restricted by, this must not be null.swapGroup
- identifies the group the comments will be changed to be restricted by, this must not be null.public int swapCommentRoleRestriction(Long roleId, Long swapRoleId)
CommentManager
Comment
's such that comments that have a visibility restriction of the provided role will be
changed to have a visibility restriction of the role with the provided swapRoleId.
swapCommentRoleRestriction
in interface CommentManager
roleId
- identifies the role the comments are restricted by, this must not be null.swapRoleId
- identifies the role the comments will be changed to be restricted by, this must not be null.public long getCountForCommentsRestrictedByGroup(String groupName)
CommentManager
Comment
's that have their visibility restricted by the named group.getCountForCommentsRestrictedByGroup
in interface CommentManager
groupName
- identifies the group the comments are restricted by, this must not be null.Comment
's who's visibility are restricted by the passed in group name.public long getCountForCommentsRestrictedByRole(Long roleId)
CommentManager
Comment
's that have their visibility restricted by the role with the given id.getCountForCommentsRestrictedByRole
in interface CommentManager
roleId
- identifies the role the comments are restricted by, this must not be null.Comment
's who's visibility are restricted by the role with the passed in role id.public boolean isGroupUsed(@Nonnull com.atlassian.crowd.embedded.api.Group group)
GroupConfigurable
Group
.isGroupUsed
in interface GroupConfigurable
group
- that may or may not exist.Copyright © 2002-2021 Atlassian. All Rights Reserved.