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.Parcel;
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 Remove Parcel From Delivery 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 *     ParcelRemovedFromDeliveryMessage parcelRemovedFromDeliveryMessage = ParcelRemovedFromDeliveryMessage.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 *             .parcel(parcelBuilder -> parcelBuilder)
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 = ParcelRemovedFromDeliveryMessageImpl.class)
041public interface ParcelRemovedFromDeliveryMessage extends OrderMessage {
042
043    /**
044     * discriminator value for ParcelRemovedFromDeliveryMessage
045     */
046    String PARCEL_REMOVED_FROM_DELIVERY = "ParcelRemovedFromDelivery";
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>Parcel that was removed from the Delivery.</p>
058     * @return parcel
059     */
060    @NotNull
061    @Valid
062    @JsonProperty("parcel")
063    public Parcel getParcel();
064
065    /**
066     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multi</code> ShippingMode.</p>
067     * @return shippingKey
068     */
069
070    @JsonProperty("shippingKey")
071    public String getShippingKey();
072
073    /**
074     *  <p>Unique identifier of the Delivery.</p>
075     * @param deliveryId value to be set
076     */
077
078    public void setDeliveryId(final String deliveryId);
079
080    /**
081     *  <p>Parcel that was removed from the Delivery.</p>
082     * @param parcel value to be set
083     */
084
085    public void setParcel(final Parcel parcel);
086
087    /**
088     *  <p>User-defined unique identifier of the Shipping Method in a Cart with <code>Multi</code> ShippingMode.</p>
089     * @param shippingKey value to be set
090     */
091
092    public void setShippingKey(final String shippingKey);
093
094    /**
095     * factory method
096     * @return instance of ParcelRemovedFromDeliveryMessage
097     */
098    public static ParcelRemovedFromDeliveryMessage of() {
099        return new ParcelRemovedFromDeliveryMessageImpl();
100    }
101
102    /**
103     * factory method to create a shallow copy ParcelRemovedFromDeliveryMessage
104     * @param template instance to be copied
105     * @return copy instance
106     */
107    public static ParcelRemovedFromDeliveryMessage of(final ParcelRemovedFromDeliveryMessage template) {
108        ParcelRemovedFromDeliveryMessageImpl instance = new ParcelRemovedFromDeliveryMessageImpl();
109        instance.setId(template.getId());
110        instance.setVersion(template.getVersion());
111        instance.setCreatedAt(template.getCreatedAt());
112        instance.setLastModifiedAt(template.getLastModifiedAt());
113        instance.setLastModifiedBy(template.getLastModifiedBy());
114        instance.setCreatedBy(template.getCreatedBy());
115        instance.setSequenceNumber(template.getSequenceNumber());
116        instance.setResource(template.getResource());
117        instance.setResourceVersion(template.getResourceVersion());
118        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
119        instance.setDeliveryId(template.getDeliveryId());
120        instance.setParcel(template.getParcel());
121        instance.setShippingKey(template.getShippingKey());
122        return instance;
123    }
124
125    /**
126     * factory method to create a deep copy of ParcelRemovedFromDeliveryMessage
127     * @param template instance to be copied
128     * @return copy instance
129     */
130    @Nullable
131    public static ParcelRemovedFromDeliveryMessage deepCopy(@Nullable final ParcelRemovedFromDeliveryMessage template) {
132        if (template == null) {
133            return null;
134        }
135        ParcelRemovedFromDeliveryMessageImpl instance = new ParcelRemovedFromDeliveryMessageImpl();
136        instance.setId(template.getId());
137        instance.setVersion(template.getVersion());
138        instance.setCreatedAt(template.getCreatedAt());
139        instance.setLastModifiedAt(template.getLastModifiedAt());
140        instance.setLastModifiedBy(
141            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
142        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
143        instance.setSequenceNumber(template.getSequenceNumber());
144        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
145        instance.setResourceVersion(template.getResourceVersion());
146        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
147                .deepCopy(template.getResourceUserProvidedIdentifiers()));
148        instance.setDeliveryId(template.getDeliveryId());
149        instance.setParcel(com.commercetools.api.models.order.Parcel.deepCopy(template.getParcel()));
150        instance.setShippingKey(template.getShippingKey());
151        return instance;
152    }
153
154    /**
155     * builder factory method for ParcelRemovedFromDeliveryMessage
156     * @return builder
157     */
158    public static ParcelRemovedFromDeliveryMessageBuilder builder() {
159        return ParcelRemovedFromDeliveryMessageBuilder.of();
160    }
161
162    /**
163     * create builder for ParcelRemovedFromDeliveryMessage instance
164     * @param template instance with prefilled values for the builder
165     * @return builder
166     */
167    public static ParcelRemovedFromDeliveryMessageBuilder builder(final ParcelRemovedFromDeliveryMessage template) {
168        return ParcelRemovedFromDeliveryMessageBuilder.of(template);
169    }
170
171    /**
172     * accessor map function
173     * @param <T> mapped type
174     * @param helper function to map the object
175     * @return mapped value
176     */
177    default <T> T withParcelRemovedFromDeliveryMessage(Function<ParcelRemovedFromDeliveryMessage, T> helper) {
178        return helper.apply(this);
179    }
180
181    /**
182     * gives a TypeReference for usage with Jackson DataBind
183     * @return TypeReference
184     */
185    public static com.fasterxml.jackson.core.type.TypeReference<ParcelRemovedFromDeliveryMessage> typeReference() {
186        return new com.fasterxml.jackson.core.type.TypeReference<ParcelRemovedFromDeliveryMessage>() {
187            @Override
188            public String toString() {
189                return "TypeReference<ParcelRemovedFromDeliveryMessage>";
190            }
191        };
192    }
193}