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