001
002package com.commercetools.ml.models.similar_products;
003
004import java.util.*;
005import java.util.function.Function;
006
007import io.vrap.rmf.base.client.Builder;
008import io.vrap.rmf.base.client.utils.Generated;
009
010/**
011 * SimilarProductsPagedQueryResultBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     SimilarProductsPagedQueryResult similarProductsPagedQueryResult = SimilarProductsPagedQueryResult.builder()
017 *             .count(0.3)
018 *             .total(0.3)
019 *             .offset(0.3)
020 *             .plusResults(resultsBuilder -> resultsBuilder)
021 *             .meta(metaBuilder -> metaBuilder)
022 *             .build()
023 * </code></pre>
024 * </div>
025 */
026@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
027public class SimilarProductsPagedQueryResultBuilder implements Builder<SimilarProductsPagedQueryResult> {
028
029    private Long count;
030
031    private Long total;
032
033    private Long offset;
034
035    private java.util.List<com.commercetools.ml.models.similar_products.SimilarProductPair> results;
036
037    private com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta meta;
038
039    /**
040     *
041     */
042
043    public SimilarProductsPagedQueryResultBuilder count(final Long count) {
044        this.count = count;
045        return this;
046    }
047
048    /**
049     *
050     */
051
052    public SimilarProductsPagedQueryResultBuilder total(final Long total) {
053        this.total = total;
054        return this;
055    }
056
057    /**
058     *  <p>Number of elements skipped.</p>
059     */
060
061    public SimilarProductsPagedQueryResultBuilder offset(final Long offset) {
062        this.offset = offset;
063        return this;
064    }
065
066    /**
067     *
068     */
069
070    public SimilarProductsPagedQueryResultBuilder results(
071            final com.commercetools.ml.models.similar_products.SimilarProductPair... results) {
072        this.results = new ArrayList<>(Arrays.asList(results));
073        return this;
074    }
075
076    /**
077     *
078     */
079
080    public SimilarProductsPagedQueryResultBuilder results(
081            final java.util.List<com.commercetools.ml.models.similar_products.SimilarProductPair> results) {
082        this.results = results;
083        return this;
084    }
085
086    /**
087     *
088     */
089
090    public SimilarProductsPagedQueryResultBuilder plusResults(
091            final com.commercetools.ml.models.similar_products.SimilarProductPair... results) {
092        if (this.results == null) {
093            this.results = new ArrayList<>();
094        }
095        this.results.addAll(Arrays.asList(results));
096        return this;
097    }
098
099    /**
100     *
101     */
102
103    public SimilarProductsPagedQueryResultBuilder plusResults(
104            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPairBuilder> builder) {
105        if (this.results == null) {
106            this.results = new ArrayList<>();
107        }
108        this.results.add(
109            builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()).build());
110        return this;
111    }
112
113    /**
114     *
115     */
116
117    public SimilarProductsPagedQueryResultBuilder withResults(
118            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPairBuilder> builder) {
119        this.results = new ArrayList<>();
120        this.results.add(
121            builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()).build());
122        return this;
123    }
124
125    /**
126     *
127     */
128
129    public SimilarProductsPagedQueryResultBuilder meta(
130            Function<com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder, com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder> builder) {
131        this.meta = builder
132                .apply(com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder.of())
133                .build();
134        return this;
135    }
136
137    /**
138     *
139     */
140
141    public SimilarProductsPagedQueryResultBuilder meta(
142            final com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta meta) {
143        this.meta = meta;
144        return this;
145    }
146
147    public Long getCount() {
148        return this.count;
149    }
150
151    public Long getTotal() {
152        return this.total;
153    }
154
155    public Long getOffset() {
156        return this.offset;
157    }
158
159    public java.util.List<com.commercetools.ml.models.similar_products.SimilarProductPair> getResults() {
160        return this.results;
161    }
162
163    public com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta getMeta() {
164        return this.meta;
165    }
166
167    public SimilarProductsPagedQueryResult build() {
168        Objects.requireNonNull(count, SimilarProductsPagedQueryResult.class + ": count is missing");
169        Objects.requireNonNull(total, SimilarProductsPagedQueryResult.class + ": total is missing");
170        Objects.requireNonNull(offset, SimilarProductsPagedQueryResult.class + ": offset is missing");
171        Objects.requireNonNull(results, SimilarProductsPagedQueryResult.class + ": results is missing");
172        Objects.requireNonNull(meta, SimilarProductsPagedQueryResult.class + ": meta is missing");
173        return new SimilarProductsPagedQueryResultImpl(count, total, offset, results, meta);
174    }
175
176    /**
177     * builds SimilarProductsPagedQueryResult without checking for non null required values
178     */
179    public SimilarProductsPagedQueryResult buildUnchecked() {
180        return new SimilarProductsPagedQueryResultImpl(count, total, offset, results, meta);
181    }
182
183    public static SimilarProductsPagedQueryResultBuilder of() {
184        return new SimilarProductsPagedQueryResultBuilder();
185    }
186
187    public static SimilarProductsPagedQueryResultBuilder of(final SimilarProductsPagedQueryResult template) {
188        SimilarProductsPagedQueryResultBuilder builder = new SimilarProductsPagedQueryResultBuilder();
189        builder.count = template.getCount();
190        builder.total = template.getTotal();
191        builder.offset = template.getOffset();
192        builder.results = template.getResults();
193        builder.meta = template.getMeta();
194        return builder;
195    }
196
197}