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 List<SprintIssue> issues = null;
private List<SprintIssue> backlogIssues = null;
private int rankCustomFieldId = 0;
private List<Sprint> openSprints = null;
private List<Sprint> sprints = null;
private List<RapidViewProject> projects = null;
private List<Marker> markers = null;
private List<Epic> epics = null;
@ -72,9 +73,9 @@ public class Backlog {
map.get("issues"),
restclient);
rankCustomFieldId = Field.getInteger(map.get("rankCustomFieldId"));
openSprints = GreenHopperField.getResourceArray(
sprints = GreenHopperField.getResourceArray(
Sprint.class,
map.get("openSprints"),
map.get("sprints"),
restclient);
projects = GreenHopperField.getResourceArray(
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;
}
public List<SprintIssue> getBacklogIssues() {
return backlogIssues;
}
public int getRankCustomFieldId() {
return rankCustomFieldId;
}
public List<Sprint> getOpenSprints() {
return openSprints;
public List<Sprint> getSprints() {
return sprints;
}
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 NO_DATE = "None";
private GreenHopperField() { }
/**
@ -47,9 +49,10 @@ public final class GreenHopperField {
* @return the date-time or null
*/
public static DateTime getDateTime(Object dt) {
return dt != null ?
DateTime.parse((String)dt, DateTimeFormat.forPattern(DATE_TIME_FORMAT)) :
null;
if(dt == null || ((String)dt).equals(NO_DATE)){
return 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.RestClient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
@ -38,6 +40,8 @@ public class Sprint extends GreenHopperResource {
private DateTime startDate = null;
private DateTime endDate = null;
private DateTime completeDate = null;
private List<Integer> issuesIds = null;
private List<SprintIssue> issues = null;
/**
* Creates a sprint from a JSON payload.
@ -61,6 +65,7 @@ public class Sprint extends GreenHopperResource {
startDate = GreenHopperField.getDateTime(map.get("startDate"));
endDate = GreenHopperField.getDateTime(map.get("endDate"));
completeDate = GreenHopperField.getDateTime(map.get("completeDate"));
issuesIds = GreenHopperField.getIntegerArray(map.get("issuesIds"));
}
@Override
@ -87,5 +92,20 @@ public class Sprint extends GreenHopperResource {
public DateTime getCompleteDate() {
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;
}
}