package com.pinapelz.query;
import com.pinapelz.vtuber.Language;
import com.pinapelz.vtuber.Order;
import com.pinapelz.vtuber.Organization;
import com.pinapelz.vtuber.Sort;
import java.util.List;
/**
* Query builder for getting a list of Channels matching the given parameters
*
* @author pinapelz
* @version $Id: $Id
*/
public class ChannelQueryBuilder {
private Integer limit;
private Integer offset;
private String type;
private String lang;
private String order;
private String org;
private String sort;
/**
*
Getter for the field limit.
*
* @return a {@link java.lang.Integer} object.
*/
public Integer getLimit() {
return limit;
}
/**
* Setter for the field limit.
*
* @param limit a {@link java.lang.Integer} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setLimit(Integer limit) {
this.limit = limit;
return this;
}
/**
* Getter for the field offset.
*
* @return a {@link java.lang.Integer} object.
*/
public Integer getOffset() {
return offset;
}
/**
* Setter for the field offset.
*
* @param offset a {@link java.lang.Integer} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setOffset(Integer offset) {
this.offset = offset;
return this;
}
/**
* Getter for the field type.
*
* @return a {@link java.lang.String} object.
*/
public String getType() {
return type;
}
/**
* Setter for the field type.
*
* @param type a {@link java.lang.String} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setType(String type) {
this.type = type;
return this;
}
/**
* Getter for the field lang.
*
* @return a {@link java.lang.String} object.
*/
public String getLang() {
return lang;
}
/**
* Setter for the field lang.
*
* @param lang a {@link java.lang.String} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder 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.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setLang(Language lang) {
this.lang = lang.toString();
return this;
}
/**
* Setter for the field lang.
*
* @param language a {@link java.util.List} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setLang(List language) {
String[] languages = new String[language.size()];
for (int i = 0; i < language.size(); i++) {
languages[i] = language.get(i).toString();
}
this.lang = String.join(",", languages);
return this;
}
/**
* Getter for the field order.
*
* @return a {@link java.lang.String} object.
*/
public String getOrder() {
return order;
}
/**
* Setter for the field order.
*
* @param order a {@link java.lang.String} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder 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.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setOrder(Order order){
this.order = order.toString();
return this;
}
/**
* Getter for the field org.
*
* @return a {@link java.lang.String} object.
*/
public String getOrg() {
return org;
}
/**
* Setter for the field org.
*
* @param org a {@link java.lang.String} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder 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.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setOrg(Organization org) {
this.org = org.toString();
return this;
}
/**
* Getter for the field sort.
*
* @return a {@link java.lang.String} object.
*/
public String getSort() {
return sort;
}
/**
* Setter for the field sort.
*
* @param sort a {@link java.lang.String} object.
* @return a {@link com.pinapelz.query.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder 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.ChannelQueryBuilder} object.
*/
public ChannelQueryBuilder setSort(Sort sort){
this.sort = sort.toString();
return this;
}
}