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}