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 * SimilarProductSearchRequestMetaBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     SimilarProductSearchRequestMeta similarProductSearchRequestMeta = SimilarProductSearchRequestMeta.builder()
017 *             .similarityMeasures(similarityMeasuresBuilder -> similarityMeasuresBuilder)
018 *             .build()
019 * </code></pre>
020 * </div>
021 */
022@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
023public class SimilarProductSearchRequestMetaBuilder implements Builder<SimilarProductSearchRequestMeta> {
024
025    private com.commercetools.ml.models.similar_products.SimilarityMeasures similarityMeasures;
026
027    /**
028     *  <p>The SimilarityMeasures used in this search.</p>
029     * @param builder function to build the similarityMeasures value
030     * @return Builder
031     */
032
033    public SimilarProductSearchRequestMetaBuilder similarityMeasures(
034            Function<com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder, com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder> builder) {
035        this.similarityMeasures = builder
036                .apply(com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder.of())
037                .build();
038        return this;
039    }
040
041    /**
042     *  <p>The SimilarityMeasures used in this search.</p>
043     * @param builder function to build the similarityMeasures value
044     * @return Builder
045     */
046
047    public SimilarProductSearchRequestMetaBuilder withSimilarityMeasures(
048            Function<com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder, com.commercetools.ml.models.similar_products.SimilarityMeasures> builder) {
049        this.similarityMeasures = builder
050                .apply(com.commercetools.ml.models.similar_products.SimilarityMeasuresBuilder.of());
051        return this;
052    }
053
054    /**
055     *  <p>The SimilarityMeasures used in this search.</p>
056     * @param similarityMeasures value to be set
057     * @return Builder
058     */
059
060    public SimilarProductSearchRequestMetaBuilder similarityMeasures(
061            final com.commercetools.ml.models.similar_products.SimilarityMeasures similarityMeasures) {
062        this.similarityMeasures = similarityMeasures;
063        return this;
064    }
065
066    /**
067     *  <p>The SimilarityMeasures used in this search.</p>
068     * @return similarityMeasures
069     */
070
071    public com.commercetools.ml.models.similar_products.SimilarityMeasures getSimilarityMeasures() {
072        return this.similarityMeasures;
073    }
074
075    /**
076     * builds SimilarProductSearchRequestMeta with checking for non-null required values
077     * @return SimilarProductSearchRequestMeta
078     */
079    public SimilarProductSearchRequestMeta build() {
080        Objects.requireNonNull(similarityMeasures,
081            SimilarProductSearchRequestMeta.class + ": similarityMeasures is missing");
082        return new SimilarProductSearchRequestMetaImpl(similarityMeasures);
083    }
084
085    /**
086     * builds SimilarProductSearchRequestMeta without checking for non-null required values
087     * @return SimilarProductSearchRequestMeta
088     */
089    public SimilarProductSearchRequestMeta buildUnchecked() {
090        return new SimilarProductSearchRequestMetaImpl(similarityMeasures);
091    }
092
093    /**
094     * factory method for an instance of SimilarProductSearchRequestMetaBuilder
095     * @return builder
096     */
097    public static SimilarProductSearchRequestMetaBuilder of() {
098        return new SimilarProductSearchRequestMetaBuilder();
099    }
100
101    /**
102     * create builder for SimilarProductSearchRequestMeta instance
103     * @param template instance with prefilled values for the builder
104     * @return builder
105     */
106    public static SimilarProductSearchRequestMetaBuilder of(final SimilarProductSearchRequestMeta template) {
107        SimilarProductSearchRequestMetaBuilder builder = new SimilarProductSearchRequestMetaBuilder();
108        builder.similarityMeasures = template.getSimilarityMeasures();
109        return builder;
110    }
111
112}