001
002package com.commercetools.api.models.subscription;
003
004import java.util.*;
005import java.util.function.Function;
006
007import javax.annotation.Nullable;
008
009import io.vrap.rmf.base.client.Builder;
010import io.vrap.rmf.base.client.utils.Generated;
011
012/**
013 * ResourceUpdatedDeliveryPayloadBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     ResourceUpdatedDeliveryPayload resourceUpdatedDeliveryPayload = ResourceUpdatedDeliveryPayload.builder()
019 *             .projectKey("{projectKey}")
020 *             .resource(resourceBuilder -> resourceBuilder)
021 *             .version(0.3)
022 *             .oldVersion(0.3)
023 *             .modifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
024 *             .build()
025 * </code></pre>
026 * </div>
027 */
028@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
029public class ResourceUpdatedDeliveryPayloadBuilder implements Builder<ResourceUpdatedDeliveryPayload> {
030
031    private String projectKey;
032
033    private com.commercetools.api.models.common.Reference resource;
034
035    @Nullable
036    private com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers;
037
038    private Long version;
039
040    private Long oldVersion;
041
042    private java.time.ZonedDateTime modifiedAt;
043
044    /**
045     *  <p><code>key</code> of the Project. Useful in message processing if the Destination receives events from multiple Projects.</p>
046     * @param projectKey value to be set
047     * @return Builder
048     */
049
050    public ResourceUpdatedDeliveryPayloadBuilder projectKey(final String projectKey) {
051        this.projectKey = projectKey;
052        return this;
053    }
054
055    /**
056     *  <p>Reference to the resource that triggered the message.</p>
057     * @param resource value to be set
058     * @return Builder
059     */
060
061    public ResourceUpdatedDeliveryPayloadBuilder resource(
062            final com.commercetools.api.models.common.Reference resource) {
063        this.resource = resource;
064        return this;
065    }
066
067    /**
068     *  <p>Reference to the resource that triggered the message.</p>
069     * @param builder function to build the resource value
070     * @return Builder
071     */
072
073    public ResourceUpdatedDeliveryPayloadBuilder resource(
074            Function<com.commercetools.api.models.common.ReferenceBuilder, Builder<? extends com.commercetools.api.models.common.Reference>> builder) {
075        this.resource = builder.apply(com.commercetools.api.models.common.ReferenceBuilder.of()).build();
076        return this;
077    }
078
079    /**
080     *  <p>User-defined unique identifiers of the resource.</p>
081     * @param builder function to build the resourceUserProvidedIdentifiers value
082     * @return Builder
083     */
084
085    public ResourceUpdatedDeliveryPayloadBuilder resourceUserProvidedIdentifiers(
086            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiersBuilder> builder) {
087        this.resourceUserProvidedIdentifiers = builder
088                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of())
089                .build();
090        return this;
091    }
092
093    /**
094     *  <p>User-defined unique identifiers of the resource.</p>
095     * @param builder function to build the resourceUserProvidedIdentifiers value
096     * @return Builder
097     */
098
099    public ResourceUpdatedDeliveryPayloadBuilder withResourceUserProvidedIdentifiers(
100            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiers> builder) {
101        this.resourceUserProvidedIdentifiers = builder
102                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of());
103        return this;
104    }
105
106    /**
107     *  <p>User-defined unique identifiers of the resource.</p>
108     * @param resourceUserProvidedIdentifiers value to be set
109     * @return Builder
110     */
111
112    public ResourceUpdatedDeliveryPayloadBuilder resourceUserProvidedIdentifiers(
113            @Nullable final com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers) {
114        this.resourceUserProvidedIdentifiers = resourceUserProvidedIdentifiers;
115        return this;
116    }
117
118    /**
119     *  <p>Last seen version of the resource.</p>
120     * @param version value to be set
121     * @return Builder
122     */
123
124    public ResourceUpdatedDeliveryPayloadBuilder version(final Long version) {
125        this.version = version;
126        return this;
127    }
128
129    /**
130     *  <p>Version of the resource before the update.</p>
131     * @param oldVersion value to be set
132     * @return Builder
133     */
134
135    public ResourceUpdatedDeliveryPayloadBuilder oldVersion(final Long oldVersion) {
136        this.oldVersion = oldVersion;
137        return this;
138    }
139
140    /**
141     *  <p>Date and time (UTC) the resource was last updated.</p>
142     * @param modifiedAt value to be set
143     * @return Builder
144     */
145
146    public ResourceUpdatedDeliveryPayloadBuilder modifiedAt(final java.time.ZonedDateTime modifiedAt) {
147        this.modifiedAt = modifiedAt;
148        return this;
149    }
150
151    /**
152     *  <p><code>key</code> of the Project. Useful in message processing if the Destination receives events from multiple Projects.</p>
153     * @return projectKey
154     */
155
156    public String getProjectKey() {
157        return this.projectKey;
158    }
159
160    /**
161     *  <p>Reference to the resource that triggered the message.</p>
162     * @return resource
163     */
164
165    public com.commercetools.api.models.common.Reference getResource() {
166        return this.resource;
167    }
168
169    /**
170     *  <p>User-defined unique identifiers of the resource.</p>
171     * @return resourceUserProvidedIdentifiers
172     */
173
174    @Nullable
175    public com.commercetools.api.models.message.UserProvidedIdentifiers getResourceUserProvidedIdentifiers() {
176        return this.resourceUserProvidedIdentifiers;
177    }
178
179    /**
180     *  <p>Last seen version of the resource.</p>
181     * @return version
182     */
183
184    public Long getVersion() {
185        return this.version;
186    }
187
188    /**
189     *  <p>Version of the resource before the update.</p>
190     * @return oldVersion
191     */
192
193    public Long getOldVersion() {
194        return this.oldVersion;
195    }
196
197    /**
198     *  <p>Date and time (UTC) the resource was last updated.</p>
199     * @return modifiedAt
200     */
201
202    public java.time.ZonedDateTime getModifiedAt() {
203        return this.modifiedAt;
204    }
205
206    /**
207     * builds ResourceUpdatedDeliveryPayload with checking for non-null required values
208     * @return ResourceUpdatedDeliveryPayload
209     */
210    public ResourceUpdatedDeliveryPayload build() {
211        Objects.requireNonNull(projectKey, ResourceUpdatedDeliveryPayload.class + ": projectKey is missing");
212        Objects.requireNonNull(resource, ResourceUpdatedDeliveryPayload.class + ": resource is missing");
213        Objects.requireNonNull(version, ResourceUpdatedDeliveryPayload.class + ": version is missing");
214        Objects.requireNonNull(oldVersion, ResourceUpdatedDeliveryPayload.class + ": oldVersion is missing");
215        Objects.requireNonNull(modifiedAt, ResourceUpdatedDeliveryPayload.class + ": modifiedAt is missing");
216        return new ResourceUpdatedDeliveryPayloadImpl(projectKey, resource, resourceUserProvidedIdentifiers, version,
217            oldVersion, modifiedAt);
218    }
219
220    /**
221     * builds ResourceUpdatedDeliveryPayload without checking for non-null required values
222     * @return ResourceUpdatedDeliveryPayload
223     */
224    public ResourceUpdatedDeliveryPayload buildUnchecked() {
225        return new ResourceUpdatedDeliveryPayloadImpl(projectKey, resource, resourceUserProvidedIdentifiers, version,
226            oldVersion, modifiedAt);
227    }
228
229    /**
230     * factory method for an instance of ResourceUpdatedDeliveryPayloadBuilder
231     * @return builder
232     */
233    public static ResourceUpdatedDeliveryPayloadBuilder of() {
234        return new ResourceUpdatedDeliveryPayloadBuilder();
235    }
236
237    /**
238     * create builder for ResourceUpdatedDeliveryPayload instance
239     * @param template instance with prefilled values for the builder
240     * @return builder
241     */
242    public static ResourceUpdatedDeliveryPayloadBuilder of(final ResourceUpdatedDeliveryPayload template) {
243        ResourceUpdatedDeliveryPayloadBuilder builder = new ResourceUpdatedDeliveryPayloadBuilder();
244        builder.projectKey = template.getProjectKey();
245        builder.resource = template.getResource();
246        builder.resourceUserProvidedIdentifiers = template.getResourceUserProvidedIdentifiers();
247        builder.version = template.getVersion();
248        builder.oldVersion = template.getOldVersion();
249        builder.modifiedAt = template.getModifiedAt();
250        return builder;
251    }
252
253}