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.constraints.NotNull;
010
011import com.commercetools.api.models.business_unit.BusinessUnitStatus;
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 *  <p>Generated after a successful Change Status update action.</p>
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     BusinessUnitStatusChangedMessage businessUnitStatusChangedMessage = BusinessUnitStatusChangedMessage.builder()
025 *             .id("{id}")
026 *             .version(0.3)
027 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
028 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
029 *             .sequenceNumber(0.3)
030 *             .resource(resourceBuilder -> resourceBuilder)
031 *             .resourceVersion(0.3)
032 *             .active(BusinessUnitStatus.ACTIVE)
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 = BusinessUnitStatusChangedMessageImpl.class)
039public interface BusinessUnitStatusChangedMessage extends Message {
040
041    /**
042     * discriminator value for BusinessUnitStatusChangedMessage
043     */
044    String BUSINESS_UNIT_STATUS_CHANGED = "BusinessUnitStatusChanged";
045
046    /**
047     *  <p>Updated status of the Business Unit.</p>
048     * @return active
049     */
050    @NotNull
051    @JsonProperty("active")
052    public BusinessUnitStatus getActive();
053
054    /**
055     *  <p>Updated status of the Business Unit.</p>
056     * @param active value to be set
057     */
058
059    public void setActive(final BusinessUnitStatus active);
060
061    /**
062     * factory method
063     * @return instance of BusinessUnitStatusChangedMessage
064     */
065    public static BusinessUnitStatusChangedMessage of() {
066        return new BusinessUnitStatusChangedMessageImpl();
067    }
068
069    /**
070     * factory method to create a shallow copy BusinessUnitStatusChangedMessage
071     * @param template instance to be copied
072     * @return copy instance
073     */
074    public static BusinessUnitStatusChangedMessage of(final BusinessUnitStatusChangedMessage template) {
075        BusinessUnitStatusChangedMessageImpl instance = new BusinessUnitStatusChangedMessageImpl();
076        instance.setId(template.getId());
077        instance.setVersion(template.getVersion());
078        instance.setCreatedAt(template.getCreatedAt());
079        instance.setLastModifiedAt(template.getLastModifiedAt());
080        instance.setLastModifiedBy(template.getLastModifiedBy());
081        instance.setCreatedBy(template.getCreatedBy());
082        instance.setSequenceNumber(template.getSequenceNumber());
083        instance.setResource(template.getResource());
084        instance.setResourceVersion(template.getResourceVersion());
085        instance.setResourceUserProvidedIdentifiers(template.getResourceUserProvidedIdentifiers());
086        instance.setActive(template.getActive());
087        return instance;
088    }
089
090    /**
091     * factory method to create a deep copy of BusinessUnitStatusChangedMessage
092     * @param template instance to be copied
093     * @return copy instance
094     */
095    @Nullable
096    public static BusinessUnitStatusChangedMessage deepCopy(@Nullable final BusinessUnitStatusChangedMessage template) {
097        if (template == null) {
098            return null;
099        }
100        BusinessUnitStatusChangedMessageImpl instance = new BusinessUnitStatusChangedMessageImpl();
101        instance.setId(template.getId());
102        instance.setVersion(template.getVersion());
103        instance.setCreatedAt(template.getCreatedAt());
104        instance.setLastModifiedAt(template.getLastModifiedAt());
105        instance.setLastModifiedBy(
106            com.commercetools.api.models.common.LastModifiedBy.deepCopy(template.getLastModifiedBy()));
107        instance.setCreatedBy(com.commercetools.api.models.common.CreatedBy.deepCopy(template.getCreatedBy()));
108        instance.setSequenceNumber(template.getSequenceNumber());
109        instance.setResource(com.commercetools.api.models.common.Reference.deepCopy(template.getResource()));
110        instance.setResourceVersion(template.getResourceVersion());
111        instance.setResourceUserProvidedIdentifiers(com.commercetools.api.models.message.UserProvidedIdentifiers
112                .deepCopy(template.getResourceUserProvidedIdentifiers()));
113        instance.setActive(template.getActive());
114        return instance;
115    }
116
117    /**
118     * builder factory method for BusinessUnitStatusChangedMessage
119     * @return builder
120     */
121    public static BusinessUnitStatusChangedMessageBuilder builder() {
122        return BusinessUnitStatusChangedMessageBuilder.of();
123    }
124
125    /**
126     * create builder for BusinessUnitStatusChangedMessage instance
127     * @param template instance with prefilled values for the builder
128     * @return builder
129     */
130    public static BusinessUnitStatusChangedMessageBuilder builder(final BusinessUnitStatusChangedMessage template) {
131        return BusinessUnitStatusChangedMessageBuilder.of(template);
132    }
133
134    /**
135     * accessor map function
136     * @param <T> mapped type
137     * @param helper function to map the object
138     * @return mapped value
139     */
140    default <T> T withBusinessUnitStatusChangedMessage(Function<BusinessUnitStatusChangedMessage, T> helper) {
141        return helper.apply(this);
142    }
143
144    /**
145     * gives a TypeReference for usage with Jackson DataBind
146     * @return TypeReference
147     */
148    public static com.fasterxml.jackson.core.type.TypeReference<BusinessUnitStatusChangedMessage> typeReference() {
149        return new com.fasterxml.jackson.core.type.TypeReference<BusinessUnitStatusChangedMessage>() {
150            @Override
151            public String toString() {
152                return "TypeReference<BusinessUnitStatusChangedMessage>";
153            }
154        };
155    }
156}