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     * @param productName value to be set
037     * @return Builder
038     */
039
040    public ProjectCategoryRecommendationMetaBuilder productName(@Nullable final String productName) {
041        this.productName = productName;
042        return this;
043    }
044
045    /**
046     *  <p>The product image that was used to generate recommendations.</p>
047     * @param productImageUrl value to be set
048     * @return Builder
049     */
050
051    public ProjectCategoryRecommendationMetaBuilder productImageUrl(@Nullable final String productImageUrl) {
052        this.productImageUrl = productImageUrl;
053        return this;
054    }
055
056    /**
057     *  <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>
058     * @param generalCategoryNames value to be set
059     * @return Builder
060     */
061
062    public ProjectCategoryRecommendationMetaBuilder generalCategoryNames(final String... generalCategoryNames) {
063        this.generalCategoryNames = new ArrayList<>(Arrays.asList(generalCategoryNames));
064        return this;
065    }
066
067    /**
068     *  <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>
069     * @param generalCategoryNames value to be set
070     * @return Builder
071     */
072
073    public ProjectCategoryRecommendationMetaBuilder generalCategoryNames(
074            final java.util.List<String> generalCategoryNames) {
075        this.generalCategoryNames = generalCategoryNames;
076        return this;
077    }
078
079    /**
080     *  <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>
081     * @param generalCategoryNames value to be set
082     * @return Builder
083     */
084
085    public ProjectCategoryRecommendationMetaBuilder plusGeneralCategoryNames(final String... generalCategoryNames) {
086        if (this.generalCategoryNames == null) {
087            this.generalCategoryNames = new ArrayList<>();
088        }
089        this.generalCategoryNames.addAll(Arrays.asList(generalCategoryNames));
090        return this;
091    }
092
093    /**
094     *  <p>The product name that was used to generate recommendations.</p>
095     * @return productName
096     */
097
098    @Nullable
099    public String getProductName() {
100        return this.productName;
101    }
102
103    /**
104     *  <p>The product image that was used to generate recommendations.</p>
105     * @return productImageUrl
106     */
107
108    @Nullable
109    public String getProductImageUrl() {
110        return this.productImageUrl;
111    }
112
113    /**
114     *  <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>
115     * @return generalCategoryNames
116     */
117
118    public java.util.List<String> getGeneralCategoryNames() {
119        return this.generalCategoryNames;
120    }
121
122    /**
123     * builds ProjectCategoryRecommendationMeta with checking for non-null required values
124     * @return ProjectCategoryRecommendationMeta
125     */
126    public ProjectCategoryRecommendationMeta build() {
127        Objects.requireNonNull(generalCategoryNames,
128            ProjectCategoryRecommendationMeta.class + ": generalCategoryNames is missing");
129        return new ProjectCategoryRecommendationMetaImpl(productName, productImageUrl, generalCategoryNames);
130    }
131
132    /**
133     * builds ProjectCategoryRecommendationMeta without checking for non-null required values
134     * @return ProjectCategoryRecommendationMeta
135     */
136    public ProjectCategoryRecommendationMeta buildUnchecked() {
137        return new ProjectCategoryRecommendationMetaImpl(productName, productImageUrl, generalCategoryNames);
138    }
139
140    /**
141     * factory method for an instance of ProjectCategoryRecommendationMetaBuilder
142     * @return builder
143     */
144    public static ProjectCategoryRecommendationMetaBuilder of() {
145        return new ProjectCategoryRecommendationMetaBuilder();
146    }
147
148    /**
149     * create builder for ProjectCategoryRecommendationMeta instance
150     * @param template instance with prefilled values for the builder
151     * @return builder
152     */
153    public static ProjectCategoryRecommendationMetaBuilder of(final ProjectCategoryRecommendationMeta template) {
154        ProjectCategoryRecommendationMetaBuilder builder = new ProjectCategoryRecommendationMetaBuilder();
155        builder.productName = template.getProductName();
156        builder.productImageUrl = template.getProductImageUrl();
157        builder.generalCategoryNames = template.getGeneralCategoryNames();
158        return builder;
159    }
160
161}