All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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