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}