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}