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     */
053
054    public SimilarProductSearchRequestBuilder limit(@Nullable final Long limit) {
055        this.limit = limit;
056        return this;
057    }
058
059    /**
060     *  <p>Number of elements skipped.</p>
061     */
062
063    public SimilarProductSearchRequestBuilder offset(@Nullable final Long offset) {
064        this.offset = offset;
065        return this;
066    }
067
068    /**
069     *  <p>language tag used to prioritize language for text comparisons.</p>
070     */
071
072    public SimilarProductSearchRequestBuilder language(@Nullable final String language) {
073        this.language = language;
074        return this;
075    }
076
077    /**
078     *  <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>
079     */
080
081    public SimilarProductSearchRequestBuilder currencyCode(@Nullable final String currencyCode) {
082        this.currencyCode = currencyCode;
083        return this;
084    }
085
086    /**
087     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
088     */
089
090    public SimilarProductSearchRequestBuilder similarityMeasures(
091            Function<com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder, com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder> builder) {
092        this.similarityMeasures = builder
093                .apply(com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder.of())
094                .build();
095        return this;
096    }
097
098    /**
099     *  <p><code>similarityMeasures</code> defines the attributes taken into account to measure product similarity.</p>
100     */
101
102    public SimilarProductSearchRequestBuilder similarityMeasures(
103            @Nullable final com.commercetools.ml.models.similar_products.SimilarityMeasures similarityMeasures) {
104        this.similarityMeasures = similarityMeasures;
105        return this;
106    }
107
108    /**
109     *  <p>Array of length 2 of ProductSetSelector</p>
110     */
111
112    public SimilarProductSearchRequestBuilder productSetSelectors(
113            @Nullable final com.commercetools.ml.models.similar_products.ProductSetSelector... productSetSelectors) {
114        this.productSetSelectors = new ArrayList<>(Arrays.asList(productSetSelectors));
115        return this;
116    }
117
118    /**
119     *  <p>Array of length 2 of ProductSetSelector</p>
120     */
121
122    public SimilarProductSearchRequestBuilder productSetSelectors(
123            @Nullable final java.util.List<com.commercetools.ml.models.similar_products.ProductSetSelector> productSetSelectors) {
124        this.productSetSelectors = productSetSelectors;
125        return this;
126    }
127
128    /**
129     *  <p>Array of length 2 of ProductSetSelector</p>
130     */
131
132    public SimilarProductSearchRequestBuilder plusProductSetSelectors(
133            @Nullable final com.commercetools.ml.models.similar_products.ProductSetSelector... productSetSelectors) {
134        if (this.productSetSelectors == null) {
135            this.productSetSelectors = new ArrayList<>();
136        }
137        this.productSetSelectors.addAll(Arrays.asList(productSetSelectors));
138        return this;
139    }
140
141    /**
142     *  <p>Array of length 2 of ProductSetSelector</p>
143     */
144
145    public SimilarProductSearchRequestBuilder plusProductSetSelectors(
146            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder> builder) {
147        if (this.productSetSelectors == null) {
148            this.productSetSelectors = new ArrayList<>();
149        }
150        this.productSetSelectors.add(
151            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()).build());
152        return this;
153    }
154
155    /**
156     *  <p>Array of length 2 of ProductSetSelector</p>
157     */
158
159    public SimilarProductSearchRequestBuilder withProductSetSelectors(
160            Function<com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder, com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder> builder) {
161        this.productSetSelectors = new ArrayList<>();
162        this.productSetSelectors.add(
163            builder.apply(com.commercetools.ml.models.similar_products.ProductSetSelectorBuilder.of()).build());
164        return this;
165    }
166
167    /**
168     *
169     */
170
171    public SimilarProductSearchRequestBuilder confidenceMin(@Nullable final Double confidenceMin) {
172        this.confidenceMin = confidenceMin;
173        return this;
174    }
175
176    /**
177     *
178     */
179
180    public SimilarProductSearchRequestBuilder confidenceMax(@Nullable final Double confidenceMax) {
181        this.confidenceMax = confidenceMax;
182        return this;
183    }
184
185    @Nullable
186    public Long getLimit() {
187        return this.limit;
188    }
189
190    @Nullable
191    public Long getOffset() {
192        return this.offset;
193    }
194
195    @Nullable
196    public String getLanguage() {
197        return this.language;
198    }
199
200    @Nullable
201    public String getCurrencyCode() {
202        return this.currencyCode;
203    }
204
205    @Nullable
206    public com.commercetools.ml.models.similar_products.SimilarityMeasures getSimilarityMeasures() {
207        return this.similarityMeasures;
208    }
209
210    @Nullable
211    public java.util.List<com.commercetools.ml.models.similar_products.ProductSetSelector> getProductSetSelectors() {
212        return this.productSetSelectors;
213    }
214
215    @Nullable
216    public Double getConfidenceMin() {
217        return this.confidenceMin;
218    }
219
220    @Nullable
221    public Double getConfidenceMax() {
222        return this.confidenceMax;
223    }
224
225    public SimilarProductSearchRequest build() {
226        return new SimilarProductSearchRequestImpl(limit, offset, language, currencyCode, similarityMeasures,
227            productSetSelectors, confidenceMin, confidenceMax);
228    }
229
230    /**
231     * builds SimilarProductSearchRequest without checking for non null required values
232     */
233    public SimilarProductSearchRequest buildUnchecked() {
234        return new SimilarProductSearchRequestImpl(limit, offset, language, currencyCode, similarityMeasures,
235            productSetSelectors, confidenceMin, confidenceMax);
236    }
237
238    public static SimilarProductSearchRequestBuilder of() {
239        return new SimilarProductSearchRequestBuilder();
240    }
241
242    public static SimilarProductSearchRequestBuilder of(final SimilarProductSearchRequest template) {
243        SimilarProductSearchRequestBuilder builder = new SimilarProductSearchRequestBuilder();
244        builder.limit = template.getLimit();
245        builder.offset = template.getOffset();
246        builder.language = template.getLanguage();
247        builder.currencyCode = template.getCurrencyCode();
248        builder.similarityMeasures = template.getSimilarityMeasures();
249        builder.productSetSelectors = template.getProductSetSelectors();
250        builder.confidenceMin = template.getConfidenceMin();
251        builder.confidenceMax = template.getConfidenceMax();
252        return builder;
253    }
254
255}