001
002package com.commercetools.ml.models.similar_products;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 * SimilarProductSearchRequestMeta
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     SimilarProductSearchRequestMeta similarProductSearchRequestMeta = SimilarProductSearchRequestMeta.builder()
025 *             .similarityMeasures(similarityMeasuresBuilder -> similarityMeasuresBuilder)
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 = SimilarProductSearchRequestMetaImpl.class)
032public interface SimilarProductSearchRequestMeta {
033
034    /**
035     *  <p>The SimilarityMeasures used in this search.</p>
036     * @return similarityMeasures
037     */
038    @NotNull
039    @Valid
040    @JsonProperty("similarityMeasures")
041    public SimilarityMeasures getSimilarityMeasures();
042
043    /**
044     *  <p>The SimilarityMeasures used in this search.</p>
045     * @param similarityMeasures value to be set
046     */
047
048    public void setSimilarityMeasures(final SimilarityMeasures similarityMeasures);
049
050    /**
051     * factory method
052     * @return instance of SimilarProductSearchRequestMeta
053     */
054    public static SimilarProductSearchRequestMeta of() {
055        return new SimilarProductSearchRequestMetaImpl();
056    }
057
058    /**
059     * factory method to create a shallow copy SimilarProductSearchRequestMeta
060     * @param template instance to be copied
061     * @return copy instance
062     */
063    public static SimilarProductSearchRequestMeta of(final SimilarProductSearchRequestMeta template) {
064        SimilarProductSearchRequestMetaImpl instance = new SimilarProductSearchRequestMetaImpl();
065        instance.setSimilarityMeasures(template.getSimilarityMeasures());
066        return instance;
067    }
068
069    /**
070     * factory method to create a deep copy of SimilarProductSearchRequestMeta
071     * @param template instance to be copied
072     * @return copy instance
073     */
074    @Nullable
075    public static SimilarProductSearchRequestMeta deepCopy(@Nullable final SimilarProductSearchRequestMeta template) {
076        if (template == null) {
077            return null;
078        }
079        SimilarProductSearchRequestMetaImpl instance = new SimilarProductSearchRequestMetaImpl();
080        instance.setSimilarityMeasures(
081            com.commercetools.ml.models.similar_products.SimilarityMeasures.deepCopy(template.getSimilarityMeasures()));
082        return instance;
083    }
084
085    /**
086     * builder factory method for SimilarProductSearchRequestMeta
087     * @return builder
088     */
089    public static SimilarProductSearchRequestMetaBuilder builder() {
090        return SimilarProductSearchRequestMetaBuilder.of();
091    }
092
093    /**
094     * create builder for SimilarProductSearchRequestMeta instance
095     * @param template instance with prefilled values for the builder
096     * @return builder
097     */
098    public static SimilarProductSearchRequestMetaBuilder builder(final SimilarProductSearchRequestMeta template) {
099        return SimilarProductSearchRequestMetaBuilder.of(template);
100    }
101
102    /**
103     * accessor map function
104     * @param <T> mapped type
105     * @param helper function to map the object
106     * @return mapped value
107     */
108    default <T> T withSimilarProductSearchRequestMeta(Function<SimilarProductSearchRequestMeta, T> helper) {
109        return helper.apply(this);
110    }
111
112    /**
113     * gives a TypeReference for usage with Jackson DataBind
114     * @return TypeReference
115     */
116    public static com.fasterxml.jackson.core.type.TypeReference<SimilarProductSearchRequestMeta> typeReference() {
117        return new com.fasterxml.jackson.core.type.TypeReference<SimilarProductSearchRequestMeta>() {
118            @Override
119            public String toString() {
120                return "TypeReference<SimilarProductSearchRequestMeta>";
121            }
122        };
123    }
124}