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}