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 * ChangeTargetMultiBuyLineItemsChangeValueBuilder
011 * <hr>
012 * Example to create an instance using the builder pattern
013 * <div class=code-example>
014 * <pre><code class='java'>
015 *     ChangeTargetMultiBuyLineItemsChangeValue changeTargetMultiBuyLineItemsChangeValue = ChangeTargetMultiBuyLineItemsChangeValue.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 ChangeTargetMultiBuyLineItemsChangeValueBuilder
027        implements Builder<ChangeTargetMultiBuyLineItemsChangeValue> {
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 LineItem target predicate.</p>
041     * @param predicate value to be set
042     * @return Builder
043     */
044
045    public ChangeTargetMultiBuyLineItemsChangeValueBuilder predicate(final String predicate) {
046        this.predicate = predicate;
047        return this;
048    }
049
050    /**
051     *  <p>Quantity of Line Items that triggered the application of the discount.</p>
052     * @param triggerQuantity value to be set
053     * @return Builder
054     */
055
056    public ChangeTargetMultiBuyLineItemsChangeValueBuilder triggerQuantity(final Integer triggerQuantity) {
057        this.triggerQuantity = triggerQuantity;
058        return this;
059    }
060
061    /**
062     *  <p>Quantity of Line Items discounted per application of this discount.</p>
063     * @param discountedQuantity value to be set
064     * @return Builder
065     */
066
067    public ChangeTargetMultiBuyLineItemsChangeValueBuilder 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 ChangeTargetMultiBuyLineItemsChangeValueBuilder maxOccurrence(final Integer maxOccurrence) {
079        this.maxOccurrence = maxOccurrence;
080        return this;
081    }
082
083    /**
084     *  <p>SelectionMode based on which particular Line Items were discounted.</p>
085     * @param selectionMode value to be set
086     * @return Builder
087     */
088
089    public ChangeTargetMultiBuyLineItemsChangeValueBuilder selectionMode(
090            final com.commercetools.history.models.common.SelectionMode selectionMode) {
091        this.selectionMode = selectionMode;
092        return this;
093    }
094
095    /**
096     *  <p>Valid LineItem target predicate.</p>
097     * @return predicate
098     */
099
100    public String getPredicate() {
101        return this.predicate;
102    }
103
104    /**
105     *  <p>Quantity of 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 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 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 ChangeTargetMultiBuyLineItemsChangeValue with checking for non-null required values
142     * @return ChangeTargetMultiBuyLineItemsChangeValue
143     */
144    public ChangeTargetMultiBuyLineItemsChangeValue build() {
145        Objects.requireNonNull(predicate, ChangeTargetMultiBuyLineItemsChangeValue.class + ": predicate is missing");
146        Objects.requireNonNull(triggerQuantity,
147            ChangeTargetMultiBuyLineItemsChangeValue.class + ": triggerQuantity is missing");
148        Objects.requireNonNull(discountedQuantity,
149            ChangeTargetMultiBuyLineItemsChangeValue.class + ": discountedQuantity is missing");
150        Objects.requireNonNull(maxOccurrence,
151            ChangeTargetMultiBuyLineItemsChangeValue.class + ": maxOccurrence is missing");
152        Objects.requireNonNull(selectionMode,
153            ChangeTargetMultiBuyLineItemsChangeValue.class + ": selectionMode is missing");
154        return new ChangeTargetMultiBuyLineItemsChangeValueImpl(predicate, triggerQuantity, discountedQuantity,
155            maxOccurrence, selectionMode);
156    }
157
158    /**
159     * builds ChangeTargetMultiBuyLineItemsChangeValue without checking for non-null required values
160     * @return ChangeTargetMultiBuyLineItemsChangeValue
161     */
162    public ChangeTargetMultiBuyLineItemsChangeValue buildUnchecked() {
163        return new ChangeTargetMultiBuyLineItemsChangeValueImpl(predicate, triggerQuantity, discountedQuantity,
164            maxOccurrence, selectionMode);
165    }
166
167    /**
168     * factory method for an instance of ChangeTargetMultiBuyLineItemsChangeValueBuilder
169     * @return builder
170     */
171    public static ChangeTargetMultiBuyLineItemsChangeValueBuilder of() {
172        return new ChangeTargetMultiBuyLineItemsChangeValueBuilder();
173    }
174
175    /**
176     * create builder for ChangeTargetMultiBuyLineItemsChangeValue instance
177     * @param template instance with prefilled values for the builder
178     * @return builder
179     */
180    public static ChangeTargetMultiBuyLineItemsChangeValueBuilder of(
181            final ChangeTargetMultiBuyLineItemsChangeValue template) {
182        ChangeTargetMultiBuyLineItemsChangeValueBuilder builder = new ChangeTargetMultiBuyLineItemsChangeValueBuilder();
183        builder.predicate = template.getPredicate();
184        builder.triggerQuantity = template.getTriggerQuantity();
185        builder.discountedQuantity = template.getDiscountedQuantity();
186        builder.maxOccurrence = template.getMaxOccurrence();
187        builder.selectionMode = template.getSelectionMode();
188        return builder;
189    }
190
191}