001
002package com.commercetools.api.models.message;
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 * BusinessUnitAssociateModeChangedMessageBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     BusinessUnitAssociateModeChangedMessage businessUnitAssociateModeChangedMessage = BusinessUnitAssociateModeChangedMessage.builder()
019 *             .id("{id}")
020 *             .version(0.3)
021 *             .createdAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
022 *             .lastModifiedAt(ZonedDateTime.parse("2022-01-01T12:00:00.301Z"))
023 *             .sequenceNumber(0.3)
024 *             .resource(resourceBuilder -> resourceBuilder)
025 *             .resourceVersion(0.3)
026 *             .associateMode(BusinessUnitAssociateMode.EXPLICIT)
027 *             .oldAssociateMode(BusinessUnitAssociateMode.EXPLICIT)
028 *             .build()
029 * </code></pre>
030 * </div>
031 */
032@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
033public class BusinessUnitAssociateModeChangedMessageBuilder
034        implements Builder<BusinessUnitAssociateModeChangedMessage> {
035
036    private String id;
037
038    private Long version;
039
040    private java.time.ZonedDateTime createdAt;
041
042    private java.time.ZonedDateTime lastModifiedAt;
043
044    @Nullable
045    private com.commercetools.api.models.common.LastModifiedBy lastModifiedBy;
046
047    @Nullable
048    private com.commercetools.api.models.common.CreatedBy createdBy;
049
050    private Long sequenceNumber;
051
052    private com.commercetools.api.models.common.Reference resource;
053
054    private Long resourceVersion;
055
056    @Nullable
057    private com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers;
058
059    private com.commercetools.api.models.business_unit.BusinessUnitAssociateMode associateMode;
060
061    private com.commercetools.api.models.business_unit.BusinessUnitAssociateMode oldAssociateMode;
062
063    /**
064     *  <p>Unique identifier of the Message. Can be used to track which Messages have been processed.</p>
065     * @param id value to be set
066     * @return Builder
067     */
068
069    public BusinessUnitAssociateModeChangedMessageBuilder id(final String id) {
070        this.id = id;
071        return this;
072    }
073
074    /**
075     *  <p>Version of a resource. In case of Messages, this is always <code>1</code>.</p>
076     * @param version value to be set
077     * @return Builder
078     */
079
080    public BusinessUnitAssociateModeChangedMessageBuilder version(final Long version) {
081        this.version = version;
082        return this;
083    }
084
085    /**
086     *  <p>Date and time (UTC) the Message was generated.</p>
087     * @param createdAt value to be set
088     * @return Builder
089     */
090
091    public BusinessUnitAssociateModeChangedMessageBuilder createdAt(final java.time.ZonedDateTime createdAt) {
092        this.createdAt = createdAt;
093        return this;
094    }
095
096    /**
097     *  <p>Value of <code>createdAt</code>.</p>
098     * @param lastModifiedAt value to be set
099     * @return Builder
100     */
101
102    public BusinessUnitAssociateModeChangedMessageBuilder lastModifiedAt(final java.time.ZonedDateTime lastModifiedAt) {
103        this.lastModifiedAt = lastModifiedAt;
104        return this;
105    }
106
107    /**
108     *  <p>Value of <code>createdBy</code>.</p>
109     * @param builder function to build the lastModifiedBy value
110     * @return Builder
111     */
112
113    public BusinessUnitAssociateModeChangedMessageBuilder lastModifiedBy(
114            Function<com.commercetools.api.models.common.LastModifiedByBuilder, com.commercetools.api.models.common.LastModifiedByBuilder> builder) {
115        this.lastModifiedBy = builder.apply(com.commercetools.api.models.common.LastModifiedByBuilder.of()).build();
116        return this;
117    }
118
119    /**
120     *  <p>Value of <code>createdBy</code>.</p>
121     * @param builder function to build the lastModifiedBy value
122     * @return Builder
123     */
124
125    public BusinessUnitAssociateModeChangedMessageBuilder withLastModifiedBy(
126            Function<com.commercetools.api.models.common.LastModifiedByBuilder, com.commercetools.api.models.common.LastModifiedBy> builder) {
127        this.lastModifiedBy = builder.apply(com.commercetools.api.models.common.LastModifiedByBuilder.of());
128        return this;
129    }
130
131    /**
132     *  <p>Value of <code>createdBy</code>.</p>
133     * @param lastModifiedBy value to be set
134     * @return Builder
135     */
136
137    public BusinessUnitAssociateModeChangedMessageBuilder lastModifiedBy(
138            @Nullable final com.commercetools.api.models.common.LastModifiedBy lastModifiedBy) {
139        this.lastModifiedBy = lastModifiedBy;
140        return this;
141    }
142
143    /**
144     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
145     * @param builder function to build the createdBy value
146     * @return Builder
147     */
148
149    public BusinessUnitAssociateModeChangedMessageBuilder createdBy(
150            Function<com.commercetools.api.models.common.CreatedByBuilder, com.commercetools.api.models.common.CreatedByBuilder> builder) {
151        this.createdBy = builder.apply(com.commercetools.api.models.common.CreatedByBuilder.of()).build();
152        return this;
153    }
154
155    /**
156     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
157     * @param builder function to build the createdBy value
158     * @return Builder
159     */
160
161    public BusinessUnitAssociateModeChangedMessageBuilder withCreatedBy(
162            Function<com.commercetools.api.models.common.CreatedByBuilder, com.commercetools.api.models.common.CreatedBy> builder) {
163        this.createdBy = builder.apply(com.commercetools.api.models.common.CreatedByBuilder.of());
164        return this;
165    }
166
167    /**
168     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
169     * @param createdBy value to be set
170     * @return Builder
171     */
172
173    public BusinessUnitAssociateModeChangedMessageBuilder createdBy(
174            @Nullable final com.commercetools.api.models.common.CreatedBy createdBy) {
175        this.createdBy = createdBy;
176        return this;
177    }
178
179    /**
180     *  <p>Message number in relation to other Messages for a given resource. The <code>sequenceNumber</code> of the next Message for the resource is the successor of the <code>sequenceNumber</code> of the current Message. Meaning, the <code>sequenceNumber</code> of the next Message equals the <code>sequenceNumber</code> of the current Message + 1. <code>sequenceNumber</code> can be used to ensure that Messages are processed in the correct order for a particular resource.</p>
181     * @param sequenceNumber value to be set
182     * @return Builder
183     */
184
185    public BusinessUnitAssociateModeChangedMessageBuilder sequenceNumber(final Long sequenceNumber) {
186        this.sequenceNumber = sequenceNumber;
187        return this;
188    }
189
190    /**
191     *  <p>Reference to the resource on which the change or action was performed.</p>
192     * @param resource value to be set
193     * @return Builder
194     */
195
196    public BusinessUnitAssociateModeChangedMessageBuilder resource(
197            final com.commercetools.api.models.common.Reference resource) {
198        this.resource = resource;
199        return this;
200    }
201
202    /**
203     *  <p>Reference to the resource on which the change or action was performed.</p>
204     * @param builder function to build the resource value
205     * @return Builder
206     */
207
208    public BusinessUnitAssociateModeChangedMessageBuilder resource(
209            Function<com.commercetools.api.models.common.ReferenceBuilder, Builder<? extends com.commercetools.api.models.common.Reference>> builder) {
210        this.resource = builder.apply(com.commercetools.api.models.common.ReferenceBuilder.of()).build();
211        return this;
212    }
213
214    /**
215     *  <p>Version of the resource on which the change or action was performed.</p>
216     * @param resourceVersion value to be set
217     * @return Builder
218     */
219
220    public BusinessUnitAssociateModeChangedMessageBuilder resourceVersion(final Long resourceVersion) {
221        this.resourceVersion = resourceVersion;
222        return this;
223    }
224
225    /**
226     *  <p>User-provided identifiers of the resource, such as <code>key</code> or <code>externalId</code>. Only present if the resource has such identifiers.</p>
227     * @param builder function to build the resourceUserProvidedIdentifiers value
228     * @return Builder
229     */
230
231    public BusinessUnitAssociateModeChangedMessageBuilder resourceUserProvidedIdentifiers(
232            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiersBuilder> builder) {
233        this.resourceUserProvidedIdentifiers = builder
234                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of())
235                .build();
236        return this;
237    }
238
239    /**
240     *  <p>User-provided identifiers of the resource, such as <code>key</code> or <code>externalId</code>. Only present if the resource has such identifiers.</p>
241     * @param builder function to build the resourceUserProvidedIdentifiers value
242     * @return Builder
243     */
244
245    public BusinessUnitAssociateModeChangedMessageBuilder withResourceUserProvidedIdentifiers(
246            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiers> builder) {
247        this.resourceUserProvidedIdentifiers = builder
248                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of());
249        return this;
250    }
251
252    /**
253     *  <p>User-provided identifiers of the resource, such as <code>key</code> or <code>externalId</code>. Only present if the resource has such identifiers.</p>
254     * @param resourceUserProvidedIdentifiers value to be set
255     * @return Builder
256     */
257
258    public BusinessUnitAssociateModeChangedMessageBuilder resourceUserProvidedIdentifiers(
259            @Nullable final com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers) {
260        this.resourceUserProvidedIdentifiers = resourceUserProvidedIdentifiers;
261        return this;
262    }
263
264    /**
265     *  <p>BusinessUnitAssociateMode of the Business Unit after the Change Associate Mode update action.</p>
266     * @param associateMode value to be set
267     * @return Builder
268     */
269
270    public BusinessUnitAssociateModeChangedMessageBuilder associateMode(
271            final com.commercetools.api.models.business_unit.BusinessUnitAssociateMode associateMode) {
272        this.associateMode = associateMode;
273        return this;
274    }
275
276    /**
277     *  <p>BusinessUnitAssociateMode of the Business Unit before the Change Associate Mode update action.</p>
278     * @param oldAssociateMode value to be set
279     * @return Builder
280     */
281
282    public BusinessUnitAssociateModeChangedMessageBuilder oldAssociateMode(
283            final com.commercetools.api.models.business_unit.BusinessUnitAssociateMode oldAssociateMode) {
284        this.oldAssociateMode = oldAssociateMode;
285        return this;
286    }
287
288    /**
289     *  <p>Unique identifier of the Message. Can be used to track which Messages have been processed.</p>
290     * @return id
291     */
292
293    public String getId() {
294        return this.id;
295    }
296
297    /**
298     *  <p>Version of a resource. In case of Messages, this is always <code>1</code>.</p>
299     * @return version
300     */
301
302    public Long getVersion() {
303        return this.version;
304    }
305
306    /**
307     *  <p>Date and time (UTC) the Message was generated.</p>
308     * @return createdAt
309     */
310
311    public java.time.ZonedDateTime getCreatedAt() {
312        return this.createdAt;
313    }
314
315    /**
316     *  <p>Value of <code>createdAt</code>.</p>
317     * @return lastModifiedAt
318     */
319
320    public java.time.ZonedDateTime getLastModifiedAt() {
321        return this.lastModifiedAt;
322    }
323
324    /**
325     *  <p>Value of <code>createdBy</code>.</p>
326     * @return lastModifiedBy
327     */
328
329    @Nullable
330    public com.commercetools.api.models.common.LastModifiedBy getLastModifiedBy() {
331        return this.lastModifiedBy;
332    }
333
334    /**
335     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
336     * @return createdBy
337     */
338
339    @Nullable
340    public com.commercetools.api.models.common.CreatedBy getCreatedBy() {
341        return this.createdBy;
342    }
343
344    /**
345     *  <p>Message number in relation to other Messages for a given resource. The <code>sequenceNumber</code> of the next Message for the resource is the successor of the <code>sequenceNumber</code> of the current Message. Meaning, the <code>sequenceNumber</code> of the next Message equals the <code>sequenceNumber</code> of the current Message + 1. <code>sequenceNumber</code> can be used to ensure that Messages are processed in the correct order for a particular resource.</p>
346     * @return sequenceNumber
347     */
348
349    public Long getSequenceNumber() {
350        return this.sequenceNumber;
351    }
352
353    /**
354     *  <p>Reference to the resource on which the change or action was performed.</p>
355     * @return resource
356     */
357
358    public com.commercetools.api.models.common.Reference getResource() {
359        return this.resource;
360    }
361
362    /**
363     *  <p>Version of the resource on which the change or action was performed.</p>
364     * @return resourceVersion
365     */
366
367    public Long getResourceVersion() {
368        return this.resourceVersion;
369    }
370
371    /**
372     *  <p>User-provided identifiers of the resource, such as <code>key</code> or <code>externalId</code>. Only present if the resource has such identifiers.</p>
373     * @return resourceUserProvidedIdentifiers
374     */
375
376    @Nullable
377    public com.commercetools.api.models.message.UserProvidedIdentifiers getResourceUserProvidedIdentifiers() {
378        return this.resourceUserProvidedIdentifiers;
379    }
380
381    /**
382     *  <p>BusinessUnitAssociateMode of the Business Unit after the Change Associate Mode update action.</p>
383     * @return associateMode
384     */
385
386    public com.commercetools.api.models.business_unit.BusinessUnitAssociateMode getAssociateMode() {
387        return this.associateMode;
388    }
389
390    /**
391     *  <p>BusinessUnitAssociateMode of the Business Unit before the Change Associate Mode update action.</p>
392     * @return oldAssociateMode
393     */
394
395    public com.commercetools.api.models.business_unit.BusinessUnitAssociateMode getOldAssociateMode() {
396        return this.oldAssociateMode;
397    }
398
399    /**
400     * builds BusinessUnitAssociateModeChangedMessage with checking for non-null required values
401     * @return BusinessUnitAssociateModeChangedMessage
402     */
403    public BusinessUnitAssociateModeChangedMessage build() {
404        Objects.requireNonNull(id, BusinessUnitAssociateModeChangedMessage.class + ": id is missing");
405        Objects.requireNonNull(version, BusinessUnitAssociateModeChangedMessage.class + ": version is missing");
406        Objects.requireNonNull(createdAt, BusinessUnitAssociateModeChangedMessage.class + ": createdAt is missing");
407        Objects.requireNonNull(lastModifiedAt,
408            BusinessUnitAssociateModeChangedMessage.class + ": lastModifiedAt is missing");
409        Objects.requireNonNull(sequenceNumber,
410            BusinessUnitAssociateModeChangedMessage.class + ": sequenceNumber is missing");
411        Objects.requireNonNull(resource, BusinessUnitAssociateModeChangedMessage.class + ": resource is missing");
412        Objects.requireNonNull(resourceVersion,
413            BusinessUnitAssociateModeChangedMessage.class + ": resourceVersion is missing");
414        Objects.requireNonNull(associateMode,
415            BusinessUnitAssociateModeChangedMessage.class + ": associateMode is missing");
416        Objects.requireNonNull(oldAssociateMode,
417            BusinessUnitAssociateModeChangedMessage.class + ": oldAssociateMode is missing");
418        return new BusinessUnitAssociateModeChangedMessageImpl(id, version, createdAt, lastModifiedAt, lastModifiedBy,
419            createdBy, sequenceNumber, resource, resourceVersion, resourceUserProvidedIdentifiers, associateMode,
420            oldAssociateMode);
421    }
422
423    /**
424     * builds BusinessUnitAssociateModeChangedMessage without checking for non-null required values
425     * @return BusinessUnitAssociateModeChangedMessage
426     */
427    public BusinessUnitAssociateModeChangedMessage buildUnchecked() {
428        return new BusinessUnitAssociateModeChangedMessageImpl(id, version, createdAt, lastModifiedAt, lastModifiedBy,
429            createdBy, sequenceNumber, resource, resourceVersion, resourceUserProvidedIdentifiers, associateMode,
430            oldAssociateMode);
431    }
432
433    /**
434     * factory method for an instance of BusinessUnitAssociateModeChangedMessageBuilder
435     * @return builder
436     */
437    public static BusinessUnitAssociateModeChangedMessageBuilder of() {
438        return new BusinessUnitAssociateModeChangedMessageBuilder();
439    }
440
441    /**
442     * create builder for BusinessUnitAssociateModeChangedMessage instance
443     * @param template instance with prefilled values for the builder
444     * @return builder
445     */
446    public static BusinessUnitAssociateModeChangedMessageBuilder of(
447            final BusinessUnitAssociateModeChangedMessage template) {
448        BusinessUnitAssociateModeChangedMessageBuilder builder = new BusinessUnitAssociateModeChangedMessageBuilder();
449        builder.id = template.getId();
450        builder.version = template.getVersion();
451        builder.createdAt = template.getCreatedAt();
452        builder.lastModifiedAt = template.getLastModifiedAt();
453        builder.lastModifiedBy = template.getLastModifiedBy();
454        builder.createdBy = template.getCreatedBy();
455        builder.sequenceNumber = template.getSequenceNumber();
456        builder.resource = template.getResource();
457        builder.resourceVersion = template.getResourceVersion();
458        builder.resourceUserProvidedIdentifiers = template.getResourceUserProvidedIdentifiers();
459        builder.associateMode = template.getAssociateMode();
460        builder.oldAssociateMode = template.getOldAssociateMode();
461        return builder;
462    }
463
464}