001
002package com.commercetools.api.models.cart;
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 * CartSetDirectDiscountsActionBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     CartSetDirectDiscountsAction cartSetDirectDiscountsAction = CartSetDirectDiscountsAction.builder()
017 *             .plusDiscounts(discountsBuilder -> discountsBuilder)
018 *             .build()
019 * </code></pre>
020 * </div>
021 */
022@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
023public class CartSetDirectDiscountsActionBuilder implements Builder<CartSetDirectDiscountsAction> {
024
025    private java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> discounts;
026
027    /**
028     *  <ul>
029     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
030     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
031     *  </ul>
032     * @param discounts value to be set
033     * @return Builder
034     */
035
036    public CartSetDirectDiscountsActionBuilder discounts(
037            final com.commercetools.api.models.cart.DirectDiscountDraft... discounts) {
038        this.discounts = new ArrayList<>(Arrays.asList(discounts));
039        return this;
040    }
041
042    /**
043     *  <ul>
044     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
045     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
046     *  </ul>
047     * @param discounts value to be set
048     * @return Builder
049     */
050
051    public CartSetDirectDiscountsActionBuilder discounts(
052            final java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> discounts) {
053        this.discounts = discounts;
054        return this;
055    }
056
057    /**
058     *  <ul>
059     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
060     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
061     *  </ul>
062     * @param discounts value to be set
063     * @return Builder
064     */
065
066    public CartSetDirectDiscountsActionBuilder plusDiscounts(
067            final com.commercetools.api.models.cart.DirectDiscountDraft... discounts) {
068        if (this.discounts == null) {
069            this.discounts = new ArrayList<>();
070        }
071        this.discounts.addAll(Arrays.asList(discounts));
072        return this;
073    }
074
075    /**
076     *  <ul>
077     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
078     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
079     *  </ul>
080     * @param builder function to build the discounts value
081     * @return Builder
082     */
083
084    public CartSetDirectDiscountsActionBuilder plusDiscounts(
085            Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraftBuilder> builder) {
086        if (this.discounts == null) {
087            this.discounts = new ArrayList<>();
088        }
089        this.discounts.add(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()).build());
090        return this;
091    }
092
093    /**
094     *  <ul>
095     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
096     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
097     *  </ul>
098     * @param builder function to build the discounts value
099     * @return Builder
100     */
101
102    public CartSetDirectDiscountsActionBuilder withDiscounts(
103            Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraftBuilder> builder) {
104        this.discounts = new ArrayList<>();
105        this.discounts.add(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()).build());
106        return this;
107    }
108
109    /**
110     *  <ul>
111     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
112     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
113     *  </ul>
114     * @param builder function to build the discounts value
115     * @return Builder
116     */
117
118    public CartSetDirectDiscountsActionBuilder addDiscounts(
119            Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraft> builder) {
120        return plusDiscounts(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()));
121    }
122
123    /**
124     *  <ul>
125     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
126     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
127     *  </ul>
128     * @param builder function to build the discounts value
129     * @return Builder
130     */
131
132    public CartSetDirectDiscountsActionBuilder setDiscounts(
133            Function<com.commercetools.api.models.cart.DirectDiscountDraftBuilder, com.commercetools.api.models.cart.DirectDiscountDraft> builder) {
134        return discounts(builder.apply(com.commercetools.api.models.cart.DirectDiscountDraftBuilder.of()));
135    }
136
137    /**
138     *  <ul>
139     *   <li>If set, all existing Direct Discounts are replaced. The discounts apply in the order they are added to the list.</li>
140     *   <li>If empty, all existing Direct Discounts are removed and all affected prices on the Cart or Order are recalculated.</li>
141     *  </ul>
142     * @return discounts
143     */
144
145    public java.util.List<com.commercetools.api.models.cart.DirectDiscountDraft> getDiscounts() {
146        return this.discounts;
147    }
148
149    /**
150     * builds CartSetDirectDiscountsAction with checking for non-null required values
151     * @return CartSetDirectDiscountsAction
152     */
153    public CartSetDirectDiscountsAction build() {
154        Objects.requireNonNull(discounts, CartSetDirectDiscountsAction.class + ": discounts is missing");
155        return new CartSetDirectDiscountsActionImpl(discounts);
156    }
157
158    /**
159     * builds CartSetDirectDiscountsAction without checking for non-null required values
160     * @return CartSetDirectDiscountsAction
161     */
162    public CartSetDirectDiscountsAction buildUnchecked() {
163        return new CartSetDirectDiscountsActionImpl(discounts);
164    }
165
166    /**
167     * factory method for an instance of CartSetDirectDiscountsActionBuilder
168     * @return builder
169     */
170    public static CartSetDirectDiscountsActionBuilder of() {
171        return new CartSetDirectDiscountsActionBuilder();
172    }
173
174    /**
175     * create builder for CartSetDirectDiscountsAction instance
176     * @param template instance with prefilled values for the builder
177     * @return builder
178     */
179    public static CartSetDirectDiscountsActionBuilder of(final CartSetDirectDiscountsAction template) {
180        CartSetDirectDiscountsActionBuilder builder = new CartSetDirectDiscountsActionBuilder();
181        builder.discounts = template.getDiscounts();
182        return builder;
183    }
184
185}