001
002package com.commercetools.api.models.message;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.commercetools.api.models.order.TrackingData;
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 *  <p>Generated after a successful Set Parcel Tracking Data update action.</p>
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     ParcelTrackingDataUpdatedMessage parcelTrackingDataUpdatedMessage = ParcelTrackingDataUpdatedMessage.builder()
026 *             .id("{id}")
027 *             .version(0.3)
028 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
029 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
030 *             .sequenceNumber(0.3)
031 *             .resource(resourceBuilder -> resourceBuilder)
032 *             .resourceVersion(0.3)
033 *             .deliveryId("{deliveryId}")
034 *             .parcelId("{parcelId}")
035 *             .build()
036 * </code></pre>
037 * </div>
038 */
039@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
040@JsonDeserialize(as = ParcelTrackingDataUpdatedMessageImpl.class)
041public interface ParcelTrackingDataUpdatedMessage extends OrderMessage {
042
043    /**
044     * discriminator value for ParcelTrackingDataUpdatedMessage
045     */
046    String PARCEL_TRACKING_DATA_UPDATED = "ParcelTrackingDataUpdated";
047
048    /**
049     *  <p>Unique identifier of the Delivery.</p>
050     * @return deliveryId
051     */
052    @NotNull
053    @JsonProperty("deliveryId")
054    public String getDeliveryId();
055
056    /**
057     *  <p>Unique identifier of the Parcel.</p>
058     * @return parcelId
059     */
060    @NotNull
061    @JsonProperty("parcelId")
062    public String getParcelId();
063
064    /**
065     *  <p>The Tracking Data that was added to the Parcel.</p>
066     * @return trackingData
067     */
068    @Valid
069    @JsonProperty("trackingData")
070    public TrackingData getTrackingData();
071
072    /**
073     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
074     * @return shippingKey
075     */
076
077    @JsonProperty("shippingKey")
078    public String getShippingKey();
079
080    /**
081     *  <p>Unique identifier of the Delivery.</p>
082     * @param deliveryId value to be set
083     */
084
085    public void setDeliveryId(final String deliveryId);
086
087    /**
088     *  <p>Unique identifier of the Parcel.</p>
089     * @param parcelId value to be set
090     */
091
092    public void setParcelId(final String parcelId);
093
094    /**
095     *  <p>The Tracking Data that was added to the Parcel.</p>
096     * @param trackingData value to be set
097     */
098
099    public void setTrackingData(final TrackingData trackingData);
100
101    /**
102     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multiple</code> ShippingMode.</p>
103     * @param shippingKey value to be set
104     */
105
106    public void setShippingKey(final String shippingKey);
107
108    /**
109     * factory method
110     * @return instance of ParcelTrackingDataUpdatedMessage
111     */
112    public static ParcelTrackingDataUpdatedMessage of() {
113        return new ParcelTrackingDataUpdatedMessageImpl();
114    }
115
116    /**
117     * factory method to create a shallow copy ParcelTrackingDataUpdatedMessage
118     * @param template instance to be copied
119     * @return copy instance
120     */
121    public static ParcelTrackingDataUpdatedMessage of(final ParcelTrackingDataUpdatedMessage template) {
122        ParcelTrackingDataUpdatedMessageImpl instance = new ParcelTrackingDataUpdatedMessageImpl();
123        instance.setId(template.getId());
124        instance.setVersion(template.getVersion());
125        instance.setCreatedAt(template.getCreatedAt());
126        instance.setLastModifiedAt(template.getLastModifiedAt());
127        instance.setLastModifiedBy(template.getLastModifiedBy());
128        instance.setCreatedBy(template.getCreatedBy());
129        instance.setSequenceNumber(template.getSequenceNumber());
130        instance.setResource(template.getResource());
131        instance.setResourceVersion(template.getResourceVersion());
132        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
133        instance.setDeliveryId(template.getDeliveryId());
134        instance.setParcelId(template.getParcelId());
135        instance.setTrackingData(template.getTrackingData());
136        instance.setShippingKey(template.getShippingKey());
137        return instance;
138    }
139
140    /**
141     * factory method to create a deep copy of ParcelTrackingDataUpdatedMessage
142     * @param template instance to be copied
143     * @return copy instance
144     */
145    @Nullable
146    public static ParcelTrackingDataUpdatedMessage deepCopy(@Nullable final ParcelTrackingDataUpdatedMessage template) {
147        if (template == null) {
148            return null;
149        }
150        ParcelTrackingDataUpdatedMessageImpl instance = new ParcelTrackingDataUpdatedMessageImpl();
151        instance.setId(template.getId());
152        instance.setVersion(template.getVersion());
153        instance.setCreatedAt(template.getCreatedAt());
154        instance.setLastModifiedAt(template.getLastModifiedAt());
155        instance.setLastModifiedBy(
156            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
157        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
158        instance.setSequenceNumber(template.getSequenceNumber());
159        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
160        instance.setResourceVersion(template.getResourceVersion());
161        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
162                .deepCopy(template.getResourceUserProvidedIdentifiers()));
163        instance.setDeliveryId(template.getDeliveryId());
164        instance.setParcelId(template.getParcelId());
165        instance.setTrackingData(com.commercetools.api.models.order.TrackingData.deepCopy(template.getTrackingData()));
166        instance.setShippingKey(template.getShippingKey());
167        return instance;
168    }
169
170    /**
171     * builder factory method for ParcelTrackingDataUpdatedMessage
172     * @return builder
173     */
174    public static ParcelTrackingDataUpdatedMessageBuilder builder() {
175        return ParcelTrackingDataUpdatedMessageBuilder.of();
176    }
177
178    /**
179     * create builder for ParcelTrackingDataUpdatedMessage instance
180     * @param template instance with prefilled values for the builder
181     * @return builder
182     */
183    public static ParcelTrackingDataUpdatedMessageBuilder builder(final ParcelTrackingDataUpdatedMessage template) {
184        return ParcelTrackingDataUpdatedMessageBuilder.of(template);
185    }
186
187    /**
188     * accessor map function
189     * @param <T> mapped type
190     * @param helper function to map the object
191     * @return mapped value
192     */
193    default <T> T withParcelTrackingDataUpdatedMessage(Function<ParcelTrackingDataUpdatedMessage, T> helper) {
194        return helper.apply(this);
195    }
196
197    /**
198     * gives a TypeReference for usage with Jackson DataBind
199     * @return TypeReference
200     */
201    public static com.fasterxml.jackson.core.type.TypeReference<ParcelTrackingDataUpdatedMessage> typeReference() {
202        return new com.fasterxml.jackson.core.type.TypeReference<ParcelTrackingDataUpdatedMessage>() {
203            @Override
204            public String toString() {
205                return "TypeReference<ParcelTrackingDataUpdatedMessage>";
206            }
207        };
208    }
209}