001 002package com.commercetools.ml.models.category_recommendations; 003 004import java.time.*; 005import java.util.*; 006import java.util.function.Function; 007 008import javax.validation.constraints.NotNull; 009 010import com.fasterxml.jackson.annotation.*; 011import com.fasterxml.jackson.databind.annotation.*; 012 013import io.vrap.rmf.base.client.utils.Generated; 014 015/** 016 * ProjectCategoryRecommendationMeta 017 * 018 * <hr> 019 * Example to create an instance using the builder pattern 020 * <div class=code-example> 021 * <pre><code class='java'> 022 * ProjectCategoryRecommendationMeta projectCategoryRecommendationMeta = ProjectCategoryRecommendationMeta.builder() 023 * .plusGeneralCategoryNames(generalCategoryNamesBuilder -> generalCategoryNamesBuilder) 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 = ProjectCategoryRecommendationMetaImpl.class) 030public interface ProjectCategoryRecommendationMeta { 031 032 /** 033 * <p>The product name that was used to generate recommendations.</p> 034 */ 035 036 @JsonProperty("productName") 037 public String getProductName(); 038 039 /** 040 * <p>The product image that was used to generate recommendations.</p> 041 */ 042 043 @JsonProperty("productImageUrl") 044 public String getProductImageUrl(); 045 046 /** 047 * <p>Top 5 general categories that were used internally to generate the project-specific categories. These category names are not related to the categories defined in the project, but they provide additional information to understand the project-specific categories in the results section.</p> 048 */ 049 @NotNull 050 @JsonProperty("generalCategoryNames") 051 public List<String> getGeneralCategoryNames(); 052 053 public void setProductName(final String productName); 054 055 public void setProductImageUrl(final String productImageUrl); 056 057 @JsonIgnore 058 public void setGeneralCategoryNames(final String... generalCategoryNames); 059 060 public void setGeneralCategoryNames(final List<String> generalCategoryNames); 061 062 public static ProjectCategoryRecommendationMeta of() { 063 return new ProjectCategoryRecommendationMetaImpl(); 064 } 065 066 public static ProjectCategoryRecommendationMeta of(final ProjectCategoryRecommendationMeta template) { 067 ProjectCategoryRecommendationMetaImpl instance = new ProjectCategoryRecommendationMetaImpl(); 068 instance.setProductName(template.getProductName()); 069 instance.setProductImageUrl(template.getProductImageUrl()); 070 instance.setGeneralCategoryNames(template.getGeneralCategoryNames()); 071 return instance; 072 } 073 074 public static ProjectCategoryRecommendationMetaBuilder builder() { 075 return ProjectCategoryRecommendationMetaBuilder.of(); 076 } 077 078 public static ProjectCategoryRecommendationMetaBuilder builder(final ProjectCategoryRecommendationMeta template) { 079 return ProjectCategoryRecommendationMetaBuilder.of(template); 080 } 081 082 default <T> T withProjectCategoryRecommendationMeta(Function<ProjectCategoryRecommendationMeta, T> helper) { 083 return helper.apply(this); 084 } 085 086 public static com.fasterxml.jackson.core.type.TypeReference<ProjectCategoryRecommendationMeta> typeReference() { 087 return new com.fasterxml.jackson.core.type.TypeReference<ProjectCategoryRecommendationMeta>() { 088 @Override 089 public String toString() { 090 return "TypeReference<ProjectCategoryRecommendationMeta>"; 091 } 092 }; 093 } 094}