
com.github.davidmoten.odata.client.CollectionNonEntityRequestOptionsBuilder Maven / Gradle / Ivy
package com.github.davidmoten.odata.client;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
import com.github.davidmoten.guavamini.Preconditions;
public final class CollectionNonEntityRequestOptionsBuilder {
private final CollectionPageNonEntityRequest request;
private final List requestHeaders = new ArrayList<>();
private Optional search = Optional.empty();
private Optional filter = Optional.empty();
private Optional orderBy = Optional.empty();
private Optional skip = Optional.empty();
private Optional top = Optional.empty();
private Optional select = Optional.empty();
private Optional expand = Optional.empty();
private String metadata = "minimal";
private Optional urlOverride = Optional.empty();
CollectionNonEntityRequestOptionsBuilder(CollectionPageNonEntityRequest request) {
this.request = request;
}
public CollectionNonEntityRequestOptionsBuilder requestHeader(String name, String value) {
requestHeaders.add(new RequestHeader(name, value));
return this;
}
public CollectionNonEntityRequestOptionsBuilder requestHeader(RequestHeader header) {
requestHeaders.add(header);
return this;
}
/**
* Sets the odata.maxpagesize request header value. Is a preference only and may
* not be honoured by the service.
*
* @param size max page size
* @return this
*/
public CollectionNonEntityRequestOptionsBuilder maxPageSize(int size) {
return requestHeader(RequestHeader.maxPageSize(size));
}
public CollectionNonEntityRequestOptionsBuilder search(String clause) {
Preconditions.checkNotNull(clause);
this.search = Optional.of(clause);
return this;
}
public CollectionNonEntityRequestOptionsBuilder expand(String clause) {
Preconditions.checkNotNull(clause);
this.expand = Optional.of(clause);
return this;
}
public CollectionNonEntityRequestOptionsBuilder filter(String clause) {
Preconditions.checkNotNull(clause);
this.filter = Optional.of(clause);
return this;
}
public CollectionNonEntityRequestOptionsBuilder orderBy(String clause) {
Preconditions.checkNotNull(clause);
this.orderBy = Optional.of(clause);
return this;
}
public CollectionNonEntityRequestOptionsBuilder skip(long n) {
Preconditions.checkArgument(n > 0);
this.skip = Optional.of(n);
return this;
}
public CollectionNonEntityRequestOptionsBuilder top(long n) {
Preconditions.checkArgument(n > 0);
this.top = Optional.of(n);
return this;
}
public CollectionNonEntityRequestOptionsBuilder select(String clause) {
Preconditions.checkNotNull(clause);
this.select = Optional.of(clause);
return this;
}
public CollectionNonEntityRequestOptionsBuilder metadataFull() {
this.metadata = "full";
return this;
}
public CollectionNonEntityRequestOptionsBuilder metadataMinimal() {
this.metadata = "minimal";
return this;
}
public CollectionNonEntityRequestOptionsBuilder metadataNone() {
this.metadata = "none";
return this;
}
public CollectionNonEntityRequestOptionsBuilder urlOverride(String urlOverride) {
this.urlOverride = Optional.ofNullable(urlOverride);
return this;
}
CollectionRequestOptions build() {
requestHeaders.add(RequestHeader.acceptJsonWithMetadata(metadata));
return new CollectionRequestOptions(requestHeaders, search, filter, orderBy, skip, top,
select, expand, urlOverride);
}
public CollectionPage get() {
return request.get(build());
}
public Iterator iterator() {
return get().iterator();
}
public Stream stream() {
return get().stream();
}
public List toList() {
return get().toList();
}
public Set toSet() {
return get().toSet();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy