001 002package com.commercetools.ml.models.image_search; 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 * ResultItemBuilder 012 * <hr> 013 * Example to create an instance using the builder pattern 014 * <div class=code-example> 015 * <pre><code class='java'> 016 * ResultItem resultItem = ResultItem.builder() 017 * .imageUrl("{imageUrl}") 018 * .plusProductVariants(productVariantsBuilder -> productVariantsBuilder) 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 ResultItemBuilder implements Builder<ResultItem> { 025 026 private String imageUrl; 027 028 private java.util.List<com.commercetools.ml.models.common.ProductVariant> productVariants; 029 030 /** 031 * <p>The URL of the image.</p> 032 */ 033 034 public ResultItemBuilder imageUrl(final String imageUrl) { 035 this.imageUrl = imageUrl; 036 return this; 037 } 038 039 /** 040 * <p>An array of product variants containing the image URL.</p> 041 */ 042 043 public ResultItemBuilder productVariants( 044 final com.commercetools.ml.models.common.ProductVariant... productVariants) { 045 this.productVariants = new ArrayList<>(Arrays.asList(productVariants)); 046 return this; 047 } 048 049 /** 050 * <p>An array of product variants containing the image URL.</p> 051 */ 052 053 public ResultItemBuilder productVariants( 054 final java.util.List<com.commercetools.ml.models.common.ProductVariant> productVariants) { 055 this.productVariants = productVariants; 056 return this; 057 } 058 059 /** 060 * <p>An array of product variants containing the image URL.</p> 061 */ 062 063 public ResultItemBuilder plusProductVariants( 064 final com.commercetools.ml.models.common.ProductVariant... productVariants) { 065 if (this.productVariants == null) { 066 this.productVariants = new ArrayList<>(); 067 } 068 this.productVariants.addAll(Arrays.asList(productVariants)); 069 return this; 070 } 071 072 /** 073 * <p>An array of product variants containing the image URL.</p> 074 */ 075 076 public ResultItemBuilder plusProductVariants( 077 Function<com.commercetools.ml.models.common.ProductVariantBuilder, com.commercetools.ml.models.common.ProductVariantBuilder> builder) { 078 if (this.productVariants == null) { 079 this.productVariants = new ArrayList<>(); 080 } 081 this.productVariants.add(builder.apply(com.commercetools.ml.models.common.ProductVariantBuilder.of()).build()); 082 return this; 083 } 084 085 /** 086 * <p>An array of product variants containing the image URL.</p> 087 */ 088 089 public ResultItemBuilder withProductVariants( 090 Function<com.commercetools.ml.models.common.ProductVariantBuilder, com.commercetools.ml.models.common.ProductVariantBuilder> builder) { 091 this.productVariants = new ArrayList<>(); 092 this.productVariants.add(builder.apply(com.commercetools.ml.models.common.ProductVariantBuilder.of()).build()); 093 return this; 094 } 095 096 public String getImageUrl() { 097 return this.imageUrl; 098 } 099 100 public java.util.List<com.commercetools.ml.models.common.ProductVariant> getProductVariants() { 101 return this.productVariants; 102 } 103 104 public ResultItem build() { 105 Objects.requireNonNull(imageUrl, ResultItem.class + ": imageUrl is missing"); 106 Objects.requireNonNull(productVariants, ResultItem.class + ": productVariants is missing"); 107 return new ResultItemImpl(imageUrl, productVariants); 108 } 109 110 /** 111 * builds ResultItem without checking for non null required values 112 */ 113 public ResultItem buildUnchecked() { 114 return new ResultItemImpl(imageUrl, productVariants); 115 } 116 117 public static ResultItemBuilder of() { 118 return new ResultItemBuilder(); 119 } 120 121 public static ResultItemBuilder of(final ResultItem template) { 122 ResultItemBuilder builder = new ResultItemBuilder(); 123 builder.imageUrl = template.getImageUrl(); 124 builder.productVariants = template.getProductVariants(); 125 return builder; 126 } 127 128}