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 * DiscountedLineItemPriceForQuantityBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     DiscountedLineItemPriceForQuantity discountedLineItemPriceForQuantity = DiscountedLineItemPriceForQuantity.builder()
017 *             .quantity(0.3)
018 *             .discountedPrice(discountedPriceBuilder -> discountedPriceBuilder)
019 *             .build()
020 * </code></pre>
021 * </div>
022 */
023@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
024public class DiscountedLineItemPriceForQuantityBuilder implements Builder<DiscountedLineItemPriceForQuantity> {
025
026    private Long quantity;
027
028    private com.commercetools.api.models.cart.DiscountedLineItemPrice discountedPrice;
029
030    /**
031     *  <p>Number of Line Items or Custom Line Items in the Cart.</p>
032     * @param quantity value to be set
033     * @return Builder
034     */
035
036    public DiscountedLineItemPriceForQuantityBuilder quantity(final Long quantity) {
037        this.quantity = quantity;
038        return this;
039    }
040
041    /**
042     *  <p>Discounted price of the Line Item or Custom Line Item.</p>
043     * @param builder function to build the discountedPrice value
044     * @return Builder
045     */
046
047    public DiscountedLineItemPriceForQuantityBuilder discountedPrice(
048            Function<com.commercetools.api.models.cart.DiscountedLineItemPriceBuilder, com.commercetools.api.models.cart.DiscountedLineItemPriceBuilder> builder) {
049        this.discountedPrice = builder.apply(com.commercetools.api.models.cart.DiscountedLineItemPriceBuilder.of())
050                .build();
051        return this;
052    }
053
054    /**
055     *  <p>Discounted price of the Line Item or Custom Line Item.</p>
056     * @param builder function to build the discountedPrice value
057     * @return Builder
058     */
059
060    public DiscountedLineItemPriceForQuantityBuilder withDiscountedPrice(
061            Function<com.commercetools.api.models.cart.DiscountedLineItemPriceBuilder, com.commercetools.api.models.cart.DiscountedLineItemPrice> builder) {
062        this.discountedPrice = builder.apply(com.commercetools.api.models.cart.DiscountedLineItemPriceBuilder.of());
063        return this;
064    }
065
066    /**
067     *  <p>Discounted price of the Line Item or Custom Line Item.</p>
068     * @param discountedPrice value to be set
069     * @return Builder
070     */
071
072    public DiscountedLineItemPriceForQuantityBuilder discountedPrice(
073            final com.commercetools.api.models.cart.DiscountedLineItemPrice discountedPrice) {
074        this.discountedPrice = discountedPrice;
075        return this;
076    }
077
078    /**
079     *  <p>Number of Line Items or Custom Line Items in the Cart.</p>
080     * @return quantity
081     */
082
083    public Long getQuantity() {
084        return this.quantity;
085    }
086
087    /**
088     *  <p>Discounted price of the Line Item or Custom Line Item.</p>
089     * @return discountedPrice
090     */
091
092    public com.commercetools.api.models.cart.DiscountedLineItemPrice getDiscountedPrice() {
093        return this.discountedPrice;
094    }
095
096    /**
097     * builds DiscountedLineItemPriceForQuantity with checking for non-null required values
098     * @return DiscountedLineItemPriceForQuantity
099     */
100    public DiscountedLineItemPriceForQuantity build() {
101        Objects.requireNonNull(quantity, DiscountedLineItemPriceForQuantity.class + ": quantity is missing");
102        Objects.requireNonNull(discountedPrice,
103            DiscountedLineItemPriceForQuantity.class + ": discountedPrice is missing");
104        return new DiscountedLineItemPriceForQuantityImpl(quantity, discountedPrice);
105    }
106
107    /**
108     * builds DiscountedLineItemPriceForQuantity without checking for non-null required values
109     * @return DiscountedLineItemPriceForQuantity
110     */
111    public DiscountedLineItemPriceForQuantity buildUnchecked() {
112        return new DiscountedLineItemPriceForQuantityImpl(quantity, discountedPrice);
113    }
114
115    /**
116     * factory method for an instance of DiscountedLineItemPriceForQuantityBuilder
117     * @return builder
118     */
119    public static DiscountedLineItemPriceForQuantityBuilder of() {
120        return new DiscountedLineItemPriceForQuantityBuilder();
121    }
122
123    /**
124     * create builder for DiscountedLineItemPriceForQuantity instance
125     * @param template instance with prefilled values for the builder
126     * @return builder
127     */
128    public static DiscountedLineItemPriceForQuantityBuilder of(final DiscountedLineItemPriceForQuantity template) {
129        DiscountedLineItemPriceForQuantityBuilder builder = new DiscountedLineItemPriceForQuantityBuilder();
130        builder.quantity = template.getQuantity();
131        builder.discountedPrice = template.getDiscountedPrice();
132        return builder;
133    }
134
135}