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}