001
002package com.commercetools.history.models.change;
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.history.models.common.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>Change triggered by the following update actions:</p>
020 *  <ul>
021 *   <li>Remove Parcel From Delivery on Orders.</li>
022 *   <li>Remove Parcel From Delivery on Staged Orders.</li>
023 *  </ul>
024 *
025 * <hr>
026 * Example to create an instance using the builder pattern
027 * <div class=code-example>
028 * <pre><code class='java'>
029 *     RemoveParcelFromDeliveryChange removeParcelFromDeliveryChange = RemoveParcelFromDeliveryChange.builder()
030 *             .change("{change}")
031 *             .previousValue(previousValueBuilder -> previousValueBuilder)
032 *             .deliveryId("{deliveryId}")
033 *             .build()
034 * </code></pre>
035 * </div>
036 */
037@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
038@JsonDeserialize(as = RemoveParcelFromDeliveryChangeImpl.class)
039public interface RemoveParcelFromDeliveryChange extends Change {
040
041    /**
042     * discriminator value for RemoveParcelFromDeliveryChange
043     */
044    String REMOVE_PARCEL_FROM_DELIVERY_CHANGE = "RemoveParcelFromDeliveryChange";
045
046    /**
047     *
048     * @return type
049     */
050    @NotNull
051    @JsonProperty("type")
052    public String getType();
053
054    /**
055     *
056     * @return change
057     */
058    @NotNull
059    @JsonProperty("change")
060    public String getChange();
061
062    /**
063     *  <p>Value before the change.</p>
064     * @return previousValue
065     */
066    @NotNull
067    @Valid
068    @JsonProperty("previousValue")
069    public Parcel getPreviousValue();
070
071    /**
072     *  <p><code>id</code> of the Delivery from which the Parcel was removed.</p>
073     * @return deliveryId
074     */
075    @NotNull
076    @JsonProperty("deliveryId")
077    public String getDeliveryId();
078
079    /**
080     * set change
081     * @param change value to be set
082     */
083
084    public void setChange(final String change);
085
086    /**
087     *  <p>Value before the change.</p>
088     * @param previousValue value to be set
089     */
090
091    public void setPreviousValue(final Parcel previousValue);
092
093    /**
094     *  <p><code>id</code> of the Delivery from which the Parcel was removed.</p>
095     * @param deliveryId value to be set
096     */
097
098    public void setDeliveryId(final String deliveryId);
099
100    /**
101     * factory method
102     * @return instance of RemoveParcelFromDeliveryChange
103     */
104    public static RemoveParcelFromDeliveryChange of() {
105        return new RemoveParcelFromDeliveryChangeImpl();
106    }
107
108    /**
109     * factory method to create a shallow copy RemoveParcelFromDeliveryChange
110     * @param template instance to be copied
111     * @return copy instance
112     */
113    public static RemoveParcelFromDeliveryChange of(final RemoveParcelFromDeliveryChange template) {
114        RemoveParcelFromDeliveryChangeImpl instance = new RemoveParcelFromDeliveryChangeImpl();
115        instance.setChange(template.getChange());
116        instance.setPreviousValue(template.getPreviousValue());
117        instance.setDeliveryId(template.getDeliveryId());
118        return instance;
119    }
120
121    /**
122     * factory method to create a deep copy of RemoveParcelFromDeliveryChange
123     * @param template instance to be copied
124     * @return copy instance
125     */
126    @Nullable
127    public static RemoveParcelFromDeliveryChange deepCopy(@Nullable final RemoveParcelFromDeliveryChange template) {
128        if (template == null) {
129            return null;
130        }
131        RemoveParcelFromDeliveryChangeImpl instance = new RemoveParcelFromDeliveryChangeImpl();
132        instance.setChange(template.getChange());
133        instance.setPreviousValue(com.commercetools.history.models.common.Parcel.deepCopy(template.getPreviousValue()));
134        instance.setDeliveryId(template.getDeliveryId());
135        return instance;
136    }
137
138    /**
139     * builder factory method for RemoveParcelFromDeliveryChange
140     * @return builder
141     */
142    public static RemoveParcelFromDeliveryChangeBuilder builder() {
143        return RemoveParcelFromDeliveryChangeBuilder.of();
144    }
145
146    /**
147     * create builder for RemoveParcelFromDeliveryChange instance
148     * @param template instance with prefilled values for the builder
149     * @return builder
150     */
151    public static RemoveParcelFromDeliveryChangeBuilder builder(final RemoveParcelFromDeliveryChange template) {
152        return RemoveParcelFromDeliveryChangeBuilder.of(template);
153    }
154
155    /**
156     * accessor map function
157     * @param <T> mapped type
158     * @param helper function to map the object
159     * @return mapped value
160     */
161    default <T> T withRemoveParcelFromDeliveryChange(Function<RemoveParcelFromDeliveryChange, T> helper) {
162        return helper.apply(this);
163    }
164
165    /**
166     * gives a TypeReference for usage with Jackson DataBind
167     * @return TypeReference
168     */
169    public static com.fasterxml.jackson.core.type.TypeReference<RemoveParcelFromDeliveryChange> typeReference() {
170        return new com.fasterxml.jackson.core.type.TypeReference<RemoveParcelFromDeliveryChange>() {
171            @Override
172            public String toString() {
173                return "TypeReference<RemoveParcelFromDeliveryChange>";
174            }
175        };
176    }
177}