001
002package com.commercetools.api.models.order;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007import java.util.stream.Collectors;
008
009import javax.annotation.Nullable;
010import javax.validation.Valid;
011import javax.validation.constraints.NotNull;
012
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 * OrderSetParcelItemsAction
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     OrderSetParcelItemsAction orderSetParcelItemsAction = OrderSetParcelItemsAction.builder()
026 *             .plusItems(itemsBuilder -> itemsBuilder)
027 *             .build()
028 * </code></pre>
029 * </div>
030 */
031@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
032@JsonDeserialize(as = OrderSetParcelItemsActionImpl.class)
033public interface OrderSetParcelItemsAction extends OrderUpdateAction {
034
035    /**
036     * discriminator value for OrderSetParcelItemsAction
037     */
038    String SET_PARCEL_ITEMS = "setParcelItems";
039
040    /**
041     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
042     * @return parcelId
043     */
044
045    @JsonProperty("parcelId")
046    public String getParcelId();
047
048    /**
049     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
050     * @return parcelKey
051     */
052
053    @JsonProperty("parcelKey")
054    public String getParcelKey();
055
056    /**
057     *
058     * @return items
059     */
060    @NotNull
061    @Valid
062    @JsonProperty("items")
063    public List<DeliveryItem> getItems();
064
065    /**
066     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
067     * @param parcelId value to be set
068     */
069
070    public void setParcelId(final String parcelId);
071
072    /**
073     *  <p>Either <code>parcelId</code> or <code>parcelKey</code> is required for this update action.</p>
074     * @param parcelKey value to be set
075     */
076
077    public void setParcelKey(final String parcelKey);
078
079    /**
080     * set items
081     * @param items values to be set
082     */
083
084    @JsonIgnore
085    public void setItems(final DeliveryItem... items);
086
087    /**
088     * set items
089     * @param items values to be set
090     */
091
092    public void setItems(final List<DeliveryItem> items);
093
094    /**
095     * factory method
096     * @return instance of OrderSetParcelItemsAction
097     */
098    public static OrderSetParcelItemsAction of() {
099        return new OrderSetParcelItemsActionImpl();
100    }
101
102    /**
103     * factory method to create a shallow copy OrderSetParcelItemsAction
104     * @param template instance to be copied
105     * @return copy instance
106     */
107    public static OrderSetParcelItemsAction of(final OrderSetParcelItemsAction template) {
108        OrderSetParcelItemsActionImpl instance = new OrderSetParcelItemsActionImpl();
109        instance.setParcelId(template.getParcelId());
110        instance.setParcelKey(template.getParcelKey());
111        instance.setItems(template.getItems());
112        return instance;
113    }
114
115    /**
116     * factory method to create a deep copy of OrderSetParcelItemsAction
117     * @param template instance to be copied
118     * @return copy instance
119     */
120    @Nullable
121    public static OrderSetParcelItemsAction deepCopy(@Nullable final OrderSetParcelItemsAction template) {
122        if (template == null) {
123            return null;
124        }
125        OrderSetParcelItemsActionImpl instance = new OrderSetParcelItemsActionImpl();
126        instance.setParcelId(template.getParcelId());
127        instance.setParcelKey(template.getParcelKey());
128        instance.setItems(Optional.ofNullable(template.getItems())
129                .map(t -> t.stream()
130                        .map(com.commercetools.api.models.order.DeliveryItem::deepCopy)
131                        .collect(Collectors.toList()))
132                .orElse(null));
133        return instance;
134    }
135
136    /**
137     * builder factory method for OrderSetParcelItemsAction
138     * @return builder
139     */
140    public static OrderSetParcelItemsActionBuilder builder() {
141        return OrderSetParcelItemsActionBuilder.of();
142    }
143
144    /**
145     * create builder for OrderSetParcelItemsAction instance
146     * @param template instance with prefilled values for the builder
147     * @return builder
148     */
149    public static OrderSetParcelItemsActionBuilder builder(final OrderSetParcelItemsAction template) {
150        return OrderSetParcelItemsActionBuilder.of(template);
151    }
152
153    /**
154     * accessor map function
155     * @param <T> mapped type
156     * @param helper function to map the object
157     * @return mapped value
158     */
159    default <T> T withOrderSetParcelItemsAction(Function<OrderSetParcelItemsAction, T> helper) {
160        return helper.apply(this);
161    }
162
163    /**
164     * gives a TypeReference for usage with Jackson DataBind
165     * @return TypeReference
166     */
167    public static com.fasterxml.jackson.core.type.TypeReference<OrderSetParcelItemsAction> typeReference() {
168        return new com.fasterxml.jackson.core.type.TypeReference<OrderSetParcelItemsAction>() {
169            @Override
170            public String toString() {
171                return "TypeReference<OrderSetParcelItemsAction>";
172            }
173        };
174    }
175}