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     * set the value to the count
041     * @param count value to be set
042     * @return Builder
043     */
044
045    public SimilarProductsPagedQueryResultBuilder count(final Long count) {
046        this.count = count;
047        return this;
048    }
049
050    /**
051     * set the value to the total
052     * @param total value to be set
053     * @return Builder
054     */
055
056    public SimilarProductsPagedQueryResultBuilder total(final Long total) {
057        this.total = total;
058        return this;
059    }
060
061    /**
062     *  <p>Number of elements skipped.</p>
063     * @param offset value to be set
064     * @return Builder
065     */
066
067    public SimilarProductsPagedQueryResultBuilder offset(final Long offset) {
068        this.offset = offset;
069        return this;
070    }
071
072    /**
073     * set values to the results
074     * @param results value to be set
075     * @return Builder
076     */
077
078    public SimilarProductsPagedQueryResultBuilder results(
079            final com.commercetools.ml.models.similar_products.SimilarProductPair... results) {
080        this.results = new ArrayList<>(Arrays.asList(results));
081        return this;
082    }
083
084    /**
085     * set value to the results
086     * @param results value to be set
087     * @return Builder
088     */
089
090    public SimilarProductsPagedQueryResultBuilder results(
091            final java.util.List<com.commercetools.ml.models.similar_products.SimilarProductPair> results) {
092        this.results = results;
093        return this;
094    }
095
096    /**
097     * add values to the results
098     * @param results value to be set
099     * @return Builder
100     */
101
102    public SimilarProductsPagedQueryResultBuilder plusResults(
103            final com.commercetools.ml.models.similar_products.SimilarProductPair... results) {
104        if (this.results == null) {
105            this.results = new ArrayList<>();
106        }
107        this.results.addAll(Arrays.asList(results));
108        return this;
109    }
110
111    /**
112     * add the value to the results using the builder function
113     * @param builder function to build the results value
114     * @return Builder
115     */
116
117    public SimilarProductsPagedQueryResultBuilder plusResults(
118            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPairBuilder> builder) {
119        if (this.results == null) {
120            this.results = new ArrayList<>();
121        }
122        this.results.add(
123            builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()).build());
124        return this;
125    }
126
127    /**
128     * set the value to the results using the builder function
129     * @param builder function to build the results value
130     * @return Builder
131     */
132
133    public SimilarProductsPagedQueryResultBuilder withResults(
134            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPairBuilder> builder) {
135        this.results = new ArrayList<>();
136        this.results.add(
137            builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()).build());
138        return this;
139    }
140
141    /**
142     * add the value to the results using the builder function
143     * @param builder function to build the results value
144     * @return Builder
145     */
146
147    public SimilarProductsPagedQueryResultBuilder addResults(
148            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPair> builder) {
149        return plusResults(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()));
150    }
151
152    /**
153     * set the value to the results using the builder function
154     * @param builder function to build the results value
155     * @return Builder
156     */
157
158    public SimilarProductsPagedQueryResultBuilder setResults(
159            Function<com.commercetools.ml.models.similar_products.SimilarProductPairBuilder, com.commercetools.ml.models.similar_products.SimilarProductPair> builder) {
160        return results(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductPairBuilder.of()));
161    }
162
163    /**
164     * set the value to the meta using the builder function
165     * @param builder function to build the meta value
166     * @return Builder
167     */
168
169    public SimilarProductsPagedQueryResultBuilder meta(
170            Function<com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder, com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder> builder) {
171        this.meta = builder
172                .apply(com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder.of())
173                .build();
174        return this;
175    }
176
177    /**
178     * set the value to the meta using the builder function
179     * @param builder function to build the meta value
180     * @return Builder
181     */
182
183    public SimilarProductsPagedQueryResultBuilder withMeta(
184            Function<com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder, com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta> builder) {
185        this.meta = builder
186                .apply(com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMetaBuilder.of());
187        return this;
188    }
189
190    /**
191     * set the value to the meta
192     * @param meta value to be set
193     * @return Builder
194     */
195
196    public SimilarProductsPagedQueryResultBuilder meta(
197            final com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta meta) {
198        this.meta = meta;
199        return this;
200    }
201
202    /**
203     * value of count}
204     * @return count
205     */
206
207    public Long getCount() {
208        return this.count;
209    }
210
211    /**
212     * value of total}
213     * @return total
214     */
215
216    public Long getTotal() {
217        return this.total;
218    }
219
220    /**
221     *  <p>Number of elements skipped.</p>
222     * @return offset
223     */
224
225    public Long getOffset() {
226        return this.offset;
227    }
228
229    /**
230     * value of results}
231     * @return results
232     */
233
234    public java.util.List<com.commercetools.ml.models.similar_products.SimilarProductPair> getResults() {
235        return this.results;
236    }
237
238    /**
239     * value of meta}
240     * @return meta
241     */
242
243    public com.commercetools.ml.models.similar_products.SimilarProductSearchRequestMeta getMeta() {
244        return this.meta;
245    }
246
247    /**
248     * builds SimilarProductsPagedQueryResult with checking for non-null required values
249     * @return SimilarProductsPagedQueryResult
250     */
251    public SimilarProductsPagedQueryResult build() {
252        Objects.requireNonNull(count, SimilarProductsPagedQueryResult.class + ": count is missing");
253        Objects.requireNonNull(total, SimilarProductsPagedQueryResult.class + ": total is missing");
254        Objects.requireNonNull(offset, SimilarProductsPagedQueryResult.class + ": offset is missing");
255        Objects.requireNonNull(results, SimilarProductsPagedQueryResult.class + ": results is missing");
256        Objects.requireNonNull(meta, SimilarProductsPagedQueryResult.class + ": meta is missing");
257        return new SimilarProductsPagedQueryResultImpl(count, total, offset, results, meta);
258    }
259
260    /**
261     * builds SimilarProductsPagedQueryResult without checking for non-null required values
262     * @return SimilarProductsPagedQueryResult
263     */
264    public SimilarProductsPagedQueryResult buildUnchecked() {
265        return new SimilarProductsPagedQueryResultImpl(count, total, offset, results, meta);
266    }
267
268    /**
269     * factory method for an instance of SimilarProductsPagedQueryResultBuilder
270     * @return builder
271     */
272    public static SimilarProductsPagedQueryResultBuilder of() {
273        return new SimilarProductsPagedQueryResultBuilder();
274    }
275
276    /**
277     * create builder for SimilarProductsPagedQueryResult instance
278     * @param template instance with prefilled values for the builder
279     * @return builder
280     */
281    public static SimilarProductsPagedQueryResultBuilder of(final SimilarProductsPagedQueryResult template) {
282        SimilarProductsPagedQueryResultBuilder builder = new SimilarProductsPagedQueryResultBuilder();
283        builder.count = template.getCount();
284        builder.total = template.getTotal();
285        builder.offset = template.getOffset();
286        builder.results = template.getResults();
287        builder.meta = template.getMeta();
288        return builder;
289    }
290
291}