All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.kohsuke.github.GHIssueQueryBuilder Maven / Gradle / Ivy

There is a newer version: 2.0.0-alpha-2
Show newest version
package org.kohsuke.github;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

// TODO: Auto-generated Javadoc
/**
 * The Class GHIssueQueryBuilder.
 */
public abstract class GHIssueQueryBuilder extends GHQueryBuilder {
    private final List labels = new ArrayList<>();

    /**
     * Instantiates a new GH issue query builder.
     *
     * @param root
     *            the root
     */
    GHIssueQueryBuilder(GitHub root) {
        super(root);
    }

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

    /**
     * Labels gh issue query builder.
     *
     * @param label
     *            the labels
     * @return the gh issue query builder
     */
    public GHIssueQueryBuilder label(String label) {
        if (label != null && !label.trim().isEmpty()) {
            labels.add(label);
            req.with("labels", String.join(",", labels));
        }
        return this;
    }

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

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

    /**
     * Only issues after this date will be returned.
     *
     * @param date
     *            the date
     * @return the gh issue query builder
     */
    public GHIssueQueryBuilder since(Date date) {
        req.with("since", GitHubClient.printDate(date));
        return this;
    }

    /**
     * Only issues after this date will be returned.
     *
     * @param timestamp
     *            the timestamp
     * @return the gh issue query builder
     */
    public GHIssueQueryBuilder since(long timestamp) {
        return since(new Date(timestamp));
    }

    /**
     * Page size gh issue query builder.
     *
     * @param pageSize
     *            the page size
     * @return the gh issue query builder
     */
    public GHIssueQueryBuilder pageSize(int pageSize) {
        req.with("per_page", pageSize);
        return this;
    }

    /**
     * The enum Sort.
     */
    public enum Sort {

        /** The created. */
        CREATED,
        /** The updated. */
        UPDATED,
        /** The comments. */
        COMMENTS
    }

    /**
     * Gets the api url.
     *
     * @return the api url
     */
    public abstract String getApiUrl();

    /**
     * The Class ForRepository.
     */
    public static class ForRepository extends GHIssueQueryBuilder {
        private final GHRepository repo;

        /**
         * Instantiates a new for repository.
         *
         * @param repo
         *            the repo
         */
        ForRepository(final GHRepository repo) {
            super(repo.root());
            this.repo = repo;
        }

        /**
         * Milestone gh issue query builder.
         * 

* The milestone must be either an integer (the milestone number), the string * (issues with any milestone) or * the string none (issues without milestone). * * @param milestone * the milestone * @return the gh issue request query builder */ public ForRepository milestone(String milestone) { req.with("milestone", milestone); return this; } /** * Assignee gh issue query builder. * * @param assignee * the assignee * @return the gh issue query builder */ public ForRepository assignee(String assignee) { req.with("assignee", assignee); return this; } /** * Creator gh issue query builder. * * @param creator * the creator * @return the gh issue query builder */ public ForRepository creator(String creator) { req.with("creator", creator); return this; } /** * Mentioned gh issue query builder. * * @param mentioned * the mentioned * @return the gh issue query builder */ public ForRepository mentioned(String mentioned) { req.with("mentioned", mentioned); return this; } /** * Gets the api url. * * @return the api url */ @Override public String getApiUrl() { return repo.getApiTailUrl("issues"); } /** * List. * * @return the paged iterable */ @Override public PagedIterable list() { return req.withUrlPath(getApiUrl()).toIterable(GHIssue[].class, item -> item.wrap(repo)); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy