001
002package com.commercetools.api.models.cart_discount;
003
004import java.time.*;
005import java.time.ZonedDateTime;
006import java.util.*;
007import java.util.function.Function;
008
009import javax.annotation.Nullable;
010
011import com.fasterxml.jackson.annotation.*;
012import com.fasterxml.jackson.databind.annotation.*;
013
014import io.vrap.rmf.base.client.utils.Generated;
015
016/**
017 * CartDiscountSetValidFromAndUntilAction
018 *
019 * <hr>
020 * Example to create an instance using the builder pattern
021 * <div class=code-example>
022 * <pre><code class='java'>
023 *     CartDiscountSetValidFromAndUntilAction cartDiscountSetValidFromAndUntilAction = CartDiscountSetValidFromAndUntilAction.builder()
024 *             .build()
025 * </code></pre>
026 * </div>
027 */
028@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
029@JsonDeserialize(as = CartDiscountSetValidFromAndUntilActionImpl.class)
030public interface CartDiscountSetValidFromAndUntilAction extends CartDiscountUpdateAction {
031
032    /**
033     * discriminator value for CartDiscountSetValidFromAndUntilAction
034     */
035    String SET_VALID_FROM_AND_UNTIL = "setValidFromAndUntil";
036
037    /**
038     *  <p>Value to set. If empty, any existing value will be removed.</p>
039     * @return validFrom
040     */
041
042    @JsonProperty("validFrom")
043    public ZonedDateTime getValidFrom();
044
045    /**
046     *  <p>Value to set. If empty, any existing value will be removed.</p>
047     * @return validUntil
048     */
049
050    @JsonProperty("validUntil")
051    public ZonedDateTime getValidUntil();
052
053    /**
054     *  <p>Value to set. If empty, any existing value will be removed.</p>
055     * @param validFrom value to be set
056     */
057
058    public void setValidFrom(final ZonedDateTime validFrom);
059
060    /**
061     *  <p>Value to set. If empty, any existing value will be removed.</p>
062     * @param validUntil value to be set
063     */
064
065    public void setValidUntil(final ZonedDateTime validUntil);
066
067    /**
068     * factory method
069     * @return instance of CartDiscountSetValidFromAndUntilAction
070     */
071    public static CartDiscountSetValidFromAndUntilAction of() {
072        return new CartDiscountSetValidFromAndUntilActionImpl();
073    }
074
075    /**
076     * factory method to create a shallow copy CartDiscountSetValidFromAndUntilAction
077     * @param template instance to be copied
078     * @return copy instance
079     */
080    public static CartDiscountSetValidFromAndUntilAction of(final CartDiscountSetValidFromAndUntilAction template) {
081        CartDiscountSetValidFromAndUntilActionImpl instance = new CartDiscountSetValidFromAndUntilActionImpl();
082        instance.setValidFrom(template.getValidFrom());
083        instance.setValidUntil(template.getValidUntil());
084        return instance;
085    }
086
087    /**
088     * factory method to create a deep copy of CartDiscountSetValidFromAndUntilAction
089     * @param template instance to be copied
090     * @return copy instance
091     */
092    @Nullable
093    public static CartDiscountSetValidFromAndUntilAction deepCopy(
094            @Nullable final CartDiscountSetValidFromAndUntilAction template) {
095        if (template == null) {
096            return null;
097        }
098        CartDiscountSetValidFromAndUntilActionImpl instance = new CartDiscountSetValidFromAndUntilActionImpl();
099        instance.setValidFrom(template.getValidFrom());
100        instance.setValidUntil(template.getValidUntil());
101        return instance;
102    }
103
104    /**
105     * builder factory method for CartDiscountSetValidFromAndUntilAction
106     * @return builder
107     */
108    public static CartDiscountSetValidFromAndUntilActionBuilder builder() {
109        return CartDiscountSetValidFromAndUntilActionBuilder.of();
110    }
111
112    /**
113     * create builder for CartDiscountSetValidFromAndUntilAction instance
114     * @param template instance with prefilled values for the builder
115     * @return builder
116     */
117    public static CartDiscountSetValidFromAndUntilActionBuilder builder(
118            final CartDiscountSetValidFromAndUntilAction template) {
119        return CartDiscountSetValidFromAndUntilActionBuilder.of(template);
120    }
121
122    /**
123     * accessor map function
124     * @param <T> mapped type
125     * @param helper function to map the object
126     * @return mapped value
127     */
128    default <T> T withCartDiscountSetValidFromAndUntilAction(
129            Function<CartDiscountSetValidFromAndUntilAction, T> helper) {
130        return helper.apply(this);
131    }
132
133    /**
134     * gives a TypeReference for usage with Jackson DataBind
135     * @return TypeReference
136     */
137    public static com.fasterxml.jackson.core.type.TypeReference<CartDiscountSetValidFromAndUntilAction> typeReference() {
138        return new com.fasterxml.jackson.core.type.TypeReference<CartDiscountSetValidFromAndUntilAction>() {
139            @Override
140            public String toString() {
141                return "TypeReference<CartDiscountSetValidFromAndUntilAction>";
142            }
143        };
144    }
145}