001
002package com.commercetools.api.models.message;
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 * OrderLineItemAddedMessagePayloadBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     OrderLineItemAddedMessagePayload orderLineItemAddedMessagePayload = OrderLineItemAddedMessagePayload.builder()
017 *             .lineItem(lineItemBuilder -> lineItemBuilder)
018 *             .addedQuantity(0.3)
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 OrderLineItemAddedMessagePayloadBuilder implements Builder<OrderLineItemAddedMessagePayload> {
025
026    private com.commercetools.api.models.cart.LineItem lineItem;
027
028    private Long addedQuantity;
029
030    /**
031     *  <p>Line Item that was added to the Order.</p>
032     * @param builder function to build the lineItem value
033     * @return Builder
034     */
035
036    public OrderLineItemAddedMessagePayloadBuilder lineItem(
037            Function<com.commercetools.api.models.cart.LineItemBuilder, com.commercetools.api.models.cart.LineItemBuilder> builder) {
038        this.lineItem = builder.apply(com.commercetools.api.models.cart.LineItemBuilder.of()).build();
039        return this;
040    }
041
042    /**
043     *  <p>Line Item that was added to the Order.</p>
044     * @param builder function to build the lineItem value
045     * @return Builder
046     */
047
048    public OrderLineItemAddedMessagePayloadBuilder withLineItem(
049            Function<com.commercetools.api.models.cart.LineItemBuilder, com.commercetools.api.models.cart.LineItem> builder) {
050        this.lineItem = builder.apply(com.commercetools.api.models.cart.LineItemBuilder.of());
051        return this;
052    }
053
054    /**
055     *  <p>Line Item that was added to the Order.</p>
056     * @param lineItem value to be set
057     * @return Builder
058     */
059
060    public OrderLineItemAddedMessagePayloadBuilder lineItem(final com.commercetools.api.models.cart.LineItem lineItem) {
061        this.lineItem = lineItem;
062        return this;
063    }
064
065    /**
066     *  <p>Quantity of Line Items that were added to the Order.</p>
067     * @param addedQuantity value to be set
068     * @return Builder
069     */
070
071    public OrderLineItemAddedMessagePayloadBuilder addedQuantity(final Long addedQuantity) {
072        this.addedQuantity = addedQuantity;
073        return this;
074    }
075
076    /**
077     *  <p>Line Item that was added to the Order.</p>
078     * @return lineItem
079     */
080
081    public com.commercetools.api.models.cart.LineItem getLineItem() {
082        return this.lineItem;
083    }
084
085    /**
086     *  <p>Quantity of Line Items that were added to the Order.</p>
087     * @return addedQuantity
088     */
089
090    public Long getAddedQuantity() {
091        return this.addedQuantity;
092    }
093
094    /**
095     * builds OrderLineItemAddedMessagePayload with checking for non-null required values
096     * @return OrderLineItemAddedMessagePayload
097     */
098    public OrderLineItemAddedMessagePayload build() {
099        Objects.requireNonNull(lineItem, OrderLineItemAddedMessagePayload.class + ": lineItem is missing");
100        Objects.requireNonNull(addedQuantity, OrderLineItemAddedMessagePayload.class + ": addedQuantity is missing");
101        return new OrderLineItemAddedMessagePayloadImpl(lineItem, addedQuantity);
102    }
103
104    /**
105     * builds OrderLineItemAddedMessagePayload without checking for non-null required values
106     * @return OrderLineItemAddedMessagePayload
107     */
108    public OrderLineItemAddedMessagePayload buildUnchecked() {
109        return new OrderLineItemAddedMessagePayloadImpl(lineItem, addedQuantity);
110    }
111
112    /**
113     * factory method for an instance of OrderLineItemAddedMessagePayloadBuilder
114     * @return builder
115     */
116    public static OrderLineItemAddedMessagePayloadBuilder of() {
117        return new OrderLineItemAddedMessagePayloadBuilder();
118    }
119
120    /**
121     * create builder for OrderLineItemAddedMessagePayload instance
122     * @param template instance with prefilled values for the builder
123     * @return builder
124     */
125    public static OrderLineItemAddedMessagePayloadBuilder of(final OrderLineItemAddedMessagePayload template) {
126        OrderLineItemAddedMessagePayloadBuilder builder = new OrderLineItemAddedMessagePayloadBuilder();
127        builder.lineItem = template.getLineItem();
128        builder.addedQuantity = template.getAddedQuantity();
129        return builder;
130    }
131
132}