package pl.allegro.tech.search.elasticsearch.tools.reindex.process;
import pl.allegro.tech.search.elasticsearch.tools.reindex.connection.ElasticDataPointer;
import pl.allegro.tech.search.elasticsearch.tools.reindex.connection.ElasticSearchQuery;
import pl.allegro.tech.search.elasticsearch.tools.reindex.query.BoundedSegment;
import org.elasticsearch.client.Client;
import java.util.Optional;
public final class QueryComponentBuilder {
private Client client;
private ElasticDataPointer dataPointer;
private Optional<String> segmentationField = Optional.empty();
private Optional<BoundedSegment> bound = Optional.empty();
private ElasticSearchQuery query;
private QueryComponentBuilder() {
}
public QueryComponentBuilder setClient(Client client) {
this.client = client;
return this;
}
public QueryComponentBuilder setDataPointer(ElasticDataPointer dataPointer) {
this.dataPointer = dataPointer;
return this;
}
public QueryComponentBuilder setSegmentationField(Optional<String> segmentationField) {
this.segmentationField = segmentationField;
return this;
}
public QueryComponentBuilder setBound(Optional<BoundedSegment> bound) {
this.bound = bound;
return this;
}
public QueryComponentBuilder setQuery(ElasticSearchQuery query) {
this.query = query;
return this;
}
public static QueryComponentBuilder builder() {
return new QueryComponentBuilder();
}
public QueryComponent createQueryComponent() {
return new QueryComponent(client, dataPointer, segmentationField, bound, query);
}
}