001
002package com.commercetools.history.models.common;
003
004import java.util.*;
005
006import io.vrap.rmf.base.client.Builder;
007import io.vrap.rmf.base.client.utils.Generated;
008
009/**
010 * ProductVariantChannelAvailabilityBuilder
011 * <hr>
012 * Example to create an instance using the builder pattern
013 * <div class=code-example>
014 * <pre><code class='java'>
015 *     ProductVariantChannelAvailability productVariantChannelAvailability = ProductVariantChannelAvailability.builder()
016 *             .isOnStock(true)
017 *             .restockableInDays(1)
018 *             .availableQuantity(1)
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 ProductVariantChannelAvailabilityBuilder implements Builder<ProductVariantChannelAvailability> {
025
026    private Boolean isOnStock;
027
028    private Integer restockableInDays;
029
030    private Integer availableQuantity;
031
032    /**
033     * set the value to the isOnStock
034     * @param isOnStock value to be set
035     * @return Builder
036     */
037
038    public ProductVariantChannelAvailabilityBuilder isOnStock(final Boolean isOnStock) {
039        this.isOnStock = isOnStock;
040        return this;
041    }
042
043    /**
044     * set the value to the restockableInDays
045     * @param restockableInDays value to be set
046     * @return Builder
047     */
048
049    public ProductVariantChannelAvailabilityBuilder restockableInDays(final Integer restockableInDays) {
050        this.restockableInDays = restockableInDays;
051        return this;
052    }
053
054    /**
055     * set the value to the availableQuantity
056     * @param availableQuantity value to be set
057     * @return Builder
058     */
059
060    public ProductVariantChannelAvailabilityBuilder availableQuantity(final Integer availableQuantity) {
061        this.availableQuantity = availableQuantity;
062        return this;
063    }
064
065    /**
066     * value of isOnStock}
067     * @return isOnStock
068     */
069
070    public Boolean getIsOnStock() {
071        return this.isOnStock;
072    }
073
074    /**
075     * value of restockableInDays}
076     * @return restockableInDays
077     */
078
079    public Integer getRestockableInDays() {
080        return this.restockableInDays;
081    }
082
083    /**
084     * value of availableQuantity}
085     * @return availableQuantity
086     */
087
088    public Integer getAvailableQuantity() {
089        return this.availableQuantity;
090    }
091
092    /**
093     * builds ProductVariantChannelAvailability with checking for non-null required values
094     * @return ProductVariantChannelAvailability
095     */
096    public ProductVariantChannelAvailability build() {
097        Objects.requireNonNull(isOnStock, ProductVariantChannelAvailability.class + ": isOnStock is missing");
098        Objects.requireNonNull(restockableInDays,
099            ProductVariantChannelAvailability.class + ": restockableInDays is missing");
100        Objects.requireNonNull(availableQuantity,
101            ProductVariantChannelAvailability.class + ": availableQuantity is missing");
102        return new ProductVariantChannelAvailabilityImpl(isOnStock, restockableInDays, availableQuantity);
103    }
104
105    /**
106     * builds ProductVariantChannelAvailability without checking for non-null required values
107     * @return ProductVariantChannelAvailability
108     */
109    public ProductVariantChannelAvailability buildUnchecked() {
110        return new ProductVariantChannelAvailabilityImpl(isOnStock, restockableInDays, availableQuantity);
111    }
112
113    /**
114     * factory method for an instance of ProductVariantChannelAvailabilityBuilder
115     * @return builder
116     */
117    public static ProductVariantChannelAvailabilityBuilder of() {
118        return new ProductVariantChannelAvailabilityBuilder();
119    }
120
121    /**
122     * create builder for ProductVariantChannelAvailability instance
123     * @param template instance with prefilled values for the builder
124     * @return builder
125     */
126    public static ProductVariantChannelAvailabilityBuilder of(final ProductVariantChannelAvailability template) {
127        ProductVariantChannelAvailabilityBuilder builder = new ProductVariantChannelAvailabilityBuilder();
128        builder.isOnStock = template.getIsOnStock();
129        builder.restockableInDays = template.getRestockableInDays();
130        builder.availableQuantity = template.getAvailableQuantity();
131        return builder;
132    }
133
134}