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 * SimilarProductPairBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * SimilarProductPair similarProductPair = SimilarProductPair.builder() 017 * .confidence(0.3) 018 * .plusProducts(productsBuilder -> productsBuilder) 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 SimilarProductPairBuilder implements Builder<SimilarProductPair> { 025 026 private Double confidence; 027 028 private java.util.List<com.commercetools.ml.models.similar_products.SimilarProduct> products; 029 030 /** 031 * <p>The probability of product similarity.</p> 032 * @param confidence value to be set 033 * @return Builder 034 */ 035 036 public SimilarProductPairBuilder confidence(final Double confidence) { 037 this.confidence = confidence; 038 return this; 039 } 040 041 /** 042 * set values to the products 043 * @param products value to be set 044 * @return Builder 045 */ 046 047 public SimilarProductPairBuilder products( 048 final com.commercetools.ml.models.similar_products.SimilarProduct... products) { 049 this.products = new ArrayList<>(Arrays.asList(products)); 050 return this; 051 } 052 053 /** 054 * set value to the products 055 * @param products value to be set 056 * @return Builder 057 */ 058 059 public SimilarProductPairBuilder products( 060 final java.util.List<com.commercetools.ml.models.similar_products.SimilarProduct> products) { 061 this.products = products; 062 return this; 063 } 064 065 /** 066 * add values to the products 067 * @param products value to be set 068 * @return Builder 069 */ 070 071 public SimilarProductPairBuilder plusProducts( 072 final com.commercetools.ml.models.similar_products.SimilarProduct... products) { 073 if (this.products == null) { 074 this.products = new ArrayList<>(); 075 } 076 this.products.addAll(Arrays.asList(products)); 077 return this; 078 } 079 080 /** 081 * add the value to the products using the builder function 082 * @param builder function to build the products value 083 * @return Builder 084 */ 085 086 public SimilarProductPairBuilder plusProducts( 087 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProductBuilder> builder) { 088 if (this.products == null) { 089 this.products = new ArrayList<>(); 090 } 091 this.products 092 .add(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of()).build()); 093 return this; 094 } 095 096 /** 097 * set the value to the products using the builder function 098 * @param builder function to build the products value 099 * @return Builder 100 */ 101 102 public SimilarProductPairBuilder withProducts( 103 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProductBuilder> builder) { 104 this.products = new ArrayList<>(); 105 this.products 106 .add(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of()).build()); 107 return this; 108 } 109 110 /** 111 * add the value to the products using the builder function 112 * @param builder function to build the products value 113 * @return Builder 114 */ 115 116 public SimilarProductPairBuilder addProducts( 117 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProduct> builder) { 118 return plusProducts(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of())); 119 } 120 121 /** 122 * set the value to the products using the builder function 123 * @param builder function to build the products value 124 * @return Builder 125 */ 126 127 public SimilarProductPairBuilder setProducts( 128 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProduct> builder) { 129 return products(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of())); 130 } 131 132 /** 133 * <p>The probability of product similarity.</p> 134 * @return confidence 135 */ 136 137 public Double getConfidence() { 138 return this.confidence; 139 } 140 141 /** 142 * value of products} 143 * @return products 144 */ 145 146 public java.util.List<com.commercetools.ml.models.similar_products.SimilarProduct> getProducts() { 147 return this.products; 148 } 149 150 /** 151 * builds SimilarProductPair with checking for non-null required values 152 * @return SimilarProductPair 153 */ 154 public SimilarProductPair build() { 155 Objects.requireNonNull(confidence, SimilarProductPair.class + ": confidence is missing"); 156 Objects.requireNonNull(products, SimilarProductPair.class + ": products is missing"); 157 return new SimilarProductPairImpl(confidence, products); 158 } 159 160 /** 161 * builds SimilarProductPair without checking for non-null required values 162 * @return SimilarProductPair 163 */ 164 public SimilarProductPair buildUnchecked() { 165 return new SimilarProductPairImpl(confidence, products); 166 } 167 168 /** 169 * factory method for an instance of SimilarProductPairBuilder 170 * @return builder 171 */ 172 public static SimilarProductPairBuilder of() { 173 return new SimilarProductPairBuilder(); 174 } 175 176 /** 177 * create builder for SimilarProductPair instance 178 * @param template instance with prefilled values for the builder 179 * @return builder 180 */ 181 public static SimilarProductPairBuilder of(final SimilarProductPair template) { 182 SimilarProductPairBuilder builder = new SimilarProductPairBuilder(); 183 builder.confidence = template.getConfidence(); 184 builder.products = template.getProducts(); 185 return builder; 186 } 187 188}