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}