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}