001
002package com.commercetools.ml.models.category_recommendations;
003
004import java.util.*;
005
006import javax.annotation.Nullable;
007
008import io.vrap.rmf.base.client.Builder;
009import io.vrap.rmf.base.client.utils.Generated;
010
011/**
012 * ProjectCategoryRecommendationMetaBuilder
013 * <hr>
014 * Example to create an instance using the builder pattern
015 * <div class=code-example>
016 * <pre><code class='java'>
017 *     ProjectCategoryRecommendationMeta projectCategoryRecommendationMeta = ProjectCategoryRecommendationMeta.builder()
018 *             .plusGeneralCategoryNames(generalCategoryNamesBuilder -> generalCategoryNamesBuilder)
019 *             .build()
020 * </code></pre>
021 * </div>
022 */
023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
024public class ProjectCategoryRecommendationMetaBuilder implements Builder<ProjectCategoryRecommendationMeta> {
025
026    @Nullable
027    private String productName;
028
029    @Nullable
030    private String productImageUrl;
031
032    private java.util.List<String> generalCategoryNames;
033
034    /**
035     *  <p>The product name that was used to generate recommendations.</p>
036     */
037
038    public ProjectCategoryRecommendationMetaBuilder productName(@Nullable final String productName) {
039        this.productName = productName;
040        return this;
041    }
042
043    /**
044     *  <p>The product image that was used to generate recommendations.</p>
045     */
046
047    public ProjectCategoryRecommendationMetaBuilder productImageUrl(@Nullable final String productImageUrl) {
048        this.productImageUrl = productImageUrl;
049        return this;
050    }
051
052    /**
053     *  <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>
054     */
055
056    public ProjectCategoryRecommendationMetaBuilder generalCategoryNames(final String... generalCategoryNames) {
057        this.generalCategoryNames = new ArrayList<>(Arrays.asList(generalCategoryNames));
058        return this;
059    }
060
061    /**
062     *  <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>
063     */
064
065    public ProjectCategoryRecommendationMetaBuilder generalCategoryNames(
066            final java.util.List<String> generalCategoryNames) {
067        this.generalCategoryNames = generalCategoryNames;
068        return this;
069    }
070
071    /**
072     *  <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>
073     */
074
075    public ProjectCategoryRecommendationMetaBuilder plusGeneralCategoryNames(final String... generalCategoryNames) {
076        if (this.generalCategoryNames == null) {
077            this.generalCategoryNames = new ArrayList<>();
078        }
079        this.generalCategoryNames.addAll(Arrays.asList(generalCategoryNames));
080        return this;
081    }
082
083    @Nullable
084    public String getProductName() {
085        return this.productName;
086    }
087
088    @Nullable
089    public String getProductImageUrl() {
090        return this.productImageUrl;
091    }
092
093    public java.util.List<String> getGeneralCategoryNames() {
094        return this.generalCategoryNames;
095    }
096
097    public ProjectCategoryRecommendationMeta build() {
098        Objects.requireNonNull(generalCategoryNames,
099            ProjectCategoryRecommendationMeta.class + ": generalCategoryNames is missing");
100        return new ProjectCategoryRecommendationMetaImpl(productName, productImageUrl, generalCategoryNames);
101    }
102
103    /**
104     * builds ProjectCategoryRecommendationMeta without checking for non null required values
105     */
106    public ProjectCategoryRecommendationMeta buildUnchecked() {
107        return new ProjectCategoryRecommendationMetaImpl(productName, productImageUrl, generalCategoryNames);
108    }
109
110    public static ProjectCategoryRecommendationMetaBuilder of() {
111        return new ProjectCategoryRecommendationMetaBuilder();
112    }
113
114    public static ProjectCategoryRecommendationMetaBuilder of(final ProjectCategoryRecommendationMeta template) {
115        ProjectCategoryRecommendationMetaBuilder builder = new ProjectCategoryRecommendationMetaBuilder();
116        builder.productName = template.getProductName();
117        builder.productImageUrl = template.getProductImageUrl();
118        builder.generalCategoryNames = template.getGeneralCategoryNames();
119        return builder;
120    }
121
122}