
com.github.davidmoten.odata.client.CollectionEntityRequestOptionsBuilder 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 CollectionEntityRequestOptionsBuilder>
implements Iterable {
private final CollectionPageEntityRequest request;
private final List requestHeaders = new ArrayList<>();
private Optional search;
private Optional filter;
private Optional orderBy;
private Optional skip;
private Optional top;
private Optional select;
private Optional expand;
private String metadata;
// used to override the url for the situation where someone has a nextLink they want to load up later
private Optional urlOverride;
CollectionEntityRequestOptionsBuilder(CollectionPageEntityRequest request) {
this(request, Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty(),
Optional.empty(), Optional.empty(), "minimal", Optional.empty());
}
private CollectionEntityRequestOptionsBuilder(CollectionPageEntityRequest request, Optional search,
Optional filter, Optional orderBy, Optional skip, Optional top,
Optional select, Optional expand, String metadata, Optional urlOverride) {
this.request = request;
this.search = search;
this.filter = filter;
this.orderBy = orderBy;
this.skip = skip;
this.top = top;
this.select = select;
this.expand = expand;
this.metadata = metadata;
this.urlOverride = urlOverride;
}
public CollectionEntityRequestOptionsBuilder requestHeader(String name, String value) {
requestHeaders.add(new RequestHeader(name, value));
return this;
}
public CollectionEntityRequestOptionsBuilder 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 CollectionEntityRequestOptionsBuilder maxPageSize(int size) {
return requestHeader(RequestHeader.maxPageSize(size));
}
public CollectionEntityRequestOptionsBuilder search(String clause) {
Preconditions.checkNotNull(clause);
this.search = Optional.of(clause);
return this;
}
public CollectionEntityRequestOptionsBuilder expand(String clause) {
Preconditions.checkNotNull(clause);
this.expand = Optional.of(clause);
return this;
}
public CollectionEntityRequestOptionsBuilder filter(String clause) {
Preconditions.checkNotNull(clause);
this.filter = Optional.of(clause);
return this;
}
public CollectionEntityRequestOptionsBuilder orderBy(String clause) {
Preconditions.checkNotNull(clause);
this.orderBy = Optional.of(clause);
return this;
}
public CollectionEntityRequestOptionsBuilder skip(long n) {
Preconditions.checkArgument(n > 0);
this.skip = Optional.of(n);
return this;
}
public CollectionEntityRequestOptionsBuilder top(long n) {
Preconditions.checkArgument(n > 0);
this.top = Optional.of(n);
return this;
}
public CollectionEntityRequestOptionsBuilder select(String clause) {
Preconditions.checkNotNull(clause);
this.select = Optional.of(clause);
return this;
}
public CollectionEntityRequestOptionsBuilder metadataFull() {
this.metadata = "full";
return this;
}
public CollectionEntityRequestOptionsBuilder metadataMinimal() {
this.metadata = "minimal";
return this;
}
public CollectionEntityRequestOptionsBuilder metadataNone() {
this.metadata = "none";
return this;
}
public CollectionEntityRequestOptionsBuilder urlOverride(String url) {
this.urlOverride = Optional.ofNullable(url);
return this;
}
public CollectionEntityRequestOptionsBuilder> filter(Class cls) {
return new CollectionEntityRequestOptionsBuilder>(request.filter(cls), search, filter,
orderBy, skip, top, select, expand, metadata, urlOverride);
}
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());
}
@Override
public Iterator iterator() {
return get().iterator();
}
public Stream stream() {
return get().stream();
}
public T post(T entity) {
return request.post(build(), entity);
}
public List toList() {
return get().toList();
}
public Set toSet() {
return get().toSet();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy