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;
009
010import com.commercetools.ml.models.common.LocalizedString;
011import com.commercetools.ml.models.common.Money;
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 * SimilarProductMeta
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     SimilarProductMeta similarProductMeta = SimilarProductMeta.builder()
025 *             .build()
026 * </code></pre>
027 * </div>
028 */
029@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
030@JsonDeserialize(as = SimilarProductMetaImpl.class)
031public interface SimilarProductMeta {
032
033    /**
034     *  <p>Localized product name used for similarity estimation.</p>
035     */
036    @Valid
037    @JsonProperty("name")
038    public LocalizedString getName();
039
040    /**
041     *  <p>Localized product description used for similarity estimation.</p>
042     */
043    @Valid
044    @JsonProperty("description")
045    public LocalizedString getDescription();
046
047    /**
048     *  <p>The product price in cents using the currency defined in SimilarProductSearchRequest If multiple prices exist, the median value is taken as a representative amount.</p>
049     */
050    @Valid
051    @JsonProperty("price")
052    public Money getPrice();
053
054    /**
055     *  <p>Total number of variants associated with the product.</p>
056     */
057
058    @JsonProperty("variantCount")
059    public Long getVariantCount();
060
061    public void setName(final LocalizedString name);
062
063    public void setDescription(final LocalizedString description);
064
065    public void setPrice(final Money price);
066
067    public void setVariantCount(final Long variantCount);
068
069    public static SimilarProductMeta of() {
070        return new SimilarProductMetaImpl();
071    }
072
073    public static SimilarProductMeta of(final SimilarProductMeta template) {
074        SimilarProductMetaImpl instance = new SimilarProductMetaImpl();
075        instance.setName(template.getName());
076        instance.setDescription(template.getDescription());
077        instance.setPrice(template.getPrice());
078        instance.setVariantCount(template.getVariantCount());
079        return instance;
080    }
081
082    public static SimilarProductMetaBuilder builder() {
083        return SimilarProductMetaBuilder.of();
084    }
085
086    public static SimilarProductMetaBuilder builder(final SimilarProductMeta template) {
087        return SimilarProductMetaBuilder.of(template);
088    }
089
090    default <T> T withSimilarProductMeta(Function<SimilarProductMeta, T> helper) {
091        return helper.apply(this);
092    }
093
094    public static com.fasterxml.jackson.core.type.TypeReference<SimilarProductMeta> typeReference() {
095        return new com.fasterxml.jackson.core.type.TypeReference<SimilarProductMeta>() {
096            @Override
097            public String toString() {
098                return "TypeReference<SimilarProductMeta>";
099            }
100        };
101    }
102}