/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.connectors.jira;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import java.lang.reflect.Field;
/**
* @author Christian Bauer
*/
public class JiraIssue {
private static Field[] fields = JiraIssue.class.getDeclaredFields();
private String id;
private String key;
private String project;
private String summary;
private String description;
private String created;
private String updated;
private String type;
private Object[] affectsVersions;
private Object[] fixVersions;
private String status;
private Object[] components;
private Object[] customFieldValues;
private String votes;
private String priority;
public static Field[] getFields() {
return fields;
}
public static void setFields(Field[] fields) {
JiraIssue.fields = fields;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getProject() {
return project;
}
public void setProject(String project) {
this.project = project;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCreated() {
return created;
}
public void setCreated(String created) {
this.created = created;
}
public String getUpdated() {
return updated;
}
public void setUpdated(String updated) {
this.updated = updated;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Object[] getAffectsVersions() {
return affectsVersions;
}
public void setAffectsVersions(Object[] affectsVersions) {
this.affectsVersions = affectsVersions;
}
public Object[] getFixVersions() {
return fixVersions;
}
public void setFixVersions(Object[] fixVersions) {
this.fixVersions = fixVersions;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Object[] getComponents() {
return components;
}
public List<String> getComponentNames() {
List<String> componentNames = new ArrayList<String>();
for (Object o : getComponents()) {
String componentName = (String) ((Map)o).get("name");
componentNames.add(componentName);
}
return componentNames;
}
public void setComponents(Object[] components) {
this.components = components;
}
public Object[] getCustomFieldValues() {
return customFieldValues;
}
public void setCustomFieldValues(Object[] customFieldValues) {
this.customFieldValues = customFieldValues;
}
public String getVotes() {
return votes;
}
public void setVotes(String votes) {
this.votes = votes;
}
public String getPriority() {
return priority;
}
public void setPriority(String priority) {
this.priority = priority;
}
public String getPriorityIcon() {
int p = new Integer(getPriority());
switch (p) {
case 1: return "blocker";
case 2: return "critical";
case 3: return "major";
case 4: return "minor";
case 5: return "optional";
default: return "trivial";
}
}
public static JiraIssue fromMap(Map map) {
try {
JiraIssue issue = new JiraIssue();
for (Field field : fields) {
if (map.containsKey(field.getName())) {
field.set(issue, map.get(field.getName()));
}
}
return issue;
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
public String toString() {
return "JiraIssue (" + getKey() + "): " + getSummary();
}
}