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.ProductReference; 011import com.fasterxml.jackson.annotation.*; 012import com.fasterxml.jackson.databind.annotation.*; 013 014import io.vrap.rmf.base.client.utils.Generated; 015 016/** 017 * <p>One part of a SimilarProductPair. Refers to a specific ProductVariant.</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 * SimilarProduct similarProduct = SimilarProduct.builder() 024 * .build() 025 * </code></pre> 026 * </div> 027 */ 028@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen") 029@JsonDeserialize(as = SimilarProductImpl.class) 030public interface SimilarProduct { 031 032 /** 033 * <p>Reference to Product</p> 034 */ 035 @Valid 036 @JsonProperty("product") 037 public ProductReference getProduct(); 038 039 /** 040 * <p>ID of the ProductVariant that was compared.</p> 041 */ 042 043 @JsonProperty("variantId") 044 public Long getVariantId(); 045 046 /** 047 * <p>Supplementary information about the data used for similarity estimation. This information helps you understand the estimated confidence score, but it should not be used to identify a product.</p> 048 */ 049 @Valid 050 @JsonProperty("meta") 051 public SimilarProductMeta getMeta(); 052 053 public void setProduct(final ProductReference product); 054 055 public void setVariantId(final Long variantId); 056 057 public void setMeta(final SimilarProductMeta meta); 058 059 public static SimilarProduct of() { 060 return new SimilarProductImpl(); 061 } 062 063 public static SimilarProduct of(final SimilarProduct template) { 064 SimilarProductImpl instance = new SimilarProductImpl(); 065 instance.setProduct(template.getProduct()); 066 instance.setVariantId(template.getVariantId()); 067 instance.setMeta(template.getMeta()); 068 return instance; 069 } 070 071 public static SimilarProductBuilder builder() { 072 return SimilarProductBuilder.of(); 073 } 074 075 public static SimilarProductBuilder builder(final SimilarProduct template) { 076 return SimilarProductBuilder.of(template); 077 } 078 079 default <T> T withSimilarProduct(Function<SimilarProduct, T> helper) { 080 return helper.apply(this); 081 } 082 083 public static com.fasterxml.jackson.core.type.TypeReference<SimilarProduct> typeReference() { 084 return new com.fasterxml.jackson.core.type.TypeReference<SimilarProduct>() { 085 @Override 086 public String toString() { 087 return "TypeReference<SimilarProduct>"; 088 } 089 }; 090 } 091}