package com.taskadapter.redmineapi.bean;
import java.io.Serializable;
/**
* Redmine issue category.
*/
public class IssueCategory implements Identifiable, Serializable {
private static final long serialVersionUID = -109010410391968475L;
private final PropertyStorage storage;
/**
* database numeric ID.
*/
public final static Property<Integer> DATABASE_ID = new Property<>(Integer.class, "id");
public final static Property<String> NAME = new Property<>(String.class, "name");
public final static Property<Integer> PROJECT_ID = new Property<>(Integer.class, "projectId");
public final static Property<Integer> ASSIGNEE_ID = new Property<>(Integer.class, "assigneeId");
public final static Property<String> ASSIGNEE_NAME = new Property<>(String.class, "assigneeName");
/**
* @param id database ID.
*/
IssueCategory(Integer id) {
storage = new PropertyStorage();
storage.set(DATABASE_ID, id);
}
public Integer getId() {
return storage.get(DATABASE_ID);
}
public String getName() {
return storage.get(NAME);
}
public void setName(String name) {
storage.set(NAME, name);
}
public Integer getProjectId() {
return storage.get(PROJECT_ID);
}
public void setProjectId(Integer projectId) {
storage.set(PROJECT_ID, projectId);
}
/**
* Redmine can be configured to allow group assignments for issues:
* Configuration option: Settings -> Issue Tracking -> Allow issue assignment to groups
*
* <p>An assignee can be a user or a group</p>
*/
public Integer getAssigneeId() {
return storage.get(ASSIGNEE_ID);
}
public void setAssigneeId(Integer assigneeId) {
storage.set(ASSIGNEE_ID, assigneeId);
}
public String getAssigneeName() {
return storage.get(ASSIGNEE_NAME);
}
public void setAssigneeName(String assigneeName) {
storage.set(ASSIGNEE_NAME, assigneeName);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
IssueCategory that = (IssueCategory) o;
if (getId() != null ? !getId().equals(that.getId()) : that.getId() != null) return false;
return true;
}
@Override
public int hashCode() {
return getId() != null ? getId().hashCode() : 0;
}
@Override
public String toString() {
return "IssueCategory{" +
"id=" + getId() +
", name='" + getName() + '\'' +
", projectId=" + getProjectId() +
", assigneeId=" + getAssigneeId() +
", assigneeName='" + getAssigneeName() + '\'' +
'}';
}
public PropertyStorage getStorage() {
return storage;
}
}