001
002package com.commercetools.ml.models.similar_products;
003
004import java.util.*;
005import java.util.function.Function;
006
007import javax.annotation.Nullable;
008
009import io.vrap.rmf.base.client.Builder;
010import io.vrap.rmf.base.client.utils.Generated;
011
012/**
013 * SimilarProductSearchRequestBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     SimilarProductSearchRequest similarProductSearchRequest = SimilarProductSearchRequest.builder()
019 *             .build()
020 * </code></pre>
021 * </div>
022 */
023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
024public class SimilarProductSearchRequestBuilder implements Builder<SimilarProductSearchRequest> {
025
026    @Nullable
027    private Long limit;
028
029    @Nullable
030    private Long offset;
031
032    @Nullable
033    private String language;
034
035    @Nullable
036    private String currencyCode;
037
038    @Nullable
039    private com.commercetools.ml.models.similar_products.SimilarityMeasures similarityMeasures;
040
041    @Nullable
042    private java.util.List<com.commercetools.ml.models.similar_products.ProductSetSelector> productSetSelectors;
043
044    @Nullable
045    private Double confidenceMin;
046
047    @Nullable
048    private Double confidenceMax;
049
050    /**
051     *  <p>Number of results requested.</p>
052     * @param limit value to be set
053     * @return Builder
054     */
055
056    public SimilarProductSearchRequestBuilder limit(@Nullable final Long limit) {
057        this.limit = limit;
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 SimilarProductSearchRequestBuilder offset(@Nullable final Long offset) {
068        this.offset = offset;
069        return this;
070    }
071
072    /**
073     *  <p>language tag used to prioritize language for text comparisons.</p>
074     * @param language value to be set
075     * @return Builder
076     */
077
078    public SimilarProductSearchRequestBuilder language(@Nullable final String language) {
079        this.language = language;
080        return this;
081    }
082
083    /**
084     *  <p>The three-digit currency code to compare prices in. When a product has multiple prices, all prices for the product are converted to the currency provided by the currency attribute and the median price is calculated for comparison. Currencies are converted using the ECB currency exchange rates at the time the request is made. Of the currency codes, only currencies with currency exchange rates provided by the ECB are supported.</p>
085     * @param currencyCode value to be set
086     * @return Builder
087     */
088
089    public SimilarProductSearchRequestBuilder currencyCode(@Nullable final String currencyCode) {
090        this.currencyCode = currencyCode;
091        return this;
092    }
093
094    /**
095     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
096     * @param builder function to build the similarityMeasures value
097     * @return Builder
098     */
099
100    public SimilarProductSearchRequestBuilder similarityMeasures(
101            Function<com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder, com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder> builder) {
102        this.similarityMeasures = builder
103                .apply(com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder.of())
104                .build();
105        return this;
106    }
107
108    /**
109     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
110     * @param builder function to build the similarityMeasures value
111     * @return Builder
112     */
113
114    public SimilarProductSearchRequestBuilder withSimilarityMeasures(
115            Function<com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder, com.commercetools.ml.models.similar_products.SimilarityMeasures> builder) {
116        this.similarityMeasures = builder
117                .apply(com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder.of());
118        return this;
119    }
120
121    /**
122     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
123     * @param similarityMeasures value to be set
124     * @return Builder
125     */
126
127    public SimilarProductSearchRequestBuilder similarityMeasures(
128            @Nullable final com.commercetools.ml.models.similar_products.SimilarityMeasures similarityMeasures) {
129        this.similarityMeasures = similarityMeasures;
130        return this;
131    }
132
133    /**
134     *  <p>Array of length 2 of ProductSetSelector</p>
135     * @param productSetSelectors value to be set
136     * @return Builder
137     */
138
139    public SimilarProductSearchRequestBuilder productSetSelectors(
140            @Nullable final com.commercetools.ml.models.similar_products.ProductSetSelector... productSetSelectors) {
141        this.productSetSelectors = new ArrayList<>(Arrays.asList(productSetSelectors));
142        return this;
143    }
144
145    /**
146     *  <p>Array of length 2 of ProductSetSelector</p>
147     * @param productSetSelectors value to be set
148     * @return Builder
149     */
150
151    public SimilarProductSearchRequestBuilder productSetSelectors(
152            @Nullable final java.util.List<com.commercetools.ml.models.similar_products.ProductSetSelector> productSetSelectors) {
153        this.productSetSelectors = productSetSelectors;
154        return this;
155    }
156
157    /**
158     *  <p>Array of length 2 of ProductSetSelector</p>
159     * @param productSetSelectors value to be set
160     * @return Builder
161     */
162
163    public SimilarProductSearchRequestBuilder plusProductSetSelectors(
164            @Nullable final com.commercetools.ml.models.similar_products.ProductSetSelector... productSetSelectors) {
165        if (this.productSetSelectors == null) {
166            this.productSetSelectors = new ArrayList<>();
167        }
168        this.productSetSelectors.addAll(Arrays.asList(productSetSelectors));
169        return this;
170    }
171
172    /**
173     *  <p>Array of length 2 of ProductSetSelector</p>
174     * @param builder function to build the productSetSelectors value
175     * @return Builder
176     */
177
178    public SimilarProductSearchRequestBuilder plusProductSetSelectors(
179            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder> builder) {
180        if (this.productSetSelectors == null) {
181            this.productSetSelectors = new ArrayList<>();
182        }
183        this.productSetSelectors.add(
184            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()).build());
185        return this;
186    }
187
188    /**
189     *  <p>Array of length 2 of ProductSetSelector</p>
190     * @param builder function to build the productSetSelectors value
191     * @return Builder
192     */
193
194    public SimilarProductSearchRequestBuilder withProductSetSelectors(
195            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder> builder) {
196        this.productSetSelectors = new ArrayList<>();
197        this.productSetSelectors.add(
198            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()).build());
199        return this;
200    }
201
202    /**
203     *  <p>Array of length 2 of ProductSetSelector</p>
204     * @param builder function to build the productSetSelectors value
205     * @return Builder
206     */
207
208    public SimilarProductSearchRequestBuilder addProductSetSelectors(
209            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelector> builder) {
210        return plusProductSetSelectors(
211            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()));
212    }
213
214    /**
215     *  <p>Array of length 2 of ProductSetSelector</p>
216     * @param builder function to build the productSetSelectors value
217     * @return Builder
218     */
219
220    public SimilarProductSearchRequestBuilder setProductSetSelectors(
221            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelector> builder) {
222        return productSetSelectors(
223            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()));
224    }
225
226    /**
227     * set the value to the confidenceMin
228     * @param confidenceMin value to be set
229     * @return Builder
230     */
231
232    public SimilarProductSearchRequestBuilder confidenceMin(@Nullable final Double confidenceMin) {
233        this.confidenceMin = confidenceMin;
234        return this;
235    }
236
237    /**
238     * set the value to the confidenceMax
239     * @param confidenceMax value to be set
240     * @return Builder
241     */
242
243    public SimilarProductSearchRequestBuilder confidenceMax(@Nullable final Double confidenceMax) {
244        this.confidenceMax = confidenceMax;
245        return this;
246    }
247
248    /**
249     *  <p>Number of results requested.</p>
250     * @return limit
251     */
252
253    @Nullable
254    public Long getLimit() {
255        return this.limit;
256    }
257
258    /**
259     *  <p>Number of elements skipped.</p>
260     * @return offset
261     */
262
263    @Nullable
264    public Long getOffset() {
265        return this.offset;
266    }
267
268    /**
269     *  <p>language tag used to prioritize language for text comparisons.</p>
270     * @return language
271     */
272
273    @Nullable
274    public String getLanguage() {
275        return this.language;
276    }
277
278    /**
279     *  <p>The three-digit currency code to compare prices in. When a product has multiple prices, all prices for the product are converted to the currency provided by the currency attribute and the median price is calculated for comparison. Currencies are converted using the ECB currency exchange rates at the time the request is made. Of the currency codes, only currencies with currency exchange rates provided by the ECB are supported.</p>
280     * @return currencyCode
281     */
282
283    @Nullable
284    public String getCurrencyCode() {
285        return this.currencyCode;
286    }
287
288    /**
289     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
290     * @return similarityMeasures
291     */
292
293    @Nullable
294    public com.commercetools.ml.models.similar_products.SimilarityMeasures getSimilarityMeasures() {
295        return this.similarityMeasures;
296    }
297
298    /**
299     *  <p>Array of length 2 of ProductSetSelector</p>
300     * @return productSetSelectors
301     */
302
303    @Nullable
304    public java.util.List<com.commercetools.ml.models.similar_products.ProductSetSelector> getProductSetSelectors() {
305        return this.productSetSelectors;
306    }
307
308    /**
309     * value of confidenceMin}
310     * @return confidenceMin
311     */
312
313    @Nullable
314    public Double getConfidenceMin() {
315        return this.confidenceMin;
316    }
317
318    /**
319     * value of confidenceMax}
320     * @return confidenceMax
321     */
322
323    @Nullable
324    public Double getConfidenceMax() {
325        return this.confidenceMax;
326    }
327
328    /**
329     * builds SimilarProductSearchRequest with checking for non-null required values
330     * @return SimilarProductSearchRequest
331     */
332    public SimilarProductSearchRequest build() {
333        return new SimilarProductSearchRequestImpl(limit, offset, language, currencyCode, similarityMeasures,
334            productSetSelectors, confidenceMin, confidenceMax);
335    }
336
337    /**
338     * builds SimilarProductSearchRequest without checking for non-null required values
339     * @return SimilarProductSearchRequest
340     */
341    public SimilarProductSearchRequest buildUnchecked() {
342        return new SimilarProductSearchRequestImpl(limit, offset, language, currencyCode, similarityMeasures,
343            productSetSelectors, confidenceMin, confidenceMax);
344    }
345
346    /**
347     * factory method for an instance of SimilarProductSearchRequestBuilder
348     * @return builder
349     */
350    public static SimilarProductSearchRequestBuilder of() {
351        return new SimilarProductSearchRequestBuilder();
352    }
353
354    /**
355     * create builder for SimilarProductSearchRequest instance
356     * @param template instance with prefilled values for the builder
357     * @return builder
358     */
359    public static SimilarProductSearchRequestBuilder of(final SimilarProductSearchRequest template) {
360        SimilarProductSearchRequestBuilder builder = new SimilarProductSearchRequestBuilder();
361        builder.limit = template.getLimit();
362        builder.offset = template.getOffset();
363        builder.language = template.getLanguage();
364        builder.currencyCode = template.getCurrencyCode();
365        builder.similarityMeasures = template.getSimilarityMeasures();
366        builder.productSetSelectors = template.getProductSetSelectors();
367        builder.confidenceMin = template.getConfidenceMin();
368        builder.confidenceMax = template.getConfidenceMax();
369        return builder;
370    }
371
372}