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}