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}