001
002package com.commercetools.api.models.category;
003
004import java.util.*;
005import java.util.function.Function;
006
007import javax.annotation.Nullable;
008
009import io.vrap.rmf.base.client.Builder;
010import io.vrap.rmf.base.client.utils.Generated;
011
012/**
013 * CategoryAddAssetActionBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     CategoryAddAssetAction categoryAddAssetAction = CategoryAddAssetAction.builder()
019 *             .asset(assetBuilder -> assetBuilder)
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 CategoryAddAssetActionBuilder implements Builder<CategoryAddAssetAction> {
026
027    private com.commercetools.api.models.common.AssetDraft asset;
028
029    @Nullable
030    private Integer position;
031
032    /**
033     *  <p>Value to append.</p>
034     * @param builder function to build the asset value
035     * @return Builder
036     */
037
038    public CategoryAddAssetActionBuilder asset(
039            Function<com.commercetools.api.models.common.AssetDraftBuilder, com.commercetools.api.models.common.AssetDraftBuilder> builder) {
040        this.asset = builder.apply(com.commercetools.api.models.common.AssetDraftBuilder.of()).build();
041        return this;
042    }
043
044    /**
045     *  <p>Value to append.</p>
046     * @param builder function to build the asset value
047     * @return Builder
048     */
049
050    public CategoryAddAssetActionBuilder withAsset(
051            Function<com.commercetools.api.models.common.AssetDraftBuilder, com.commercetools.api.models.common.AssetDraft> builder) {
052        this.asset = builder.apply(com.commercetools.api.models.common.AssetDraftBuilder.of());
053        return this;
054    }
055
056    /**
057     *  <p>Value to append.</p>
058     * @param asset value to be set
059     * @return Builder
060     */
061
062    public CategoryAddAssetActionBuilder asset(final com.commercetools.api.models.common.AssetDraft asset) {
063        this.asset = asset;
064        return this;
065    }
066
067    /**
068     *  <p>Position in the array at which the Asset should be put. When specified, the value must be between <code>0</code> and the total number of Assets minus <code>1</code>.</p>
069     * @param position value to be set
070     * @return Builder
071     */
072
073    public CategoryAddAssetActionBuilder position(@Nullable final Integer position) {
074        this.position = position;
075        return this;
076    }
077
078    /**
079     *  <p>Value to append.</p>
080     * @return asset
081     */
082
083    public com.commercetools.api.models.common.AssetDraft getAsset() {
084        return this.asset;
085    }
086
087    /**
088     *  <p>Position in the array at which the Asset should be put. When specified, the value must be between <code>0</code> and the total number of Assets minus <code>1</code>.</p>
089     * @return position
090     */
091
092    @Nullable
093    public Integer getPosition() {
094        return this.position;
095    }
096
097    /**
098     * builds CategoryAddAssetAction with checking for non-null required values
099     * @return CategoryAddAssetAction
100     */
101    public CategoryAddAssetAction build() {
102        Objects.requireNonNull(asset, CategoryAddAssetAction.class + ": asset is missing");
103        return new CategoryAddAssetActionImpl(asset, position);
104    }
105
106    /**
107     * builds CategoryAddAssetAction without checking for non-null required values
108     * @return CategoryAddAssetAction
109     */
110    public CategoryAddAssetAction buildUnchecked() {
111        return new CategoryAddAssetActionImpl(asset, position);
112    }
113
114    /**
115     * factory method for an instance of CategoryAddAssetActionBuilder
116     * @return builder
117     */
118    public static CategoryAddAssetActionBuilder of() {
119        return new CategoryAddAssetActionBuilder();
120    }
121
122    /**
123     * create builder for CategoryAddAssetAction instance
124     * @param template instance with prefilled values for the builder
125     * @return builder
126     */
127    public static CategoryAddAssetActionBuilder of(final CategoryAddAssetAction template) {
128        CategoryAddAssetActionBuilder builder = new CategoryAddAssetActionBuilder();
129        builder.asset = template.getAsset();
130        builder.position = template.getPosition();
131        return builder;
132    }
133
134}