001
002package com.commercetools.history.models.label;
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 * QuoteLabelBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     QuoteLabel quoteLabel = QuoteLabel.builder()
017 *             .key("{key}")
018 *             .customer(customerBuilder -> customerBuilder)
019 *             .stagedQuote(stagedQuoteBuilder -> stagedQuoteBuilder)
020 *             .quoteRequest(quoteRequestBuilder -> quoteRequestBuilder)
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 QuoteLabelBuilder implements Builder<QuoteLabel> {
027
028    private String key;
029
030    private com.commercetools.history.models.common.Reference customer;
031
032    private com.commercetools.history.models.common.Reference stagedQuote;
033
034    private com.commercetools.history.models.common.Reference quoteRequest;
035
036    /**
037     *  <p>User-defined unique identifier of the Quote.</p>
038     * @param key value to be set
039     * @return Builder
040     */
041
042    public QuoteLabelBuilder key(final String key) {
043        this.key = key;
044        return this;
045    }
046
047    /**
048     *  <p>The Buyer who requested the Quote.</p>
049     * @param builder function to build the customer value
050     * @return Builder
051     */
052
053    public QuoteLabelBuilder customer(
054            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
055        this.customer = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build();
056        return this;
057    }
058
059    /**
060     *  <p>The Buyer who requested the Quote.</p>
061     * @param builder function to build the customer value
062     * @return Builder
063     */
064
065    public QuoteLabelBuilder withCustomer(
066            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
067        this.customer = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of());
068        return this;
069    }
070
071    /**
072     *  <p>The Buyer who requested the Quote.</p>
073     * @param customer value to be set
074     * @return Builder
075     */
076
077    public QuoteLabelBuilder customer(final com.commercetools.history.models.common.Reference customer) {
078        this.customer = customer;
079        return this;
080    }
081
082    /**
083     *  <p>Staged Quote related to the Quote.</p>
084     * @param builder function to build the stagedQuote value
085     * @return Builder
086     */
087
088    public QuoteLabelBuilder stagedQuote(
089            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
090        this.stagedQuote = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build();
091        return this;
092    }
093
094    /**
095     *  <p>Staged Quote related to the Quote.</p>
096     * @param builder function to build the stagedQuote value
097     * @return Builder
098     */
099
100    public QuoteLabelBuilder withStagedQuote(
101            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
102        this.stagedQuote = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of());
103        return this;
104    }
105
106    /**
107     *  <p>Staged Quote related to the Quote.</p>
108     * @param stagedQuote value to be set
109     * @return Builder
110     */
111
112    public QuoteLabelBuilder stagedQuote(final com.commercetools.history.models.common.Reference stagedQuote) {
113        this.stagedQuote = stagedQuote;
114        return this;
115    }
116
117    /**
118     *  <p>Quote Request related to the Quote.</p>
119     * @param builder function to build the quoteRequest value
120     * @return Builder
121     */
122
123    public QuoteLabelBuilder quoteRequest(
124            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.ReferenceBuilder> builder) {
125        this.quoteRequest = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of()).build();
126        return this;
127    }
128
129    /**
130     *  <p>Quote Request related to the Quote.</p>
131     * @param builder function to build the quoteRequest value
132     * @return Builder
133     */
134
135    public QuoteLabelBuilder withQuoteRequest(
136            Function<com.commercetools.history.models.common.ReferenceBuilder, com.commercetools.history.models.common.Reference> builder) {
137        this.quoteRequest = builder.apply(com.commercetools.history.models.common.ReferenceBuilder.of());
138        return this;
139    }
140
141    /**
142     *  <p>Quote Request related to the Quote.</p>
143     * @param quoteRequest value to be set
144     * @return Builder
145     */
146
147    public QuoteLabelBuilder quoteRequest(final com.commercetools.history.models.common.Reference quoteRequest) {
148        this.quoteRequest = quoteRequest;
149        return this;
150    }
151
152    /**
153     *  <p>User-defined unique identifier of the Quote.</p>
154     * @return key
155     */
156
157    public String getKey() {
158        return this.key;
159    }
160
161    /**
162     *  <p>The Buyer who requested the Quote.</p>
163     * @return customer
164     */
165
166    public com.commercetools.history.models.common.Reference getCustomer() {
167        return this.customer;
168    }
169
170    /**
171     *  <p>Staged Quote related to the Quote.</p>
172     * @return stagedQuote
173     */
174
175    public com.commercetools.history.models.common.Reference getStagedQuote() {
176        return this.stagedQuote;
177    }
178
179    /**
180     *  <p>Quote Request related to the Quote.</p>
181     * @return quoteRequest
182     */
183
184    public com.commercetools.history.models.common.Reference getQuoteRequest() {
185        return this.quoteRequest;
186    }
187
188    /**
189     * builds QuoteLabel with checking for non-null required values
190     * @return QuoteLabel
191     */
192    public QuoteLabel build() {
193        Objects.requireNonNull(key, QuoteLabel.class + ": key is missing");
194        Objects.requireNonNull(customer, QuoteLabel.class + ": customer is missing");
195        Objects.requireNonNull(stagedQuote, QuoteLabel.class + ": stagedQuote is missing");
196        Objects.requireNonNull(quoteRequest, QuoteLabel.class + ": quoteRequest is missing");
197        return new QuoteLabelImpl(key, customer, stagedQuote, quoteRequest);
198    }
199
200    /**
201     * builds QuoteLabel without checking for non-null required values
202     * @return QuoteLabel
203     */
204    public QuoteLabel buildUnchecked() {
205        return new QuoteLabelImpl(key, customer, stagedQuote, quoteRequest);
206    }
207
208    /**
209     * factory method for an instance of QuoteLabelBuilder
210     * @return builder
211     */
212    public static QuoteLabelBuilder of() {
213        return new QuoteLabelBuilder();
214    }
215
216    /**
217     * create builder for QuoteLabel instance
218     * @param template instance with prefilled values for the builder
219     * @return builder
220     */
221    public static QuoteLabelBuilder of(final QuoteLabel template) {
222        QuoteLabelBuilder builder = new QuoteLabelBuilder();
223        builder.key = template.getKey();
224        builder.customer = template.getCustomer();
225        builder.stagedQuote = template.getStagedQuote();
226        builder.quoteRequest = template.getQuoteRequest();
227        return builder;
228    }
229
230}