001
002package com.commercetools.ml.models.similar_products;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.validation.Valid;
009import javax.validation.constraints.NotNull;
010
011import com.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 *  <p>A pair of SimilarProducts</p>
018 *
019 * <hr>
020 * Example to create an instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     SimilarProductPair similarProductPair = SimilarProductPair.builder()
024 *             .confidence(0.3)
025 *             .plusProducts(productsBuilder -> productsBuilder)
026 *             .build()
027 * </code></pre>
028 * </div>
029 */
030@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
031@JsonDeserialize(as = SimilarProductPairImpl.class)
032public interface SimilarProductPair {
033
034    /**
035     *  <p>The probability of product similarity.</p>
036     */
037    @NotNull
038    @JsonProperty("confidence")
039    public Double getConfidence();
040
041    /**
042     *
043     */
044    @NotNull
045    @Valid
046    @JsonProperty("products")
047    public List<SimilarProduct> getProducts();
048
049    public void setConfidence(final Double confidence);
050
051    @JsonIgnore
052    public void setProducts(final SimilarProduct... products);
053
054    public void setProducts(final List<SimilarProduct> products);
055
056    public static SimilarProductPair of() {
057        return new SimilarProductPairImpl();
058    }
059
060    public static SimilarProductPair of(final SimilarProductPair template) {
061        SimilarProductPairImpl instance = new SimilarProductPairImpl();
062        instance.setConfidence(template.getConfidence());
063        instance.setProducts(template.getProducts());
064        return instance;
065    }
066
067    public static SimilarProductPairBuilder builder() {
068        return SimilarProductPairBuilder.of();
069    }
070
071    public static SimilarProductPairBuilder builder(final SimilarProductPair template) {
072        return SimilarProductPairBuilder.of(template);
073    }
074
075    default <T> T withSimilarProductPair(Function<SimilarProductPair, T> helper) {
076        return helper.apply(this);
077    }
078
079    public static com.fasterxml.jackson.core.type.TypeReference<SimilarProductPair> typeReference() {
080        return new com.fasterxml.jackson.core.type.TypeReference<SimilarProductPair>() {
081            @Override
082            public String toString() {
083                return "TypeReference<SimilarProductPair>";
084            }
085        };
086    }
087}