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}