001
002package com.commercetools.api.models.shipping_method;
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 * ShippingMethodRemoveShippingRateActionBuilder
012 * <hr>
013 * Example to create an instance using the builder pattern
014 * <div class=code-example>
015 * <pre><code class='java'>
016 *     ShippingMethodRemoveShippingRateAction shippingMethodRemoveShippingRateAction = ShippingMethodRemoveShippingRateAction.builder()
017 *             .zone(zoneBuilder -> zoneBuilder)
018 *             .shippingRate(shippingRateBuilder -> shippingRateBuilder)
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 ShippingMethodRemoveShippingRateActionBuilder implements Builder<ShippingMethodRemoveShippingRateAction> {
025
026    private com.commercetools.api.models.zone.ZoneResourceIdentifier zone;
027
028    private com.commercetools.api.models.shipping_method.ShippingRateDraft shippingRate;
029
030    /**
031     *  <p>Zone from which the ShippingRate should be removed.</p>
032     * @param builder function to build the zone value
033     * @return Builder
034     */
035
036    public ShippingMethodRemoveShippingRateActionBuilder zone(
037            Function<com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder, com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder> builder) {
038        this.zone = builder.apply(com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder.of()).build();
039        return this;
040    }
041
042    /**
043     *  <p>Zone from which the ShippingRate should be removed.</p>
044     * @param builder function to build the zone value
045     * @return Builder
046     */
047
048    public ShippingMethodRemoveShippingRateActionBuilder withZone(
049            Function<com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder, com.commercetools.api.models.zone.ZoneResourceIdentifier> builder) {
050        this.zone = builder.apply(com.commercetools.api.models.zone.ZoneResourceIdentifierBuilder.of());
051        return this;
052    }
053
054    /**
055     *  <p>Zone from which the ShippingRate should be removed.</p>
056     * @param zone value to be set
057     * @return Builder
058     */
059
060    public ShippingMethodRemoveShippingRateActionBuilder zone(
061            final com.commercetools.api.models.zone.ZoneResourceIdentifier zone) {
062        this.zone = zone;
063        return this;
064    }
065
066    /**
067     *  <p>Value to remove from <code>shippingRates</code>.</p>
068     * @param builder function to build the shippingRate value
069     * @return Builder
070     */
071
072    public ShippingMethodRemoveShippingRateActionBuilder shippingRate(
073            Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder> builder) {
074        this.shippingRate = builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of())
075                .build();
076        return this;
077    }
078
079    /**
080     *  <p>Value to remove from <code>shippingRates</code>.</p>
081     * @param builder function to build the shippingRate value
082     * @return Builder
083     */
084
085    public ShippingMethodRemoveShippingRateActionBuilder withShippingRate(
086            Function<com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder, com.commercetools.api.models.shipping_method.ShippingRateDraft> builder) {
087        this.shippingRate = builder.apply(com.commercetools.api.models.shipping_method.ShippingRateDraftBuilder.of());
088        return this;
089    }
090
091    /**
092     *  <p>Value to remove from <code>shippingRates</code>.</p>
093     * @param shippingRate value to be set
094     * @return Builder
095     */
096
097    public ShippingMethodRemoveShippingRateActionBuilder shippingRate(
098            final com.commercetools.api.models.shipping_method.ShippingRateDraft shippingRate) {
099        this.shippingRate = shippingRate;
100        return this;
101    }
102
103    /**
104     *  <p>Zone from which the ShippingRate should be removed.</p>
105     * @return zone
106     */
107
108    public com.commercetools.api.models.zone.ZoneResourceIdentifier getZone() {
109        return this.zone;
110    }
111
112    /**
113     *  <p>Value to remove from <code>shippingRates</code>.</p>
114     * @return shippingRate
115     */
116
117    public com.commercetools.api.models.shipping_method.ShippingRateDraft getShippingRate() {
118        return this.shippingRate;
119    }
120
121    /**
122     * builds ShippingMethodRemoveShippingRateAction with checking for non-null required values
123     * @return ShippingMethodRemoveShippingRateAction
124     */
125    public ShippingMethodRemoveShippingRateAction build() {
126        Objects.requireNonNull(zone, ShippingMethodRemoveShippingRateAction.class + ": zone is missing");
127        Objects.requireNonNull(shippingRate,
128            ShippingMethodRemoveShippingRateAction.class + ": shippingRate is missing");
129        return new ShippingMethodRemoveShippingRateActionImpl(zone, shippingRate);
130    }
131
132    /**
133     * builds ShippingMethodRemoveShippingRateAction without checking for non-null required values
134     * @return ShippingMethodRemoveShippingRateAction
135     */
136    public ShippingMethodRemoveShippingRateAction buildUnchecked() {
137        return new ShippingMethodRemoveShippingRateActionImpl(zone, shippingRate);
138    }
139
140    /**
141     * factory method for an instance of ShippingMethodRemoveShippingRateActionBuilder
142     * @return builder
143     */
144    public static ShippingMethodRemoveShippingRateActionBuilder of() {
145        return new ShippingMethodRemoveShippingRateActionBuilder();
146    }
147
148    /**
149     * create builder for ShippingMethodRemoveShippingRateAction instance
150     * @param template instance with prefilled values for the builder
151     * @return builder
152     */
153    public static ShippingMethodRemoveShippingRateActionBuilder of(
154            final ShippingMethodRemoveShippingRateAction template) {
155        ShippingMethodRemoveShippingRateActionBuilder builder = new ShippingMethodRemoveShippingRateActionBuilder();
156        builder.zone = template.getZone();
157        builder.shippingRate = template.getShippingRate();
158        return builder;
159    }
160
161}