package jpasearch.repository.query.builder;
import javax.persistence.metamodel.PluralAttribute;
import javax.persistence.metamodel.SingularAttribute;
/**
* @author speralta
*/
public class TermSelectorPathBuilder<F, FROM, TO, PARENT extends SelectorsBuilder<F, GRANDPARENT, PARENT>, GRANDPARENT> extends
AbstractPathBuilder<TermSelectorBuilder<F, PARENT, GRANDPARENT>, F, FROM, TO> {
public TermSelectorPathBuilder(TermSelectorBuilder<F, PARENT, GRANDPARENT> parent, PluralAttribute<? super F, ?, TO> attribute) {
super(parent, attribute);
}
public TermSelectorPathBuilder(TermSelectorBuilder<F, PARENT, GRANDPARENT> parent, SingularAttribute<? super F, TO> attribute) {
super(parent, attribute);
}
private <E> TermSelectorPathBuilder(TermSelectorBuilder<F, PARENT, GRANDPARENT> parent, TermSelectorPathBuilder<F, E, FROM, PARENT, GRANDPARENT> termSelectorPathBuilder,
PluralAttribute<? super FROM, ?, TO> attribute) {
super(parent, termSelectorPathBuilder, attribute);
}
private <E> TermSelectorPathBuilder(TermSelectorBuilder<F, PARENT, GRANDPARENT> parent, TermSelectorPathBuilder<F, E, FROM, PARENT, GRANDPARENT> termSelectorPathBuilder,
SingularAttribute<? super FROM, TO> attribute) {
super(parent, termSelectorPathBuilder, attribute);
}
public TermSelectorBuilder<F, PARENT, GRANDPARENT> searchSimilarity(Integer searchSimilarity) {
return getParent().searchSimilarity(this, searchSimilarity);
}
public TermSelectorBuilder<F, PARENT, GRANDPARENT> andMode() {
return getParent().andMode(this);
}
public PARENT search(String... selected) {
return getParent().search(this, selected);
}
public PARENT search(Object... selected) {
return getParent().search(this, selected);
}
public <NEWTO> TermSelectorPathBuilder<F, F, NEWTO, PARENT, GRANDPARENT> andOn(SingularAttribute<? super F, NEWTO> attribute) {
return getParent().andOn(this, attribute);
}
public <NEWTO> TermSelectorPathBuilder<F, F, NEWTO, PARENT, GRANDPARENT> andOn(PluralAttribute<? super F, ?, NEWTO> attribute) {
return getParent().andOn(this, attribute);
}
public <E> TermSelectorPathBuilder<F, TO, E, PARENT, GRANDPARENT> to(SingularAttribute<? super TO, E> attribute) {
return new TermSelectorPathBuilder<>(getParent(), this, attribute);
}
public <E> TermSelectorPathBuilder<F, TO, E, PARENT, GRANDPARENT> to(PluralAttribute<? super TO, ?, E> attribute) {
return new TermSelectorPathBuilder<>(getParent(), this, attribute);
}
}