package com.pinapelz.query; import com.pinapelz.datatypes.Video; import com.pinapelz.vtuber.*; import java.util.ArrayList; import java.util.List; /** * Query builder for getting a set of videos matching the given parameters * * @author pinapelz * @version $Id: $Id */ public class VideoQueryBuilder { private String channelId; private String id; private String include; private String lang; private Integer limit; private Integer maxUpcomingHours; private String mentionedChannelId; private Integer offset; private String order; private String org; private String paginated; private String sort; private String status; private String topic; private String type; /** *

Setter for the field channelId.

* * @param channelId a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setChannelId(String channelId) { this.channelId = channelId; return this; } /** *

Setter for the field id.

* * @param id a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setId(String id) { this.id = id; return this; } /** *

Setter for the field include.

* * @param include a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setInclude(String include) { this.include = include; return this; } /** *

Setter for the field include.

* * @param include a {@link com.pinapelz.vtuber.ExtraData} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setInclude(ExtraData include) { this.include = include.toString(); return this; } /** *

Setter for the field include.

* * @param include a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setInclude(List include){ String[] includeStrings = new String[include.size()]; for (int i = 0; i < include.size(); i++) { includeStrings[i] = include.get(i).toString(); } this.include = String.join(",", includeStrings); return this; } /** *

Setter for the field lang.

* * @param lang a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setLang(String lang) { this.lang = lang; return this; } /** *

Setter for the field lang.

* * @param lang a {@link com.pinapelz.vtuber.Language} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setLang(Language lang) { this.lang = lang.toString(); return this; } /** *

Setter for the field lang.

* * @param lang a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setLang(List lang) { String[] langStrings = new String[lang.size()]; for (int i = 0; i < lang.size(); i++) { langStrings[i] = lang.get(i).toString(); } this.lang = String.join(",", langStrings); return this; } /** *

Setter for the field limit.

* * @param limit a {@link java.lang.Integer} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setLimit(Integer limit) { this.limit = limit; return this; } /** *

Setter for the field maxUpcomingHours.

* * @param maxUpcomingHours a {@link java.lang.Integer} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setMaxUpcomingHours(Integer maxUpcomingHours) { this.maxUpcomingHours = maxUpcomingHours; return this; } /** *

Setter for the field mentionedChannelId.

* * @param mentionedChannelId a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setMentionedChannelId(String mentionedChannelId) { this.mentionedChannelId = mentionedChannelId; return this; } /** *

Setter for the field offset.

* * @param offset a {@link java.lang.Integer} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setOffset(Integer offset) { this.offset = offset; return this; } /** *

Setter for the field order.

* * @param order a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setOrder(String order) { this.order = order; return this; } /** *

Setter for the field order.

* * @param order a {@link com.pinapelz.vtuber.Order} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setOrder(Order order) { this.order = order.toString(); return this; } /** *

Setter for the field org.

* * @param org a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setOrg(String org) { this.org = org; return this; } /** *

Setter for the field org.

* * @param org a {@link com.pinapelz.vtuber.Organization} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setOrg(Organization org) { this.org = org.toString(); return this; } /** *

Setter for the field paginated.

* * @param paginated a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setPaginated(String paginated) { this.paginated = paginated; return this; } /** *

Setter for the field sort.

* * @param sort a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setSort(String sort) { this.sort = sort; return this; } /** *

Setter for the field sort.

* * @param sort a {@link com.pinapelz.vtuber.Sort} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setSort(Sort sort) { this.sort = sort.toString(); return this; } /** *

Setter for the field status.

* * @param status a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setStatus(String status) { this.status = status; return this; } /** *

Setter for the field status.

* * @param status a {@link com.pinapelz.vtuber.Status} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setStatus(Status status) { this.status = status.toString(); return this; } /** *

Setter for the field topic.

* * @param topic a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setTopic(String topic) { this.topic = topic; return this; } /** *

Setter for the field type.

* * @param type a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoQueryBuilder} object. */ public VideoQueryBuilder setType(String type) { this.type = type; return this; } /** *

Getter for the field channelId.

* * @return a {@link java.lang.String} object. */ public String getChannelId() { return channelId; } /** *

Getter for the field id.

* * @return a {@link java.lang.String} object. */ public String getId() { return id; } /** *

Getter for the field include.

* * @return a {@link java.lang.String} object. */ public String getInclude() { return include; } /** *

Getter for the field lang.

* * @return a {@link java.lang.String} object. */ public String getLang() { return lang; } /** *

Getter for the field limit.

* * @return a {@link java.lang.Integer} object. */ public Integer getLimit() { return limit; } /** *

Getter for the field maxUpcomingHours.

* * @return a {@link java.lang.Integer} object. */ public Integer getMaxUpcomingHours() { return maxUpcomingHours; } /** *

Getter for the field mentionedChannelId.

* * @return a {@link java.lang.String} object. */ public String getMentionedChannelId() { return mentionedChannelId; } /** *

Getter for the field offset.

* * @return a {@link java.lang.Integer} object. */ public Integer getOffset() { return offset; } /** *

Getter for the field order.

* * @return a {@link java.lang.String} object. */ public String getOrder() { return order; } /** *

Getter for the field org.

* * @return a {@link java.lang.String} object. */ public String getOrg() { return org; } /** *

Getter for the field paginated.

* * @return a {@link java.lang.String} object. */ public String getPaginated() { return paginated; } /** *

Getter for the field sort.

* * @return a {@link java.lang.String} object. */ public String getSort() { return sort; } /** *

Getter for the field status.

* * @return a {@link java.lang.String} object. */ public String getStatus() { return status; } /** *

Getter for the field topic.

* * @return a {@link java.lang.String} object. */ public String getTopic() { return topic; } /** *

Getter for the field type.

* * @return a {@link java.lang.String} object. */ public String getType() { return type; } }