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>Add Parcel on Orders.</li>
022 *   <li>Add Parcel 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 *     AddParcelToDeliveryChange addParcelToDeliveryChange = AddParcelToDeliveryChange.builder()
030 *             .change("{change}")
031 *             .nextValue(nextValueBuilder -> nextValueBuilder)
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 = AddParcelToDeliveryChangeImpl.class)
039public interface AddParcelToDeliveryChange extends Change {
040
041    /**
042     * discriminator value for AddParcelToDeliveryChange
043     */
044    String ADD_PARCEL_TO_DELIVERY_CHANGE = "AddParcelToDeliveryChange";
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 after the change.</p>
064     * @return nextValue
065     */
066    @NotNull
067    @Valid
068    @JsonProperty("nextValue")
069    public Parcel getNextValue();
070
071    /**
072     *  <p><code>id</code> of the Delivery to which the Parcel was added.</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 after the change.</p>
088     * @param nextValue value to be set
089     */
090
091    public void setNextValue(final Parcel nextValue);
092
093    /**
094     *  <p><code>id</code> of the Delivery to which the Parcel was added.</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 AddParcelToDeliveryChange
103     */
104    public static AddParcelToDeliveryChange of() {
105        return new AddParcelToDeliveryChangeImpl();
106    }
107
108    /**
109     * factory method to create a shallow copy AddParcelToDeliveryChange
110     * @param template instance to be copied
111     * @return copy instance
112     */
113    public static AddParcelToDeliveryChange of(final AddParcelToDeliveryChange template) {
114        AddParcelToDeliveryChangeImpl instance = new AddParcelToDeliveryChangeImpl();
115        instance.setChange(template.getChange());
116        instance.setNextValue(template.getNextValue());
117        instance.setDeliveryId(template.getDeliveryId());
118        return instance;
119    }
120
121    /**
122     * factory method to create a deep copy of AddParcelToDeliveryChange
123     * @param template instance to be copied
124     * @return copy instance
125     */
126    @Nullable
127    public static AddParcelToDeliveryChange deepCopy(@Nullable final AddParcelToDeliveryChange template) {
128        if (template == null) {
129            return null;
130        }
131        AddParcelToDeliveryChangeImpl instance = new AddParcelToDeliveryChangeImpl();
132        instance.setChange(template.getChange());
133        instance.setNextValue(com.commercetools.history.models.common.Parcel.deepCopy(template.getNextValue()));
134        instance.setDeliveryId(template.getDeliveryId());
135        return instance;
136    }
137
138    /**
139     * builder factory method for AddParcelToDeliveryChange
140     * @return builder
141     */
142    public static AddParcelToDeliveryChangeBuilder builder() {
143        return AddParcelToDeliveryChangeBuilder.of();
144    }
145
146    /**
147     * create builder for AddParcelToDeliveryChange instance
148     * @param template instance with prefilled values for the builder
149     * @return builder
150     */
151    public static AddParcelToDeliveryChangeBuilder builder(final AddParcelToDeliveryChange template) {
152        return AddParcelToDeliveryChangeBuilder.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 withAddParcelToDeliveryChange(Function<AddParcelToDeliveryChange, 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<AddParcelToDeliveryChange> typeReference() {
170        return new com.fasterxml.jackson.core.type.TypeReference<AddParcelToDeliveryChange>() {
171            @Override
172            public String toString() {
173                return "TypeReference<AddParcelToDeliveryChange>";
174            }
175        };
176    }
177}