mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-28 15:50:37 +00:00
222 lines
4.4 KiB
Java
222 lines
4.4 KiB
Java
package org.kohsuke.github;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.Date;
|
|
import java.util.Locale;
|
|
|
|
/**
|
|
* The type GHMilestone.
|
|
*
|
|
* @author Yusuke Kokubo
|
|
*/
|
|
public class GHMilestone extends GHObject {
|
|
GHRepository owner;
|
|
|
|
GHUser creator;
|
|
private String state, due_on, title, description, html_url;
|
|
private int closed_issues, open_issues, number;
|
|
protected String closed_at;
|
|
|
|
/**
|
|
* Gets root.
|
|
*
|
|
* @return the root
|
|
*/
|
|
public GitHub getRoot() {
|
|
return root;
|
|
}
|
|
|
|
/**
|
|
* Gets owner.
|
|
*
|
|
* @return the owner
|
|
*/
|
|
public GHRepository getOwner() {
|
|
return owner;
|
|
}
|
|
|
|
/**
|
|
* Gets creator.
|
|
*
|
|
* @return the creator
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public GHUser getCreator() throws IOException {
|
|
return root.intern(creator);
|
|
}
|
|
|
|
/**
|
|
* Gets due on.
|
|
*
|
|
* @return the due on
|
|
*/
|
|
public Date getDueOn() {
|
|
if (due_on == null)
|
|
return null;
|
|
return GitHubClient.parseDate(due_on);
|
|
}
|
|
|
|
/**
|
|
* When was this milestone closed?
|
|
*
|
|
* @return the closed at
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public Date getClosedAt() throws IOException {
|
|
return GitHubClient.parseDate(closed_at);
|
|
}
|
|
|
|
/**
|
|
* Gets title.
|
|
*
|
|
* @return the title
|
|
*/
|
|
public String getTitle() {
|
|
return title;
|
|
}
|
|
|
|
/**
|
|
* Gets description.
|
|
*
|
|
* @return the description
|
|
*/
|
|
public String getDescription() {
|
|
return description;
|
|
}
|
|
|
|
/**
|
|
* Gets closed issues.
|
|
*
|
|
* @return the closed issues
|
|
*/
|
|
public int getClosedIssues() {
|
|
return closed_issues;
|
|
}
|
|
|
|
/**
|
|
* Gets open issues.
|
|
*
|
|
* @return the open issues
|
|
*/
|
|
public int getOpenIssues() {
|
|
return open_issues;
|
|
}
|
|
|
|
/**
|
|
* Gets number.
|
|
*
|
|
* @return the number
|
|
*/
|
|
public int getNumber() {
|
|
return number;
|
|
}
|
|
|
|
public URL getHtmlUrl() {
|
|
return GitHubClient.parseURL(html_url);
|
|
}
|
|
|
|
/**
|
|
* Gets state.
|
|
*
|
|
* @return the state
|
|
*/
|
|
public GHMilestoneState getState() {
|
|
return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH));
|
|
}
|
|
|
|
/**
|
|
* Closes this milestone.
|
|
*
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void close() throws IOException {
|
|
edit("state", "closed");
|
|
}
|
|
|
|
/**
|
|
* Reopens this milestone.
|
|
*
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void reopen() throws IOException {
|
|
edit("state", "open");
|
|
}
|
|
|
|
/**
|
|
* Deletes this milestone.
|
|
*
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void delete() throws IOException {
|
|
root.createRequest().method("DELETE").withUrlPath(getApiRoute()).send();
|
|
}
|
|
|
|
private void edit(String key, Object value) throws IOException {
|
|
root.createRequest().with(key, value).method("PATCH").withUrlPath(getApiRoute()).send();
|
|
}
|
|
|
|
/**
|
|
* Sets title.
|
|
*
|
|
* @param title
|
|
* the title
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void setTitle(String title) throws IOException {
|
|
edit("title", title);
|
|
}
|
|
|
|
/**
|
|
* Sets description.
|
|
*
|
|
* @param description
|
|
* the description
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void setDescription(String description) throws IOException {
|
|
edit("description", description);
|
|
}
|
|
|
|
/**
|
|
* Sets due on.
|
|
*
|
|
* @param dueOn
|
|
* the due on
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void setDueOn(Date dueOn) throws IOException {
|
|
edit("due_on", GitHubClient.printDate(dueOn));
|
|
}
|
|
|
|
/**
|
|
* Gets api route.
|
|
*
|
|
* @return the api route
|
|
*/
|
|
protected String getApiRoute() {
|
|
return "/repos/" + owner.getOwnerName() + "/" + owner.getName() + "/milestones/" + number;
|
|
}
|
|
|
|
/**
|
|
* Wrap gh milestone.
|
|
*
|
|
* @param repo
|
|
* the repo
|
|
* @return the gh milestone
|
|
*/
|
|
public GHMilestone wrap(GHRepository repo) {
|
|
this.owner = repo;
|
|
this.root = repo.root;
|
|
return this;
|
|
}
|
|
}
|