Package com.taskadapter.redmineapi.bean
Class Issue
- java.lang.Object
-
- com.taskadapter.redmineapi.bean.Issue
-
- All Implemented Interfaces:
Identifiable
public class Issue extends java.lang.Object implements Identifiable
Redmine's Issue.Note that methods returning lists of elements (like getRelations(), getWatchers(), etc return unmodifiable collections. You need to use methods like addRelations() if you want to add elements, e.g.:
issue.addRelations(Collections.singletonList(relation));
-
-
Field Summary
Fields Modifier and Type Field Description static Property<java.lang.Integer>ASSIGNEE_IDstatic Property<java.lang.String>ASSIGNEE_NAMEstatic Property<java.util.Set<Attachment>>ATTACHMENTSstatic Property<java.lang.Integer>AUTHOR_IDstatic Property<java.lang.String>AUTHOR_NAMEstatic Property<java.util.Set<Changeset>>CHANGESETSstatic Property<java.util.Set<Issue>>CHILDRENstatic Property<java.util.Date>CLOSED_ONstatic Property<java.util.Date>CREATED_ONstatic Property<java.util.Set<CustomField>>CUSTOM_FIELDScan't have two custom fields with the same ID in the collection, that's why it is declared as a Set, not a List.static Property<java.lang.Integer>DATABASE_IDstatic Property<java.lang.String>DESCRIPTIONstatic Property<java.lang.Integer>DONE_RATIOstatic Property<java.util.Date>DUE_DATEstatic Property<java.lang.Float>ESTIMATED_HOURSstatic Property<IssueCategory>ISSUE_CATEGORYstatic Property<java.util.Set<Journal>>JOURNALSstatic Property<java.lang.String>NOTESSome comment describing an issue update.static Property<java.lang.Integer>PARENT_IDstatic Property<java.lang.Integer>PRIORITY_IDstatic Property<java.lang.String>PRIORITY_TEXTstatic Property<java.lang.Boolean>PRIVATE_ISSUEstatic Property<java.lang.Boolean>PRIVATE_NOTESstatic Property<java.lang.Integer>PROJECT_IDstatic Property<java.lang.String>PROJECT_NAMEstatic Property<java.util.Set<IssueRelation>>RELATIONSstatic Property<java.lang.Float>SPENT_HOURSstatic Property<java.util.Date>START_DATEstatic Property<java.lang.Integer>STATUS_IDstatic Property<java.lang.String>STATUS_NAMEstatic Property<java.lang.String>SUBJECTstatic Property<Version>TARGET_VERSIONstatic Property<Tracker>TRACKERstatic Property<java.util.Date>UPDATED_ONstatic Property<java.util.Set<Watcher>>WATCHERS
-
Constructor Summary
Constructors Constructor Description Issue()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddAttachment(Attachment attachment)voidaddAttachments(java.util.Collection<Attachment> collection)voidaddChangesets(java.util.Collection<Changeset> changesets)voidaddChildren(java.util.Collection<Issue> children)voidaddCustomField(CustomField customField)If there is a custom field with the same ID already present in the Issue, the new field replaces the old one.voidaddCustomFields(java.util.Collection<CustomField> customFields)NOTE: The custom field(s) must have correct database ID set to be saved to Redmine.voidaddJournals(java.util.Collection<Journal> journals)Issue journals are created automatically when you update existing issues.voidaddRelations(java.util.Collection<IssueRelation> collection)voidaddWatchers(java.util.Collection<Watcher> watchers)voidclearCustomFields()booleanequals(java.lang.Object o)Issues are considered equal if their IDs are equal.java.lang.IntegergetAssigneeId()Redmine can be configured to allow group assignments for issues: Configuration option: Settings -> Issue Tracking -> Allow issue assignment to groupsjava.lang.StringgetAssigneeName()java.util.Collection<Attachment>getAttachments()Don't forget to use Include.attachments flag when loading issue from Redmine server:java.lang.IntegergetAuthorId()java.lang.StringgetAuthorName()IssueCategorygetCategory()java.util.Collection<Changeset>getChangesets()Don't forget to use Include.changesets flag when loading issue from Redmine server:java.util.Collection<Issue>getChildren()Don't forget to use Include.children flag when loading issue from Redmine server:java.util.DategetClosedOn()java.util.DategetCreatedOn()CustomFieldgetCustomFieldById(int customFieldId)CustomFieldgetCustomFieldByName(java.lang.String customFieldName)java.util.Collection<CustomField>getCustomFields()java.lang.StringgetDescription()java.lang.IntegergetDoneRatio()java.util.DategetDueDate()java.lang.FloatgetEstimatedHours()java.lang.IntegergetId()java.util.Collection<Journal>getJournals()Don't forget to use Include.journals flag when loading issue from Redmine server:java.lang.StringgetNotes()Deprecated.java.lang.IntegergetParentId()Parent Issue ID, or NULL for issues without a parent.java.lang.IntegergetPriorityId()java.lang.StringgetPriorityText()java.lang.IntegergetProjectId()java.lang.StringgetProjectName()java.util.Collection<IssueRelation>getRelations()Relations are only loaded if you include Include.relations when loading the Issue.java.lang.FloatgetSpentHours()java.util.DategetStartDate()java.lang.IntegergetStatusId()java.lang.StringgetStatusName()PropertyStoragegetStorage()java.lang.StringgetSubject()VersiongetTargetVersion()TrackergetTracker()java.util.DategetUpdatedOn()java.util.Collection<Watcher>getWatchers()Don't forget to use Include.watchers flag when loading issue from Redmine server:inthashCode()booleanisPrivateIssue()Default value is not determines.booleanisPrivateNotes()voidsetAssigneeId(java.lang.Integer assigneeId)voidsetAssigneeName(java.lang.String assigneeName)voidsetAuthorId(java.lang.Integer id)voidsetAuthorName(java.lang.String name)voidsetCategory(IssueCategory category)voidsetClosedOn(java.util.Date closedOn)voidsetCreatedOn(java.util.Date createdOn)voidsetDescription(java.lang.String description)voidsetDoneRatio(java.lang.Integer doneRatio)voidsetDueDate(java.util.Date dueDate)voidsetEstimatedHours(java.lang.Float estimatedTime)voidsetNotes(java.lang.String notes)voidsetParentId(java.lang.Integer parentId)voidsetPriorityId(java.lang.Integer priorityId)voidsetPriorityText(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.voidsetPrivateIssue(boolean privateIssue)voidsetPrivateNotes(boolean privateNotes)voidsetProjectId(java.lang.Integer projectId)voidsetProjectName(java.lang.String name)voidsetSpentHours(java.lang.Float spentHours)voidsetStartDate(java.util.Date startDate)voidsetStatusId(java.lang.Integer statusId)voidsetStatusName(java.lang.String statusName)voidsetSubject(java.lang.String subject)voidsetTargetVersion(Version version)voidsetTracker(Tracker tracker)voidsetUpdatedOn(java.util.Date updatedOn)java.lang.StringtoString()
-
-
-
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
-
ISSUE_CATEGORY
public static final Property<IssueCategory> ISSUE_CATEGORY
-
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.
-
RELATIONS
public static final Property<java.util.Set<IssueRelation>> RELATIONS
-
ATTACHMENTS
public static final Property<java.util.Set<Attachment>> ATTACHMENTS
-
-
Method Detail
-
getProjectId
public java.lang.Integer getProjectId()
-
setProjectId
public void setProjectId(java.lang.Integer projectId)
-
getProjectName
public java.lang.String getProjectName()
-
setProjectName
public void setProjectName(java.lang.String name)
-
getDoneRatio
public java.lang.Integer getDoneRatio()
-
setDoneRatio
public void 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 groupsAn assignee can be a user or a group
-
setAssigneeId
public void setAssigneeId(java.lang.Integer assigneeId)
-
getAssigneeName
public java.lang.String getAssigneeName()
-
setAssigneeName
public void setAssigneeName(java.lang.String assigneeName)
-
getEstimatedHours
public java.lang.Float getEstimatedHours()
-
setEstimatedHours
public void setEstimatedHours(java.lang.Float estimatedTime)
-
getSpentHours
public java.lang.Float getSpentHours()
-
setSpentHours
public void 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 void setParentId(java.lang.Integer parentId)
-
getId
public java.lang.Integer getId()
- Specified by:
getIdin interfaceIdentifiable- Returns:
- database id for this object. can be NULL for Issues not added to Redmine yet
-
getSubject
public java.lang.String getSubject()
-
setSubject
public void setSubject(java.lang.String subject)
-
getStartDate
public java.util.Date getStartDate()
-
setStartDate
public void setStartDate(java.util.Date startDate)
-
getDueDate
public java.util.Date getDueDate()
-
setDueDate
public void setDueDate(java.util.Date dueDate)
-
getAuthorId
public java.lang.Integer getAuthorId()
-
setAuthorId
public void setAuthorId(java.lang.Integer id)
-
getAuthorName
public java.lang.String getAuthorName()
-
setAuthorName
public void setAuthorName(java.lang.String name)
-
getTracker
public Tracker getTracker()
-
setTracker
public void setTracker(Tracker tracker)
-
getDescription
public java.lang.String getDescription()
-
setDescription
public void setDescription(java.lang.String description)
-
getCreatedOn
public java.util.Date getCreatedOn()
-
setCreatedOn
public void setCreatedOn(java.util.Date createdOn)
-
getUpdatedOn
public java.util.Date getUpdatedOn()
-
setUpdatedOn
public void setUpdatedOn(java.util.Date updatedOn)
-
getClosedOn
public java.util.Date getClosedOn()
-
setClosedOn
public void setClosedOn(java.util.Date closedOn)
-
getStatusId
public java.lang.Integer getStatusId()
-
setStatusId
public void setStatusId(java.lang.Integer statusId)
-
getStatusName
public java.lang.String getStatusName()
-
setStatusName
public void 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 void clearCustomFields()
-
addCustomFields
public void 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 limitation.
-
addCustomField
public void 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 void setNotes(java.lang.String notes)
- Parameters:
notes- Some comment describing the issue update
-
isPrivateNotes
public boolean isPrivateNotes()
-
setPrivateNotes
public void 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 void 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 void 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 void 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:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.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:
toStringin classjava.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 void addRelations(java.util.Collection<IssueRelation> collection)
-
getPriorityId
public java.lang.Integer getPriorityId()
-
setPriorityId
public void 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 void addAttachments(java.util.Collection<Attachment> collection)
-
addAttachment
public void addAttachment(Attachment attachment)
-
setTargetVersion
public void setTargetVersion(Version version)
-
getCategory
public IssueCategory getCategory()
-
setCategory
public void setCategory(IssueCategory category)
-
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 void setPrivateIssue(boolean privateIssue)
-
getStorage
public PropertyStorage getStorage()
-
-