package com.pinapelz.query; import com.pinapelz.vtuber.Language; import com.pinapelz.vtuber.Organization; import com.pinapelz.vtuber.Sort; import com.pinapelz.vtuber.Type; import java.util.ArrayList; import java.util.List; /** * Builder for a video search query * Default values set in constructor * * @author pinapelz * @version $Id: $Id */ public class VideoSearchQueryBuilder { private String sort; private List lang; private List target; private List conditions; private List topic; private List vch; private List org; private List comment; private boolean paginated; private int offset; private int limit; /** *

Constructor for VideoSearchQueryBuilder.

*/ public VideoSearchQueryBuilder() { this.sort = "newest"; this.paginated = true; this.offset = 0; this.limit = 10; this.topic = new ArrayList(); this.comment = new ArrayList(); this.org = List.of("Nijisanji"); this.vch = new ArrayList(); this.conditions = new ArrayList(); this.lang = List.of("en"); } /** *

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.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder 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.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setSort(Sort sort) { this.sort = sort.toString(); return this; } /** *

Getter for the field lang.

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

Setter for the field lang.

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

Setter for the field lang.

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

Setter for the field lang.

* * @param language a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setLang(List language) { this.lang = language; return this; } /** *

Getter for the field target.

* * @return a {@link java.util.List} object. */ public List getTarget() { return target; } /** *

Setter for the field target.

* * @param target a {@link java.lang.String} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setTarget(String target) { this.target = List.of(target); return this; } /** *

Setter for the field target.

* * @param target a {@link com.pinapelz.vtuber.Type} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setTarget(Type target) { this.target = List.of(target.toString()); return this; } /** *

Setter for the field target.

* * @param target a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setTarget(List target) { List targets = new ArrayList(); for (Type t : target) { targets.add(t.toString()); } this.target = targets; return this; } /** *

Getter for the field conditions.

* * @return a {@link java.util.List} object. */ public List getConditions() { return conditions; } /** *

Setter for the field conditions.

* * @param conditions a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setConditions(List conditions) { this.conditions = conditions; return this; } /** *

Getter for the field topic.

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

Setter for the field topic.

* * @param topic a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setTopic(List topic) { this.topic = topic; return this; } /** *

Getter for the field vch.

* * @return a {@link java.util.List} object. */ public List getVch() { return vch; } /** *

Setter for the field vch.

* * @param vch a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setVch(List vch) { this.vch = vch; return this; } /** *

Getter for the field org.

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

Setter for the field org.

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

Setter for the field org.

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

Setter for the field org.

* * @param org a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setOrg(List org) { List orgs = new ArrayList(); for (Organization o : org) { orgs.add(o.toString()); } this.org = orgs; return this; } /** *

Getter for the field comment.

* * @return a {@link java.util.List} object. */ public List getComment() { return comment; } /** *

Setter for the field comment.

* * @param comment a {@link java.util.List} object. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setComment(List comment) { this.comment = comment; return this; } /** *

isPaginated.

* * @return a boolean. */ public boolean isPaginated() { return paginated; } /** *

Setter for the field paginated.

* * @param paginated a boolean. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setPaginated(boolean paginated) { this.paginated = paginated; return this; } /** *

Getter for the field offset.

* * @return a int. */ public int getOffset() { return offset; } /** *

Setter for the field offset.

* * @param offset a int. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setOffset(int offset) { this.offset = offset; return this; } /** *

Getter for the field limit.

* * @return a int. */ public int getLimit() { return limit; } /** *

Setter for the field limit.

* * @param limit a int. * @return a {@link com.pinapelz.query.VideoSearchQueryBuilder} object. */ public VideoSearchQueryBuilder setLimit(int limit) { this.limit = limit; return this; } }