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