GHMilestoneQueryBuilder.java

package org.kohsuke.github;

/**
 * Lists up milestones with filtering and sorting.
 *
 * @see GHRepository#queryMilestones() GHRepository#queryMilestones()
 */
public class GHMilestoneQueryBuilder extends GHQueryBuilder<GHMilestone> {
    /**
     * The enum Sort.
     */
    public enum Sort {

        /** Sort by completeness (percentage of issues closed). */
        COMPLETENESS,
        /** Sort by due date. */
        DUE_ON
    }

    private final GHRepository repo;

    /**
     * Instantiates a new GH milestone query builder.
     *
     * @param repo
     *            the repo
     */
    GHMilestoneQueryBuilder(GHRepository repo) {
        super(repo.root());
        this.repo = repo;
    }

    /**
     * Direction gh milestone query builder.
     *
     * @param d
     *            the d
     * @return the gh milestone query builder
     */
    public GHMilestoneQueryBuilder direction(GHDirection d) {
        req.with("direction", d);
        return this;
    }

    /**
     * List.
     *
     * @return the paged iterable
     */
    @Override
    public PagedIterable<GHMilestone> list() {
        return req.withUrlPath(repo.getApiTailUrl("milestones"))
                .toIterable(GHMilestone[].class, item -> item.lateBind(repo));
    }

    /**
     * Sort gh milestone query builder.
     *
     * @param sort
     *            the sort
     * @return the gh milestone query builder
     */
    public GHMilestoneQueryBuilder sort(Sort sort) {
        req.with("sort", sort);
        return this;
    }

    /**
     * State gh milestone query builder.
     *
     * @param state
     *            the state
     * @return the gh milestone query builder
     */
    public GHMilestoneQueryBuilder state(GHIssueState state) {
        req.with("state", state);
        return this;
    }
}