Interface IssueManager

All Known Implementing Classes:
DefaultIssueManager, MockIssueManager, RequestCachingIssueManager

@PublicApi public interface IssueManager
A class to manage interactions with issues.
  • Method Details

    • getIssue

      @Deprecated org.ofbiz.core.entity.GenericValue getIssue(Long id) throws DataAccessException
      Deprecated.
      Retrieves an issue by its id.
      Parameters:
      id - Issue ID.
      Returns:
      An issue GenericValue.
      Throws:
      DataAccessException - if there is an error in the Data Access Layer.
    • getIssue

      @Deprecated org.ofbiz.core.entity.GenericValue getIssue(String key) throws org.ofbiz.core.entity.GenericEntityException
      Deprecated.
      Retrieves the issue as a GenericValue with the given key.
      Parameters:
      key - the issue key.
      Returns:
      the issue as a GenericValue.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - if there is a problem getting the data
    • getIssueByWorkflow

      @Deprecated org.ofbiz.core.entity.GenericValue getIssueByWorkflow(Long wfid) throws org.ofbiz.core.entity.GenericEntityException
      Deprecated.
      Use getIssueObjectByWorkflow(Long) instead. Since v5.0
      Retrieves an issue GenericValue given a workflow ID. This is used when transitioning through the various steps of a workflow.
      Parameters:
      wfid - workflow ID.
      Returns:
      An issue GenericValue.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • getIssueObjectByWorkflow

      MutableIssue getIssueObjectByWorkflow(Long workflowId) throws org.ofbiz.core.entity.GenericEntityException
      Retrieves an issue given a workflow ID. This is used when transitioning through the various steps of a workflow.
      Parameters:
      workflowId - workflow ID.
      Returns:
      The Issue
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • isExistingIssueKey

      @ExperimentalApi boolean isExistingIssueKey(String issueKey) throws org.ofbiz.core.entity.GenericEntityException
      Returns true if issue with a given key exists (it looks for issues having current issue key set for the value, and moved issue keys that used the key).
      Throws:
      org.ofbiz.core.entity.GenericEntityException
      Since:
      v6.1
    • getIssueObject

      MutableIssue getIssueObject(Long id) throws DataAccessException
      Retrieves an issue by id. This method will always return a new instance of an issue.
      Parameters:
      id - the id
      Returns:
      A MutableIssue
      Throws:
      DataAccessException - if there is an error in the Data Access Layer.
    • getIssueObject

      MutableIssue getIssueObject(String key) throws DataAccessException
      Retrieves the Issue that has the given key, or null if no such Issue exists.

      This method will always return a new instance of an issue object if the issue exists.

      Parameters:
      key - The Issue key.
      Returns:
      a MutableIssue with the given key, or null if no such Issue exists.
      Throws:
      DataAccessException - if there is an error in the Data Access Layer.
    • getIssueByKeyIgnoreCase

      @ExperimentalApi MutableIssue getIssueByKeyIgnoreCase(String key) throws DataAccessException
      Retrieves the Issue that has the given key, or null if no such Issue exists.

      This method will ignore case of issue key.

      Parameters:
      key - The Issue key.
      Returns:
      a MutableIssue with the given key, or null if no such Issue exists.
      Throws:
      DataAccessException - if there is an error in the Data Access Layer.
      Since:
      6.1
    • getIssueByCurrentKey

      @ExperimentalApi MutableIssue getIssueByCurrentKey(String key) throws DataAccessException
      Retrieves the Issue that has the given key, or null if no such Issue exists.

      This method will strictly only return the issue which has current issue key equal to the one given.

      Parameters:
      key - The Issue key.
      Returns:
      a MutableIssue with the given key, or null if no such Issue exists.
      Throws:
      DataAccessException - if there is an error in the Data Access Layer.
      Since:
      6.1
    • getIssues

      @Deprecated List<org.ofbiz.core.entity.GenericValue> getIssues(Collection<Long> ids)
      Deprecated.
      Get issues with the following ids. The issues are sorted in the order that the ids were given in.
      Parameters:
      ids - Issue IDs.
      Returns:
      A collection of issue GenericValues
    • getIssueObjects

      List<Issue> getIssueObjects(Collection<Long> ids)
      Get issues with the following ids. The issues are sorted in the order that the ids were given in. Any ids that are not found will be missing from the list. That is list will not contains nulls.
      Parameters:
      ids - Issue IDs.
      Returns:
      A collection of issue MutableIssues
    • getVotedIssues

      List<Issue> getVotedIssues(ApplicationUser user)
      Get a list of issues that the user has voted on and can see.
      Parameters:
      user - The user.
      Returns:
      A list of Issue objects the user has voted on.
      Since:
      v6.0
    • getVotedIssuesOverrideSecurity

      List<Issue> getVotedIssuesOverrideSecurity(ApplicationUser user)
      Get a list of issues that the user has voted on.
      Parameters:
      user - The user.
      Returns:
      A list of Issue objects the user has voted on.
      Since:
      v6.0
    • getWatchers

      List<ApplicationUser> getWatchers(Issue issue)
      Deprecated.
      Use getWatchersFor(Issue) instead. Since v6.0.
      Return a list of watchers for a particular issue.
      Parameters:
      issue - the Issue
      Returns:
      A list of Users.
    • getWatchersFor

      List<ApplicationUser> getWatchersFor(Issue issue)
      Return a list of watchers for a particular issue.
      Parameters:
      issue - the Issue
      Returns:
      A list of Users.
    • getWatchedIssues

      List<Issue> getWatchedIssues(ApplicationUser user)
      Get a list of issues that the user is watching and can see.
      Parameters:
      user - the User.
      Returns:
      A list of Issue objects
      Since:
      v6.0
    • getWatchedIssuesOverrideSecurity

      List<Issue> getWatchedIssuesOverrideSecurity(ApplicationUser user)
      Get a list of issues that the user is watching
      Parameters:
      user - the User.
      Returns:
      A list of Issue objects
      Since:
      v6.0
    • getEntitiesByIssue

      List<org.ofbiz.core.entity.GenericValue> getEntitiesByIssue(String relationName, org.ofbiz.core.entity.GenericValue issue) throws org.ofbiz.core.entity.GenericEntityException
      Get a list of entities (versions, components etc) related to this issue.
      Parameters:
      relationName - A IssueRelationConstants string indicating some issue relation
      issue - Issue to consider
      Returns:
      A list of entity GenericValues associated with the issue.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • getEntitiesByIssueObject

      List<org.ofbiz.core.entity.GenericValue> getEntitiesByIssueObject(String relationName, Issue issue) throws org.ofbiz.core.entity.GenericEntityException
      Get a list of entities (versions, components etc) related to this issue.
      Parameters:
      relationName - A IssueRelationConstants string indicating some issue relation
      issue - Issue to consider
      Returns:
      A list of entity GenericValues associated with the issue.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • getIssuesByEntity

      List<org.ofbiz.core.entity.GenericValue> getIssuesByEntity(String relationName, org.ofbiz.core.entity.GenericValue entity) throws org.ofbiz.core.entity.GenericEntityException
      Get a list of issues related to an entity (version, component etc).
      Parameters:
      relationName - A IssueRelationConstants string indicating some relation of entity
      entity - The entity related to the issues we're after
      Returns:
      A list of issue GenericValues associated with an entity.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • getIssueObjectsByEntity

      List<Issue> getIssueObjectsByEntity(String relationName, org.ofbiz.core.entity.GenericValue entity) throws org.ofbiz.core.entity.GenericEntityException
      Get a list of issues related to an entity (version, component etc).
      Parameters:
      relationName - A IssueRelationConstants string indicating some relation of entity
      entity - The entity related to the issues we're after
      Returns:
      A list of MutableIssues associated with an entity.
      Throws:
      org.ofbiz.core.entity.GenericEntityException - if it failed to get the list of issues.
    • getAllIssueKeys

      Set<String> getAllIssueKeys(Long issueId)
      Returns all issue keys that are associated with Issue.
      Returns:
      all issue keys (including the current one) associated with the issue
      Since:
      v6.1
      See Also:
      • com.atlassian.jira.issue.changehistory.ChangeHistoryManager#getPreviousIssueKeys(Long)
    • createIssue

      @Deprecated org.ofbiz.core.entity.GenericValue createIssue(String remoteUserName, Map<String,Object> fields) throws CreateException
      Deprecated.
      Use createIssueObject(String, Map) instead since v5.0.
      Creates an issue.
      Parameters:
      remoteUserName - Issue creator
      fields - A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
      Returns:
      GenericValue representing the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
    • createIssueObject

      Issue createIssueObject(String remoteUserName, Map<String,Object> fields) throws CreateException
      Creates an issue.
      Parameters:
      remoteUserName - Issue creator
      fields - A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
      Returns:
      representing the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
      IssueFieldsCharacterLimitExceededException - when issue fields exceed the jira character limit
    • createIssue

      @Deprecated org.ofbiz.core.entity.GenericValue createIssue(ApplicationUser remoteUser, Map<String,Object> fields) throws CreateException
      Deprecated.
      Use #createIssueObject(User, java.util.Map) instead. Since v5.0.
      Creates an issue.
      Parameters:
      remoteUser - Issue creator
      fields - A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
      Returns:
      GenericValue representing the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
    • createIssueObject

      Issue createIssueObject(ApplicationUser remoteUser, Map<String,Object> fields) throws CreateException
      Creates an issue.
      Parameters:
      remoteUser - Issue creator
      fields - A map of the issue's immediate field values. See the Issue definition in entitymodel.xml for values.
      Returns:
      the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
      IssueFieldsCharacterLimitExceededException - when issue fields exceed the jira character limit
    • createIssue

      @Deprecated org.ofbiz.core.entity.GenericValue createIssue(ApplicationUser remoteUser, Issue issue) throws CreateException
      Deprecated.
      Use #createIssueObject(User, Issue) instead. Since v5.0
      Persists a new issue.
      Parameters:
      remoteUser - Issue creator
      issue - The new issue.
      Returns:
      GenericValue representing the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
    • createIssueObject

      Issue createIssueObject(ApplicationUser remoteUser, Issue issue) throws CreateException
      Creates an issue.
      Parameters:
      remoteUser - Issue creator
      issue - The new issue.
      Returns:
      the new issue.
      Throws:
      CreateException - If JIRA is unable to create the issue.
      IssueFieldsCharacterLimitExceededException - when issue fields exceed the jira character limit
    • updateIssue

      Issue updateIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
      This method will store the provided issue to the JIRA datastore.

      The issue will be saved and re-indexed unless EventDispatchOption.DO_NOT_DISPATCH is specified. This method performs no permission checks.

      This method should be used if you want to exert more control over what happens when JIRA updates an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the update.

      Parameters:
      user - who is performing the operation
      issue - the issue to update
      eventDispatchOption - specifies if an event should be sent and if so which should be sent.
      sendMail - if true mail notifications will be sent, otherwise mail notifications will be suppressed.
      Returns:
      the updated issue.
      Throws:
      IssueFieldsCharacterLimitExceededException - when issue fields exceed the jira character limit
      Since:
      v4.0
    • updateIssue

      Issue updateIssue(ApplicationUser user, MutableIssue issue, UpdateIssueRequest updateIssueRequest)
      This method will store the provided issue to the JIRA datastore. The issue will be saved and re-indexed. This method performs no permission checks.

      This method should be used if you want to exert more control over what happens when JIRA updates an issue.

      Parameters:
      user - who is performing the operation
      issue - the issue to update
      updateIssueRequest - details about how to perform the update, including user context, event dispatch strategy and history metadata
      Returns:
      the updated issue.
      Throws:
      IssueFieldsCharacterLimitExceededException - when issue fields exceed the jira character limit
      Since:
      JIRA 6.3
      See Also:
    • archiveIssue

      @ExperimentalApi Issue archiveIssue(ApplicationUser user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail) throws ArchiveException
      This method will archive the issue.

      The issue will be marked as archived and removed from current index. This method performs archiving licence check and permission checks.

      This method also allows you to specify if email notifications should be send to notify users of the update.

      Parameters:
      user - who is performing the operation
      issue - the issue to update
      eventDispatchOption - specifies if an event should be sent and if so which should be sent.
      sendMail - if true mail notifications will be sent, otherwise mail notifications will be suppressed.
      Returns:
      the archived issue.
      Throws:
      ArchiveException
      Since:
      v8.1
    • restoreIssue

      @ExperimentalApi Issue restoreIssue(ApplicationUser user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail) throws ArchiveException
      This method will restore an archived issue.

      The issue will be moved back to index. This method performs archiving licence check and permission checks.

      This method also allows you to specify if email notifications should be send to notify users of the update.

      Parameters:
      user - who is performing the operation
      issue - the issue to update
      eventDispatchOption - specifies if an event should be sent and if so which should be sent.
      sendMail - if true mail notifications will be sent, otherwise mail notifications will be suppressed.
      Returns:
      the archived issue.
      Throws:
      ArchiveException
      Since:
      v8.1
    • deleteIssue

      void deleteIssue(ApplicationUser user, Issue issue, EventDispatchOption eventDispatchOption, boolean sendMail) throws RemoveException
      This method will delete an issue from JIRA.

      This will clean up all issue associations in JIRA and will de-index the issue.

      This method should be used if you want to exert more control over what happens when JIRA deletes an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the deletion.

      Parameters:
      user - who is performing the operation
      issue - the issue to delete.
      eventDispatchOption - specifies if an event should be sent and if so which should be sent.
      sendMail - if true mail notifications will be sent, otherwise mail notifications will be suppressed.
      Throws:
      RemoveException - throw if something goes horribly wrong when deleting the issue.
      Since:
      v5.0
    • deleteIssue

      @Deprecated void deleteIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail) throws RemoveException
      Deprecated.
      Use #deleteIssue(com.atlassian.crowd.embedded.api.User, Issue, com.atlassian.jira.event.type.EventDispatchOption, boolean) instead. Since v5.0.
      This method will delete an issue from JIRA. This will clean up all issue associations in JIRA and will de-index the issue.

      This method should be used if you want to exert more control over what happens when JIRA deletes an issue. This method will allow you to specify if an event is dispatched and if so which event is dispatched, see EventDispatchOption. This method also allows you to specify if email notifications should be send to notify users of the deletion.

      Parameters:
      user - who is performing the operation
      issue - the issue to delete.
      eventDispatchOption - specifies if an event should be sent and if so which should be sent.
      sendMail - if true mail notifications will be sent, otherwise mail notifications will be suppressed.
      Throws:
      RemoveException - throw if something goes horribly wrong when deleting the issue.
      Since:
      v4.0
    • deleteIssueNoEvent

      void deleteIssueNoEvent(Issue issue) throws RemoveException
      Delete issue without firing any events, or sending notifications.

      This is preferred in some bulk operations, but normally you would call #deleteIssue(com.atlassian.crowd.embedded.api.User, Issue, com.atlassian.jira.event.type.EventDispatchOption, boolean)

      Parameters:
      issue - issue to delete
      Throws:
      RemoveException - if the removal fails
      See Also:
      • #deleteIssue(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.Issue, com.atlassian.jira.event.type.EventDispatchOption, boolean)
    • deleteIssueNoEvent

      @Deprecated void deleteIssueNoEvent(MutableIssue issue) throws RemoveException
      Deprecated.
      Delete issue without firing any events, or sending notifications.

      This is preferred in some bulk operations, but normally you would call #deleteIssue(com.atlassian.crowd.embedded.api.User, MutableIssue, com.atlassian.jira.event.type.EventDispatchOption, boolean)

      Parameters:
      issue - issue to delete
      Throws:
      RemoveException - if the removal fails
      See Also:
      • #deleteIssue(com.atlassian.crowd.embedded.api.User, com.atlassian.jira.issue.MutableIssue, com.atlassian.jira.event.type.EventDispatchOption, boolean)
    • getProjectIssues

      @Deprecated List<org.ofbiz.core.entity.GenericValue> getProjectIssues(org.ofbiz.core.entity.GenericValue project) throws org.ofbiz.core.entity.GenericEntityException
      Deprecated.
      only used in test cases, should use a search provider instead.
      Get all the issues for a given project.
      Parameters:
      project - the Project
      Returns:
      a List of GenericValue objects
      Throws:
      org.ofbiz.core.entity.GenericEntityException - If there are errors in the persistence layer.
    • isEditable

      boolean isEditable(Issue issue)
      Returns true if the issue can be edited. This is determined by looking at the workflow step the issue is in.
      Parameters:
      issue - the Issue.
      Returns:
      true if the issue can be edited. This is determined by looking at the workflow step the issue is in.
    • isEditable

      @ExperimentalApi boolean isEditable(@Nonnull Issue issue, @Nonnull String nextStatusId)
      Returns true if the issue can be edited after action. This is determined by looking at the workflow step the issue will be when action is completed.
      Parameters:
      issue - the Issue.
      nextStatusId - the id of the status the issue will be in after transition looking at the workflow status the issue will be in, after the action is completed.
      Since:
      8.3
    • isEditable

      boolean isEditable(Issue issue, ApplicationUser user)
      Returns true if the issue can be edited by the current user. This is determined by looking at both the user's permissions and the workflow step the issue is in.
      Parameters:
      issue - the issue you want to edit
      user - the user who will be performing the edit
      Returns:
      true if the user has permission and the issue is in an editable workflow step
    • getIssueIdsForProject

      Collection<Long> getIssueIdsForProject(Long projectId) throws org.ofbiz.core.entity.GenericEntityException
      Returns all issue ids for a particular project. This uses constant memory (i.e. doesn't load all issues into memory.
      Parameters:
      projectId - Project ID.
      Returns:
      A collection of issue IDs
      Throws:
      org.ofbiz.core.entity.GenericEntityException - An exception in the ofbiz Entity Engine.
    • getIssueCountForProject

      long getIssueCountForProject(Long projectId)
      Returns the number of issues that exist for the provided project id.
      Parameters:
      projectId - identifies the project which the issues are associated with
      Returns:
      a count of how many issues exist in the project
    • hasUnassignedIssues

      boolean hasUnassignedIssues()
      Returns a boolean indicating whether there are unassigned issues.
      Returns:
      a boolean indicating whether there are unassigned issues
      Since:
      5.1
    • getUnassignedIssueCount

      long getUnassignedIssueCount()
      Returns the number of unassigned issues.
      Returns:
      the number of unassigned issues
      Since:
      5.1
    • getIssueCount

      long getIssueCount()
      Returns the number of issues.
      Returns:
      the number of issues
      Since:
      6.3
    • atLeastOneIssueExists

      boolean atLeastOneIssueExists()
      Return true if an issue exists. This is a performance enhancement over counting the issues.
      Returns:
      true if an issue exists
      Since:
      6.3.4
    • findMovedIssue

      @Internal Issue findMovedIssue(String oldIssueKey)
      Returns an issue that has been moved by searching on the old issue key.
      Parameters:
      oldIssueKey - the original key of an issue that has since been moved (moving between projects assigns a new key to an issue)
      Returns:
      the moved Issue object
    • recordMovedIssueKey

      @Internal void recordMovedIssueKey(Issue oldIssue)
      Used internally when we want to record that an Issue has changed its Issue key (because it has moved project).
      Parameters:
      oldIssue - The issue with it's old issue key
    • getProjectIssueTypePairsByKeys

      @Internal @Nonnull Set<Pair<Long,String>> getProjectIssueTypePairsByKeys(@Nonnull Set<String> issueKeys)
      Returns a set of project ID / issue type combinations that given issue keys cover.
      Parameters:
      issueKeys - Set of issue keys
      Returns:
      Project ID / issue type pairs
    • getProjectIssueTypePairsByIds

      @Internal @Nonnull Set<Pair<Long,String>> getProjectIssueTypePairsByIds(@Nonnull Set<Long> issueIds)
      Returns a set of project ID / issue type combinations that given issue IDs cover.
      Parameters:
      issueIds - Set of issue IDs
      Returns:
      Project ID / issue type pairs
    • getKeysOfMissingIssues

      @Internal @Nonnull Set<String> getKeysOfMissingIssues(@Nonnull Set<String> issueKeys)
      Check existence of issues for the given set of keys
      Parameters:
      issueKeys - Set of issue keys
      Returns:
      Set of invalid keys or the ones that don't represent an issue
    • getIdsOfMissingIssues

      @Internal @Nonnull Set<Long> getIdsOfMissingIssues(@Nonnull Set<Long> issueIds)
      Check existence of issues for the given set of IDs
      Parameters:
      issueIds - Set of issue IDs
      Returns:
      Set of IDs that don't represent an issue