001
002package com.commercetools.api.models.order_edit;
003
004import java.util.*;
005import java.util.function.Function;
006
007import javax.annotation.Nullable;
008
009import io.vrap.rmf.base.client.Builder;
010import io.vrap.rmf.base.client.utils.Generated;
011
012/**
013 * StagedOrderSetParcelTrackingDataActionBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     StagedOrderSetParcelTrackingDataAction stagedOrderSetParcelTrackingDataAction = StagedOrderSetParcelTrackingDataAction.builder()
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 StagedOrderSetParcelTrackingDataActionBuilder implements Builder<StagedOrderSetParcelTrackingDataAction> {
025
026    @Nullable
027    private String parcelId;
028
029    @Nullable
030    private String parcelKey;
031
032    @Nullable
033    private com.commercetools.api.models.order.TrackingData trackingData;
034
035    /**
036     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
037     * @param parcelId value to be set
038     * @return Builder
039     */
040
041    public StagedOrderSetParcelTrackingDataActionBuilder parcelId(@Nullable final String parcelId) {
042        this.parcelId = parcelId;
043        return this;
044    }
045
046    /**
047     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
048     * @param parcelKey value to be set
049     * @return Builder
050     */
051
052    public StagedOrderSetParcelTrackingDataActionBuilder parcelKey(@Nullable final String parcelKey) {
053        this.parcelKey = parcelKey;
054        return this;
055    }
056
057    /**
058     * set the value to the trackingData using the builder function
059     * @param builder function to build the trackingData value
060     * @return Builder
061     */
062
063    public StagedOrderSetParcelTrackingDataActionBuilder trackingData(
064            Function<com.commercetools.api.models.order.TrackingDataBuilder, com.commercetools.api.models.order.TrackingDataBuilder> builder) {
065        this.trackingData = builder.apply(com.commercetools.api.models.order.TrackingDataBuilder.of()).build();
066        return this;
067    }
068
069    /**
070     * set the value to the trackingData using the builder function
071     * @param builder function to build the trackingData value
072     * @return Builder
073     */
074
075    public StagedOrderSetParcelTrackingDataActionBuilder withTrackingData(
076            Function<com.commercetools.api.models.order.TrackingDataBuilder, com.commercetools.api.models.order.TrackingData> builder) {
077        this.trackingData = builder.apply(com.commercetools.api.models.order.TrackingDataBuilder.of());
078        return this;
079    }
080
081    /**
082     * set the value to the trackingData
083     * @param trackingData value to be set
084     * @return Builder
085     */
086
087    public StagedOrderSetParcelTrackingDataActionBuilder trackingData(
088            @Nullable final com.commercetools.api.models.order.TrackingData trackingData) {
089        this.trackingData = trackingData;
090        return this;
091    }
092
093    /**
094     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
095     * @return parcelId
096     */
097
098    @Nullable
099    public String getParcelId() {
100        return this.parcelId;
101    }
102
103    /**
104     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
105     * @return parcelKey
106     */
107
108    @Nullable
109    public String getParcelKey() {
110        return this.parcelKey;
111    }
112
113    /**
114     * value of trackingData}
115     * @return trackingData
116     */
117
118    @Nullable
119    public com.commercetools.api.models.order.TrackingData getTrackingData() {
120        return this.trackingData;
121    }
122
123    /**
124     * builds StagedOrderSetParcelTrackingDataAction with checking for non-null required values
125     * @return StagedOrderSetParcelTrackingDataAction
126     */
127    public StagedOrderSetParcelTrackingDataAction build() {
128        return new StagedOrderSetParcelTrackingDataActionImpl(parcelId, parcelKey, trackingData);
129    }
130
131    /**
132     * builds StagedOrderSetParcelTrackingDataAction without checking for non-null required values
133     * @return StagedOrderSetParcelTrackingDataAction
134     */
135    public StagedOrderSetParcelTrackingDataAction buildUnchecked() {
136        return new StagedOrderSetParcelTrackingDataActionImpl(parcelId, parcelKey, trackingData);
137    }
138
139    /**
140     * factory method for an instance of StagedOrderSetParcelTrackingDataActionBuilder
141     * @return builder
142     */
143    public static StagedOrderSetParcelTrackingDataActionBuilder of() {
144        return new StagedOrderSetParcelTrackingDataActionBuilder();
145    }
146
147    /**
148     * create builder for StagedOrderSetParcelTrackingDataAction instance
149     * @param template instance with prefilled values for the builder
150     * @return builder
151     */
152    public static StagedOrderSetParcelTrackingDataActionBuilder of(
153            final StagedOrderSetParcelTrackingDataAction template) {
154        StagedOrderSetParcelTrackingDataActionBuilder builder = new StagedOrderSetParcelTrackingDataActionBuilder();
155        builder.parcelId = template.getParcelId();
156        builder.parcelKey = template.getParcelKey();
157        builder.trackingData = template.getTrackingData();
158        return builder;
159    }
160
161}