001
002package com.commercetools.ml.models.category_recommendations;
003
004import java.util.*;
005import java.util.function.Function;
006
007import io.vrap.rmf.base.client.Builder;
008import io.vrap.rmf.base.client.utils.Generated;
009
010/**
011 * ProjectCategoryRecommendationBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     ProjectCategoryRecommendation projectCategoryRecommendation = ProjectCategoryRecommendation.builder()
017 *             .category(categoryBuilder -> categoryBuilder)
018 *             .confidence(0.3)
019 *             .path("{path}")
020 *             .build()
021 * </code></pre>
022 * </div>
023 */
024@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
025public class ProjectCategoryRecommendationBuilder implements Builder<ProjectCategoryRecommendation> {
026
027    private com.commercetools.ml.models.common.CategoryReference category;
028
029    private Double confidence;
030
031    private String path;
032
033    /**
034     *  <p>A category that is recommended for a product.</p>
035     */
036
037    public ProjectCategoryRecommendationBuilder category(
038            Function<com.commercetools.ml.models.common.CategoryReferenceBuilder, com.commercetools.ml.models.common.CategoryReferenceBuilder> builder) {
039        this.category = builder.apply(com.commercetools.ml.models.common.CategoryReferenceBuilder.of()).build();
040        return this;
041    }
042
043    /**
044     *  <p>A category that is recommended for a product.</p>
045     */
046
047    public ProjectCategoryRecommendationBuilder category(
048            final com.commercetools.ml.models.common.CategoryReference category) {
049        this.category = category;
050        return this;
051    }
052
053    /**
054     *  <p>Probability score for the category recommendation.</p>
055     */
056
057    public ProjectCategoryRecommendationBuilder confidence(final Double confidence) {
058        this.confidence = confidence;
059        return this;
060    }
061
062    /**
063     *  <p>Breadcrumb path to the recommended category. This only picks up one language, not all available languages for the category. English is prioritized, but if English data is not available, an arbitrary language is selected. Do not use this to identify a category,use the category ID from the category reference instead.</p>
064     */
065
066    public ProjectCategoryRecommendationBuilder path(final String path) {
067        this.path = path;
068        return this;
069    }
070
071    public com.commercetools.ml.models.common.CategoryReference getCategory() {
072        return this.category;
073    }
074
075    public Double getConfidence() {
076        return this.confidence;
077    }
078
079    public String getPath() {
080        return this.path;
081    }
082
083    public ProjectCategoryRecommendation build() {
084        Objects.requireNonNull(category, ProjectCategoryRecommendation.class + ": category is missing");
085        Objects.requireNonNull(confidence, ProjectCategoryRecommendation.class + ": confidence is missing");
086        Objects.requireNonNull(path, ProjectCategoryRecommendation.class + ": path is missing");
087        return new ProjectCategoryRecommendationImpl(category, confidence, path);
088    }
089
090    /**
091     * builds ProjectCategoryRecommendation without checking for non null required values
092     */
093    public ProjectCategoryRecommendation buildUnchecked() {
094        return new ProjectCategoryRecommendationImpl(category, confidence, path);
095    }
096
097    public static ProjectCategoryRecommendationBuilder of() {
098        return new ProjectCategoryRecommendationBuilder();
099    }
100
101    public static ProjectCategoryRecommendationBuilder of(final ProjectCategoryRecommendation template) {
102        ProjectCategoryRecommendationBuilder builder = new ProjectCategoryRecommendationBuilder();
103        builder.category = template.getCategory();
104        builder.confidence = template.getConfidence();
105        builder.path = template.getPath();
106        return builder;
107    }
108
109}