001
002package com.commercetools.history.models.change_value;
003
004import java.util.*;
005
006import io.vrap.rmf.base.client.Builder;
007import io.vrap.rmf.base.client.utils.Generated;
008
009/**
010 * ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder
011 * <hr>
012 * Example to create an instance using the builder pattern
013 * <div class=code-example>
014 * <pre><code class='java'>
015 *     ChangeTargetMultiBuyCustomLineItemsChangeValue changeTargetMultiBuyCustomLineItemsChangeValue = ChangeTargetMultiBuyCustomLineItemsChangeValue.builder()
016 *             .predicate("{predicate}")
017 *             .triggerQuantity(1)
018 *             .discountedQuantity(1)
019 *             .maxOccurrence(1)
020 *             .selectionMode(SelectionMode.CHEAPEST)
021 *             .build()
022 * </code></pre>
023 * </div>
024 */
025@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
026public class ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder
027        implements Builder<ChangeTargetMultiBuyCustomLineItemsChangeValue> {
028
029    private String predicate;
030
031    private Integer triggerQuantity;
032
033    private Integer discountedQuantity;
034
035    private Integer maxOccurrence;
036
037    private com.commercetools.history.models.common.SelectionMode selectionMode;
038
039    /**
040     *  <p>Valid CustomLineItem target predicate.</p>
041     * @param predicate value to be set
042     * @return Builder
043     */
044
045    public ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder predicate(final String predicate) {
046        this.predicate = predicate;
047        return this;
048    }
049
050    /**
051     *  <p>Quantity of Custom Line Items that triggered the application of the discount.</p>
052     * @param triggerQuantity value to be set
053     * @return Builder
054     */
055
056    public ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder triggerQuantity(final Integer triggerQuantity) {
057        this.triggerQuantity = triggerQuantity;
058        return this;
059    }
060
061    /**
062     *  <p>Quantity of Custom Line Items discounted per application of this discount.</p>
063     * @param discountedQuantity value to be set
064     * @return Builder
065     */
066
067    public ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder discountedQuantity(final Integer discountedQuantity) {
068        this.discountedQuantity = discountedQuantity;
069        return this;
070    }
071
072    /**
073     *  <p>Maximum number of times the discount is applicable.</p>
074     * @param maxOccurrence value to be set
075     * @return Builder
076     */
077
078    public ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder maxOccurrence(final Integer maxOccurrence) {
079        this.maxOccurrence = maxOccurrence;
080        return this;
081    }
082
083    /**
084     *  <p>SelectionMode based on which particular Custom Line Items were discounted.</p>
085     * @param selectionMode value to be set
086     * @return Builder
087     */
088
089    public ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder selectionMode(
090            final com.commercetools.history.models.common.SelectionMode selectionMode) {
091        this.selectionMode = selectionMode;
092        return this;
093    }
094
095    /**
096     *  <p>Valid CustomLineItem target predicate.</p>
097     * @return predicate
098     */
099
100    public String getPredicate() {
101        return this.predicate;
102    }
103
104    /**
105     *  <p>Quantity of Custom Line Items that triggered the application of the discount.</p>
106     * @return triggerQuantity
107     */
108
109    public Integer getTriggerQuantity() {
110        return this.triggerQuantity;
111    }
112
113    /**
114     *  <p>Quantity of Custom Line Items discounted per application of this discount.</p>
115     * @return discountedQuantity
116     */
117
118    public Integer getDiscountedQuantity() {
119        return this.discountedQuantity;
120    }
121
122    /**
123     *  <p>Maximum number of times the discount is applicable.</p>
124     * @return maxOccurrence
125     */
126
127    public Integer getMaxOccurrence() {
128        return this.maxOccurrence;
129    }
130
131    /**
132     *  <p>SelectionMode based on which particular Custom Line Items were discounted.</p>
133     * @return selectionMode
134     */
135
136    public com.commercetools.history.models.common.SelectionMode getSelectionMode() {
137        return this.selectionMode;
138    }
139
140    /**
141     * builds ChangeTargetMultiBuyCustomLineItemsChangeValue with checking for non-null required values
142     * @return ChangeTargetMultiBuyCustomLineItemsChangeValue
143     */
144    public ChangeTargetMultiBuyCustomLineItemsChangeValue build() {
145        Objects.requireNonNull(predicate,
146            ChangeTargetMultiBuyCustomLineItemsChangeValue.class + ": predicate is missing");
147        Objects.requireNonNull(triggerQuantity,
148            ChangeTargetMultiBuyCustomLineItemsChangeValue.class + ": triggerQuantity is missing");
149        Objects.requireNonNull(discountedQuantity,
150            ChangeTargetMultiBuyCustomLineItemsChangeValue.class + ": discountedQuantity is missing");
151        Objects.requireNonNull(maxOccurrence,
152            ChangeTargetMultiBuyCustomLineItemsChangeValue.class + ": maxOccurrence is missing");
153        Objects.requireNonNull(selectionMode,
154            ChangeTargetMultiBuyCustomLineItemsChangeValue.class + ": selectionMode is missing");
155        return new ChangeTargetMultiBuyCustomLineItemsChangeValueImpl(predicate, triggerQuantity, discountedQuantity,
156            maxOccurrence, selectionMode);
157    }
158
159    /**
160     * builds ChangeTargetMultiBuyCustomLineItemsChangeValue without checking for non-null required values
161     * @return ChangeTargetMultiBuyCustomLineItemsChangeValue
162     */
163    public ChangeTargetMultiBuyCustomLineItemsChangeValue buildUnchecked() {
164        return new ChangeTargetMultiBuyCustomLineItemsChangeValueImpl(predicate, triggerQuantity, discountedQuantity,
165            maxOccurrence, selectionMode);
166    }
167
168    /**
169     * factory method for an instance of ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder
170     * @return builder
171     */
172    public static ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder of() {
173        return new ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder();
174    }
175
176    /**
177     * create builder for ChangeTargetMultiBuyCustomLineItemsChangeValue instance
178     * @param template instance with prefilled values for the builder
179     * @return builder
180     */
181    public static ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder of(
182            final ChangeTargetMultiBuyCustomLineItemsChangeValue template) {
183        ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder builder = new ChangeTargetMultiBuyCustomLineItemsChangeValueBuilder();
184        builder.predicate = template.getPredicate();
185        builder.triggerQuantity = template.getTriggerQuantity();
186        builder.discountedQuantity = template.getDiscountedQuantity();
187        builder.maxOccurrence = template.getMaxOccurrence();
188        builder.selectionMode = template.getSelectionMode();
189        return builder;
190    }
191
192}