Class Issue

    • Field Detail

      • DATABASE_ID

        public static final Property<java.lang.Integer> DATABASE_ID
      • SUBJECT

        public static final Property<java.lang.String> SUBJECT
      • START_DATE

        public static final Property<java.util.Date> START_DATE
      • DUE_DATE

        public static final Property<java.util.Date> DUE_DATE
      • CREATED_ON

        public static final Property<java.util.Date> CREATED_ON
      • UPDATED_ON

        public static final Property<java.util.Date> UPDATED_ON
      • DONE_RATIO

        public static final Property<java.lang.Integer> DONE_RATIO
      • PARENT_ID

        public static final Property<java.lang.Integer> PARENT_ID
      • PRIORITY_ID

        public static final Property<java.lang.Integer> PRIORITY_ID
      • ESTIMATED_HOURS

        public static final Property<java.lang.Float> ESTIMATED_HOURS
      • SPENT_HOURS

        public static final Property<java.lang.Float> SPENT_HOURS
      • ASSIGNEE_ID

        public static final Property<java.lang.Integer> ASSIGNEE_ID
      • ASSIGNEE_NAME

        public static final Property<java.lang.String> ASSIGNEE_NAME
      • NOTES

        public static final Property<java.lang.String> NOTES
        Some comment describing an issue update.
      • PRIVATE_NOTES

        public static final Property<java.lang.Boolean> PRIVATE_NOTES
      • PRIORITY_TEXT

        public static final Property<java.lang.String> PRIORITY_TEXT
      • PROJECT_ID

        public static final Property<java.lang.Integer> PROJECT_ID
      • PROJECT_NAME

        public static final Property<java.lang.String> PROJECT_NAME
      • AUTHOR_ID

        public static final Property<java.lang.Integer> AUTHOR_ID
      • AUTHOR_NAME

        public static final Property<java.lang.String> AUTHOR_NAME
      • DESCRIPTION

        public static final Property<java.lang.String> DESCRIPTION
      • CLOSED_ON

        public static final Property<java.util.Date> CLOSED_ON
      • STATUS_ID

        public static final Property<java.lang.Integer> STATUS_ID
      • STATUS_NAME

        public static final Property<java.lang.String> STATUS_NAME
      • PRIVATE_ISSUE

        public static final Property<java.lang.Boolean> PRIVATE_ISSUE
      • CUSTOM_FIELDS

        public static final Property<java.util.Set<CustomField>> CUSTOM_FIELDS
        can't have two custom fields with the same ID in the collection, that's why it is declared as a Set, not a List.
      • CHILDREN

        public static final Property<java.util.Set<Issue>> CHILDREN
    • Constructor Detail

      • Issue

        public Issue()
      • Issue

        public Issue​(Transport transport,
                     int projectId)
        Each Issue object must have project Id set in order for Redmine 3.x to accept it via REST API.
      • Issue

        public Issue​(Transport transport,
                     int projectId,
                     java.lang.String subject)
        Parameters:
        projectId - Each Issue object must have project Id set in order for Redmine 3.x to accept it via REST API.
    • Method Detail

      • getProjectId

        public java.lang.Integer getProjectId()
      • setProjectId

        public Issue setProjectId​(java.lang.Integer projectId)
      • getProjectName

        public java.lang.String getProjectName()
      • setProjectName

        public Issue setProjectName​(java.lang.String name)
      • setId

        public Issue setId​(java.lang.Integer id)
        Parameters:
        id - database ID.
      • getDoneRatio

        public java.lang.Integer getDoneRatio()
      • setDoneRatio

        public Issue setDoneRatio​(java.lang.Integer doneRatio)
      • getPriorityText

        public java.lang.String getPriorityText()
      • setPriorityText

        public void setPriorityText​(java.lang.String priority)
        Deprecated.
        This method has no effect when creating issues on Redmine Server, so we might as well just delete it in the future releases.
      • getAssigneeId

        public java.lang.Integer getAssigneeId()
        Redmine can be configured to allow group assignments for issues: Configuration option: Settings -> Issue Tracking -> Allow issue assignment to groups

        An assignee can be a user or a group

      • setAssigneeId

        public Issue setAssigneeId​(java.lang.Integer assigneeId)
      • getAssigneeName

        public java.lang.String getAssigneeName()
      • setAssigneeName

        public Issue setAssigneeName​(java.lang.String assigneeName)
      • getEstimatedHours

        public java.lang.Float getEstimatedHours()
      • setEstimatedHours

        public Issue setEstimatedHours​(java.lang.Float estimatedTime)
      • getSpentHours

        public java.lang.Float getSpentHours()
      • setSpentHours

        public Issue setSpentHours​(java.lang.Float spentHours)
      • getParentId

        public java.lang.Integer getParentId()
        Parent Issue ID, or NULL for issues without a parent.
        Returns:
        NULL, if there's no parent
      • setParentId

        public Issue setParentId​(java.lang.Integer parentId)
      • getId

        public java.lang.Integer getId()
        Specified by:
        getId in interface Identifiable
        Returns:
        database id for this object. can be NULL for Issues not added to Redmine yet
      • getSubject

        public java.lang.String getSubject()
      • setSubject

        public Issue setSubject​(java.lang.String subject)
      • getStartDate

        public java.util.Date getStartDate()
      • setStartDate

        public Issue setStartDate​(java.util.Date startDate)
      • getDueDate

        public java.util.Date getDueDate()
      • setDueDate

        public Issue setDueDate​(java.util.Date dueDate)
      • getAuthorId

        public java.lang.Integer getAuthorId()
      • setAuthorId

        @Deprecated
        public Issue setAuthorId​(java.lang.Integer id)
        Deprecated.
        Marking as "deprecated": according to Redmine REST API docs https://www.redmine.org/projects/redmine/wiki/Rest_Issues#Creating-an-issue , this parameter is not used when creating issues (January 2020).
      • getAuthorName

        public java.lang.String getAuthorName()
      • setAuthorName

        @Deprecated
        public Issue setAuthorName​(java.lang.String name)
        Deprecated.
        Marking as "deprecated": according to Redmine REST API docs https://www.redmine.org/projects/redmine/wiki/Rest_Issues#Creating-an-issue , this parameter is not used when creating issues (January 2020).
      • getTracker

        public Tracker getTracker()
      • getDescription

        public java.lang.String getDescription()
      • setDescription

        public Issue setDescription​(java.lang.String description)
      • getCreatedOn

        public java.util.Date getCreatedOn()
      • setCreatedOn

        public Issue setCreatedOn​(java.util.Date createdOn)
      • getUpdatedOn

        public java.util.Date getUpdatedOn()
      • setUpdatedOn

        public Issue setUpdatedOn​(java.util.Date updatedOn)
      • getClosedOn

        public java.util.Date getClosedOn()
      • setClosedOn

        public Issue setClosedOn​(java.util.Date closedOn)
      • getStatusId

        public java.lang.Integer getStatusId()
      • setStatusId

        public Issue setStatusId​(java.lang.Integer statusId)
      • getStatusName

        public java.lang.String getStatusName()
      • setStatusName

        public Issue setStatusName​(java.lang.String statusName)
      • getCustomFields

        public java.util.Collection<CustomField> getCustomFields()
        Returns:
        unmodifiable collection of Custom Field objects. the collection may be empty, but it is never NULL.
      • clearCustomFields

        public Issue clearCustomFields()
      • addCustomFields

        public Issue addCustomFields​(java.util.Collection<CustomField> customFields)
        NOTE: The custom field(s) must have correct database ID set to be saved to Redmine. This is Redmine REST API's requirement.
      • addCustomField

        public Issue addCustomField​(CustomField customField)
        If there is a custom field with the same ID already present in the Issue, the new field replaces the old one.
        Parameters:
        customField - the field to add to the issue.
      • getNotes

        @Deprecated
        public java.lang.String getNotes()
        Deprecated.
      • setNotes

        public Issue setNotes​(java.lang.String notes)
        Parameters:
        notes - Some comment describing the issue update
      • isPrivateNotes

        public boolean isPrivateNotes()
      • setPrivateNotes

        public Issue setPrivateNotes​(boolean privateNotes)
        Parameters:
        privateNotes - mark note as private
      • getJournals

        public java.util.Collection<Journal> getJournals()
        Don't forget to use Include.journals flag when loading issue from Redmine server:
             Issue issue = issueManager.getIssueById(3205, Include.journals);
         
        Returns:
        unmodifiable collection of Journal entries or empty collection if no objects found. Never NULL.
        See Also:
        Include.journals
      • addJournals

        public void addJournals​(java.util.Collection<Journal> journals)
        Issue journals are created automatically when you update existing issues. journal entries are essentially log records for changes you make. you cannot just add log records without making actual changes. this API method is misleading and it should only be used internally by Redmine Json parser when parsing response from server. we should hide it from public. TODO hide this method. https://github.com/taskadapter/redmine-java-api/issues/199
      • getChangesets

        public java.util.Collection<Changeset> getChangesets()
        Don't forget to use Include.changesets flag when loading issue from Redmine server:
             Issue issue = issueManager.getIssueById(3205, Include.changesets);
         
        Returns:
        unmodifiable collection of entries or empty collection if no objects found.
        See Also:
        Include.changesets
      • addChangesets

        public Issue addChangesets​(java.util.Collection<Changeset> changesets)
      • getWatchers

        public java.util.Collection<Watcher> getWatchers()
        Don't forget to use Include.watchers flag when loading issue from Redmine server:
             Issue issue = issueManager.getIssueById(3205, Include.watchers);
         
        Returns:
        unmodifiable collection of entries or empty collection if no objects found.
        See Also:
        Include.watchers
      • addWatchers

        public Issue addWatchers​(java.util.Collection<Watcher> watchers)
      • getChildren

        public java.util.Collection<Issue> getChildren()
        Don't forget to use Include.children flag when loading issue from Redmine server:
             Issue issue = issueManager.getIssueById(3205, Include.children);
         
        Returns:
        Collection of entries or empty collection if no objects found.
        See Also:
        Include.children
      • addChildren

        public Issue addChildren​(java.util.Collection<Issue> children)
      • equals

        public boolean equals​(java.lang.Object o)
        Issues are considered equal if their IDs are equal. what about two issues with null ids?
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getCustomFieldById

        public CustomField getCustomFieldById​(int customFieldId)
        Returns:
        the custom field with given Id or NULL if the field is not found
      • getCustomFieldByName

        public CustomField getCustomFieldByName​(java.lang.String customFieldName)
        Returns:
        the custom field with given name or NULL if the field is not found
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getRelations

        public java.util.Collection<IssueRelation> getRelations()
        Relations are only loaded if you include Include.relations when loading the Issue.
             Issue issue = issueManager.getIssueById(3205, Include.relations);
         

        Since the returned collection is not modifiable, you need to use addRelations() method if you want to add elements, e.g.:

             issue.addRelations(Collections.singletonList(relation));
         
        Returns:
        unmodifiable collection of Relations or EMPTY collection if none found. Never returns NULL.
        See Also:
        Include.relations
      • addRelations

        public Issue addRelations​(java.util.Collection<IssueRelation> collection)
      • getPriorityId

        public java.lang.Integer getPriorityId()
      • setPriorityId

        public Issue setPriorityId​(java.lang.Integer priorityId)
      • getTargetVersion

        public Version getTargetVersion()
      • getAttachments

        public java.util.Collection<Attachment> getAttachments()
        Don't forget to use Include.attachments flag when loading issue from Redmine server:
             Issue issue = issueManager.getIssueById(3205, Include.attachments);
         
        Returns:
        unmodifiable collection of entries or empty collection if no objects found.
        See Also:
        Include.attachments
      • addAttachments

        public Issue addAttachments​(java.util.Collection<Attachment> collection)
      • setTargetVersion

        public Issue setTargetVersion​(Version version)
      • isPrivateIssue

        public boolean isPrivateIssue()
        Default value is not determines. it's up to the server what it thinks the default value is if not set.
      • setPrivateIssue

        public Issue setPrivateIssue​(boolean privateIssue)