package jpasearch.repository.query.builder; import java.util.Collections; import java.util.HashSet; import java.util.Set; import javax.persistence.metamodel.PluralAttribute; import javax.persistence.metamodel.SingularAttribute; import jpasearch.repository.query.Path; /** * @author speralta */ public class FetchesBuilder<FROM> extends AbstractBuilder<SearchBuilder<FROM>> { private final Set<Path<FROM, ?>> fetches; public FetchesBuilder(SearchBuilder<FROM> searchParameters) { super(searchParameters); fetches = new HashSet<>(); } public FetchesBuilder(SearchBuilder<FROM> searchParameters, Set<Path<FROM, ?>> fetches) { super(searchParameters); this.fetches = new HashSet<>(fetches); } public <TO> FetchBuilder<FROM, FROM, TO> fetch(SingularAttribute<? super FROM, TO> attribute) { return new FetchBuilder<>(this, attribute); } public <TO> FetchBuilder<FROM, FROM, TO> fetch(PluralAttribute<? super FROM, ?, TO> attribute) { return new FetchBuilder<>(this, attribute); } public Set<Path<FROM, ?>> getFetches() { return Collections.unmodifiableSet(fetches); } <TO> FetchesBuilder<FROM> add(Path<FROM, TO> path) { fetches.add(path); return this; } }