1
0
Fork 0

Making getDateTime safer to deal with 'None' date strings returned from JIRA API

Changing the backlog to allow seeing sprints (not 'openSprints') and also adding the issues to the actual Sprint objects.
In addition also adding 'backlogIssues' List to Backlog class for easy access to the issues in a given Backlog
master
Philip Stehlik 2013-11-24 20:09:57 -08:00
parent e5c4b4412c
commit 0c18c3bcd7
3 changed files with 55 additions and 8 deletions

View File

@ -40,8 +40,9 @@ public class Backlog {
private RestClient restclient = null; private RestClient restclient = null;
private List<SprintIssue> issues = null; private List<SprintIssue> issues = null;
private List<SprintIssue> backlogIssues = null;
private int rankCustomFieldId = 0; private int rankCustomFieldId = 0;
private List<Sprint> openSprints = null; private List<Sprint> sprints = null;
private List<RapidViewProject> projects = null; private List<RapidViewProject> projects = null;
private List<Marker> markers = null; private List<Marker> markers = null;
private List<Epic> epics = null; private List<Epic> epics = null;
@ -72,9 +73,9 @@ public class Backlog {
map.get("issues"), map.get("issues"),
restclient); restclient);
rankCustomFieldId = Field.getInteger(map.get("rankCustomFieldId")); rankCustomFieldId = Field.getInteger(map.get("rankCustomFieldId"));
openSprints = GreenHopperField.getResourceArray( sprints = GreenHopperField.getResourceArray(
Sprint.class, Sprint.class,
map.get("openSprints"), map.get("sprints"),
restclient); restclient);
projects = GreenHopperField.getResourceArray( projects = GreenHopperField.getResourceArray(
RapidViewProject.class, RapidViewProject.class,
@ -124,6 +125,25 @@ public class Backlog {
} }
} }
} }
//determining which issues are actually in the backlog vs the sprints
//fill in the issues into the single sprints and the backlog issue list respectively
for(SprintIssue issue : issues){
boolean addedToSprint = false;
for(Sprint sprint : sprints){
if(sprint.getIssuesIds().contains(issue.getId())){
sprint.getIssues().add(issue);
addedToSprint = true;
}
}
if(!addedToSprint){
if(backlogIssues == null){
backlogIssues = new ArrayList<SprintIssue>();
}
backlogIssues.add(issue);
}
}
} }
/** /**
@ -163,12 +183,16 @@ public class Backlog {
return issues; return issues;
} }
public List<SprintIssue> getBacklogIssues() {
return backlogIssues;
}
public int getRankCustomFieldId() { public int getRankCustomFieldId() {
return rankCustomFieldId; return rankCustomFieldId;
} }
public List<Sprint> getOpenSprints() { public List<Sprint> getSprints() {
return openSprints; return sprints;
} }
public List<RapidViewProject> getProjects() { public List<RapidViewProject> getProjects() {

View File

@ -37,6 +37,8 @@ public final class GreenHopperField {
public static final String DATE_TIME_FORMAT = "d/MMM/yy h:m a"; public static final String DATE_TIME_FORMAT = "d/MMM/yy h:m a";
public static final String NO_DATE = "None";
private GreenHopperField() { } private GreenHopperField() { }
/** /**
@ -47,9 +49,10 @@ public final class GreenHopperField {
* @return the date-time or null * @return the date-time or null
*/ */
public static DateTime getDateTime(Object dt) { public static DateTime getDateTime(Object dt) {
return dt != null ? if(dt == null || ((String)dt).equals(NO_DATE)){
DateTime.parse((String)dt, DateTimeFormat.forPattern(DATE_TIME_FORMAT)) : return null;
null; }
return DateTime.parse((String)dt, DateTimeFormat.forPattern(DATE_TIME_FORMAT));
} }
/** /**

View File

@ -22,6 +22,8 @@ package net.rcarz.jiraclient.greenhopper;
import net.rcarz.jiraclient.Field; import net.rcarz.jiraclient.Field;
import net.rcarz.jiraclient.RestClient; import net.rcarz.jiraclient.RestClient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
@ -38,6 +40,8 @@ public class Sprint extends GreenHopperResource {
private DateTime startDate = null; private DateTime startDate = null;
private DateTime endDate = null; private DateTime endDate = null;
private DateTime completeDate = null; private DateTime completeDate = null;
private List<Integer> issuesIds = null;
private List<SprintIssue> issues = null;
/** /**
* Creates a sprint from a JSON payload. * Creates a sprint from a JSON payload.
@ -61,6 +65,7 @@ public class Sprint extends GreenHopperResource {
startDate = GreenHopperField.getDateTime(map.get("startDate")); startDate = GreenHopperField.getDateTime(map.get("startDate"));
endDate = GreenHopperField.getDateTime(map.get("endDate")); endDate = GreenHopperField.getDateTime(map.get("endDate"));
completeDate = GreenHopperField.getDateTime(map.get("completeDate")); completeDate = GreenHopperField.getDateTime(map.get("completeDate"));
issuesIds = GreenHopperField.getIntegerArray(map.get("issuesIds"));
} }
@Override @Override
@ -87,5 +92,20 @@ public class Sprint extends GreenHopperResource {
public DateTime getCompleteDate() { public DateTime getCompleteDate() {
return completeDate; return completeDate;
} }
public void setIssues(List<SprintIssue> _issues){
issues = _issues;
}
public List<SprintIssue> getIssues(){
if(issues == null){
issues = new ArrayList<SprintIssue>();
}
return issues;
}
public List<Integer> getIssuesIds() {
return issuesIds;
}
} }