1
0
Fork 0

implemented reading the issue work log

master
Bob Carroll 2013-05-28 17:00:05 -07:00
parent 5e79dc9aa7
commit cc8be317a7
3 changed files with 152 additions and 1 deletions

View File

@ -72,6 +72,7 @@ public final class Field {
public static final String VERSIONS = "versions";
public static final String VOTES = "votes";
public static final String WATCHES = "watches";
public static final String WORKLOG = "worklog";
public static final String DATE_FORMAT = "yyyy-MM-dd";
@ -99,7 +100,7 @@ public final class Field {
* @param c a JSONObject instance
* @param restclient REST client instance
*
* @return a list of components found in c
* @return a list of comments found in c
*/
public static List<Comment> getComments(Object c, RestClient restclient) {
List<Comment> results = new ArrayList<Comment>();
@ -110,6 +111,23 @@ public final class Field {
return results;
}
/**
* Gets a list of work logs from the given object.
*
* @param c a JSONObject instance
* @param restclient REST client instance
*
* @return a list of work logs found in c
*/
public static List<WorkLog> getWorkLogs(Object c, RestClient restclient) {
List<WorkLog> results = new ArrayList<WorkLog>();
if (c instanceof JSONObject && !((JSONObject)c).isNullObject())
results = getResourceArray(WorkLog.class, ((Map)c).get("worklogs"), restclient);
return results;
}
/**
* Gets a date from the given object.
*
@ -217,6 +235,8 @@ public final class Field {
result = (T)new Votes(restclient, (JSONObject)r);
else if (type == Watches.class)
result = (T)new Watches(restclient, (JSONObject)r);
else if (type == WorkLog.class)
result = (T)new WorkLog(restclient, (JSONObject)r);
}
return result;
@ -306,6 +326,8 @@ public final class Field {
results.add((T)new Votes(restclient, (JSONObject)v));
else if (type == Watches.class)
results.add((T)new Watches(restclient, (JSONObject)v));
else if (type == WorkLog.class)
results.add((T)new WorkLog(restclient, (JSONObject)v));
}
return results;

View File

@ -276,6 +276,7 @@ public final class Issue extends Resource {
private List<Version> versions = null;
private Votes votes = null;
private Watches watches = null;
private List<WorkLog> workLogs = null;
/**
* Creates an issue from a JSON payload.
@ -321,6 +322,7 @@ public final class Issue extends Resource {
versions = Field.getResourceArray(Version.class, fields.get(Field.VERSIONS), restclient);
votes = Field.getResource(Votes.class, fields.get(Field.VOTES), restclient);
watches = Field.getResource(Watches.class, fields.get(Field.WATCHES), restclient);
workLogs = Field.getWorkLogs(fields.get(Field.WORKLOG), restclient);
}
private static String getRestUri(String key) {
@ -719,5 +721,9 @@ public final class Issue extends Resource {
public Watches getWatches() {
return watches;
}
public List<WorkLog> getWorkLogs() {
return workLogs;
}
}

View File

@ -0,0 +1,123 @@
/**
* jira-client - a simple JIRA REST client
* Copyright (c) 2013 Bob Carroll (bob.carroll@alum.rit.edu)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.rcarz.jiraclient;
import java.util.Date;
import java.util.Map;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
/**
* Represents an issue work log.
*/
public final class WorkLog extends Resource {
private User author = null;
private String comment = null;
private Date created = null;
private Date updated = null;
private User updatedAuthor = null;
private Date started = null;
private String timeSpent = null;
private int timeSpentSeconds = 0;
/**
* Creates a work log from a JSON payload.
*
* @param restclient REST client instance
* @param json JSON payload
*/
protected WorkLog(RestClient restclient, JSONObject json) {
super(restclient);
if (json != null)
deserialise(json);
}
private void deserialise(JSONObject json) {
Map map = json;
self = Field.getString(map.get("self"));
id = Field.getString(map.get("id"));
author = Field.getResource(User.class, map.get("author"), restclient);
comment = Field.getString(map.get("comment"));
created = Field.getDate(map.get("created"));
updated = Field.getDate(map.get("updated"));
updatedAuthor = Field.getResource(User.class, map.get("updatedAuthor"), restclient);
started = Field.getDate(map.get("started"));
timeSpent = Field.getString(map.get("timeSpent"));
timeSpentSeconds = Field.getInteger(map.get("timeSpentSeconds"));
}
/**
* Retrieves the given work log record.
*
* @param restclient REST client instance
* @param issue Internal JIRA ID of the associated issue
* @param id Internal JIRA ID of the work log
*
* @return a work log instance
*
* @throws JiraException when the retrieval fails
*/
public static WorkLog get(RestClient restclient, String issue, String id)
throws JiraException {
JSON result = null;
try {
result = restclient.get(RESOURCE_URI + "issue/" + issue + "/worklog/" + id);
} catch (Exception ex) {
throw new JiraException("Failed to retrieve work log " + id + " on issue " + issue, ex);
}
if (!(result instanceof JSONObject))
throw new JiraException("JSON payload is malformed");
return new WorkLog(restclient, (JSONObject)result);
}
@Override
public String toString() {
return created + " by " + author;
}
public User getAuthor() {
return author;
}
public String getComment() {
return comment;
}
public Date getCreatedDate() {
return created;
}
public User getUpdateAuthor() {
return updatedAuthor;
}
public Date getUpdatedDate() {
return updated;
}
}