package com.pinapelz.query; import com.pinapelz.vtuber.Language; import com.pinapelz.vtuber.Sort; import com.pinapelz.vtuber.Type; import java.util.ArrayList; import java.util.List; /** * Builder for a comment search query * Default values set in constructor */ public class CommentSearchQueryBuilder { private String sort; 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; private List lang; public CommentSearchQueryBuilder(){ 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"); } public String getSort() { return sort; } public CommentSearchQueryBuilder setSort(String sort) { this.sort = sort; return this; } public CommentSearchQueryBuilder setSort(Sort sort) { this.sort = sort.toString(); return this; } public List getLang() { return lang; } public CommentSearchQueryBuilder setLang(String lang) { this.lang = List.of(lang); return this; } public CommentSearchQueryBuilder setLang(Language lang) { this.lang = List.of(lang.toString()); return this; } public CommentSearchQueryBuilder setLang(Language[] language) { List lang = new ArrayList(); for (Language l : language) { lang.add(l.toString()); } this.lang = lang; return this; } public List getTarget() { return target; } public CommentSearchQueryBuilder setTarget(String target) { this.target = List.of(target); return this; } public CommentSearchQueryBuilder setTarget(Type target) { this.target = List.of(target.toString()); return this; } public CommentSearchQueryBuilder setTarget(List target) { List targets = new ArrayList(); for (Type t : target) { targets.add(t.toString()); } this.target = targets; return this; } public List getConditions() { return conditions; } public CommentSearchQueryBuilder setConditions(List conditions) { this.conditions = conditions; return this; } public List getTopic() { return topic; } public CommentSearchQueryBuilder setTopic(List topic) { this.topic = topic; return this; } public List getVch() { return vch; } public CommentSearchQueryBuilder setVch(List vch) { this.vch = vch; return this; } public List getOrg() { return org; } public CommentSearchQueryBuilder setOrg(List org) { this.org = org; return this; } public List getComment() { return comment; } public CommentSearchQueryBuilder setComment(List comment) { this.comment = comment; return this; } public boolean isPaginated() { return paginated; } public CommentSearchQueryBuilder setPaginated(boolean paginated) { this.paginated = paginated; return this; } public int getOffset() { return offset; } public CommentSearchQueryBuilder setOffset(int offset) { this.offset = offset; return this; } public int getLimit() { return limit; } public CommentSearchQueryBuilder setLimit(int limit) { this.limit = limit; return this; } }