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 */ 033 034 public SimilarProductPairBuilder confidence(final Double confidence) { 035 this.confidence = confidence; 036 return this; 037 } 038 039 /** 040 * 041 */ 042 043 public SimilarProductPairBuilder products( 044 final com.commercetools.ml.models.similar_products.SimilarProduct... products) { 045 this.products = new ArrayList<>(Arrays.asList(products)); 046 return this; 047 } 048 049 /** 050 * 051 */ 052 053 public SimilarProductPairBuilder products( 054 final java.util.List<com.commercetools.ml.models.similar_products.SimilarProduct> products) { 055 this.products = products; 056 return this; 057 } 058 059 /** 060 * 061 */ 062 063 public SimilarProductPairBuilder plusProducts( 064 final com.commercetools.ml.models.similar_products.SimilarProduct... products) { 065 if (this.products == null) { 066 this.products = new ArrayList<>(); 067 } 068 this.products.addAll(Arrays.asList(products)); 069 return this; 070 } 071 072 /** 073 * 074 */ 075 076 public SimilarProductPairBuilder plusProducts( 077 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProductBuilder> builder) { 078 if (this.products == null) { 079 this.products = new ArrayList<>(); 080 } 081 this.products 082 .add(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of()).build()); 083 return this; 084 } 085 086 /** 087 * 088 */ 089 090 public SimilarProductPairBuilder withProducts( 091 Function<com.commercetools.ml.models.similar_products.SimilarProductBuilder, com.commercetools.ml.models.similar_products.SimilarProductBuilder> builder) { 092 this.products = new ArrayList<>(); 093 this.products 094 .add(builder.apply(com.commercetools.ml.models.similar_products.SimilarProductBuilder.of()).build()); 095 return this; 096 } 097 098 public Double getConfidence() { 099 return this.confidence; 100 } 101 102 public java.util.List<com.commercetools.ml.models.similar_products.SimilarProduct> getProducts() { 103 return this.products; 104 } 105 106 public SimilarProductPair build() { 107 Objects.requireNonNull(confidence, SimilarProductPair.class + ": confidence is missing"); 108 Objects.requireNonNull(products, SimilarProductPair.class + ": products is missing"); 109 return new SimilarProductPairImpl(confidence, products); 110 } 111 112 /** 113 * builds SimilarProductPair without checking for non null required values 114 */ 115 public SimilarProductPair buildUnchecked() { 116 return new SimilarProductPairImpl(confidence, products); 117 } 118 119 public static SimilarProductPairBuilder of() { 120 return new SimilarProductPairBuilder(); 121 } 122 123 public static SimilarProductPairBuilder of(final SimilarProductPair template) { 124 SimilarProductPairBuilder builder = new SimilarProductPairBuilder(); 125 builder.confidence = template.getConfidence(); 126 builder.products = template.getProducts(); 127 return builder; 128 } 129 130}