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 * StoreCountriesChangedMessageBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     StoreCountriesChangedMessage storeCountriesChangedMessage = StoreCountriesChangedMessage.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 *             .build()
027 * </code></pre>
028 * </div>
029 */
030@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
031public class StoreCountriesChangedMessageBuilder implements Builder<StoreCountriesChangedMessage> {
032
033    private String id;
034
035    private Long version;
036
037    private java.time.ZonedDateTime createdAt;
038
039    private java.time.ZonedDateTime lastModifiedAt;
040
041    @Nullable
042    private com.commercetools.api.models.common.LastModifiedBy lastModifiedBy;
043
044    @Nullable
045    private com.commercetools.api.models.common.CreatedBy createdBy;
046
047    private Long sequenceNumber;
048
049    private com.commercetools.api.models.common.Reference resource;
050
051    private Long resourceVersion;
052
053    @Nullable
054    private com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers;
055
056    @Nullable
057    private java.util.List<com.commercetools.api.models.store_country.StoreCountry> addedCountries;
058
059    @Nullable
060    private java.util.List<com.commercetools.api.models.store_country.StoreCountry> removedCountries;
061
062    /**
063     *  <p>Unique identifier of the Message. Can be used to track which Messages have been processed.</p>
064     * @param id value to be set
065     * @return Builder
066     */
067
068    public StoreCountriesChangedMessageBuilder id(final String id) {
069        this.id = id;
070        return this;
071    }
072
073    /**
074     *  <p>Version of a resource. In case of Messages, this is always <code>1</code>.</p>
075     * @param version value to be set
076     * @return Builder
077     */
078
079    public StoreCountriesChangedMessageBuilder version(final Long version) {
080        this.version = version;
081        return this;
082    }
083
084    /**
085     *  <p>Date and time (UTC) the Message was generated.</p>
086     * @param createdAt value to be set
087     * @return Builder
088     */
089
090    public StoreCountriesChangedMessageBuilder createdAt(final java.time.ZonedDateTime createdAt) {
091        this.createdAt = createdAt;
092        return this;
093    }
094
095    /**
096     *  <p>Value of <code>createdAt</code>.</p>
097     * @param lastModifiedAt value to be set
098     * @return Builder
099     */
100
101    public StoreCountriesChangedMessageBuilder lastModifiedAt(final java.time.ZonedDateTime lastModifiedAt) {
102        this.lastModifiedAt = lastModifiedAt;
103        return this;
104    }
105
106    /**
107     *  <p>Value of <code>createdBy</code>.</p>
108     * @param builder function to build the lastModifiedBy value
109     * @return Builder
110     */
111
112    public StoreCountriesChangedMessageBuilder lastModifiedBy(
113            Function<com.commercetools.api.models.common.LastModifiedByBuilder, com.commercetools.api.models.common.LastModifiedByBuilder> builder) {
114        this.lastModifiedBy = builder.apply(com.commercetools.api.models.common.LastModifiedByBuilder.of()).build();
115        return this;
116    }
117
118    /**
119     *  <p>Value of <code>createdBy</code>.</p>
120     * @param builder function to build the lastModifiedBy value
121     * @return Builder
122     */
123
124    public StoreCountriesChangedMessageBuilder withLastModifiedBy(
125            Function<com.commercetools.api.models.common.LastModifiedByBuilder, com.commercetools.api.models.common.LastModifiedBy> builder) {
126        this.lastModifiedBy = builder.apply(com.commercetools.api.models.common.LastModifiedByBuilder.of());
127        return this;
128    }
129
130    /**
131     *  <p>Value of <code>createdBy</code>.</p>
132     * @param lastModifiedBy value to be set
133     * @return Builder
134     */
135
136    public StoreCountriesChangedMessageBuilder lastModifiedBy(
137            @Nullable final com.commercetools.api.models.common.LastModifiedBy lastModifiedBy) {
138        this.lastModifiedBy = lastModifiedBy;
139        return this;
140    }
141
142    /**
143     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
144     * @param builder function to build the createdBy value
145     * @return Builder
146     */
147
148    public StoreCountriesChangedMessageBuilder createdBy(
149            Function<com.commercetools.api.models.common.CreatedByBuilder, com.commercetools.api.models.common.CreatedByBuilder> builder) {
150        this.createdBy = builder.apply(com.commercetools.api.models.common.CreatedByBuilder.of()).build();
151        return this;
152    }
153
154    /**
155     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
156     * @param builder function to build the createdBy value
157     * @return Builder
158     */
159
160    public StoreCountriesChangedMessageBuilder withCreatedBy(
161            Function<com.commercetools.api.models.common.CreatedByBuilder, com.commercetools.api.models.common.CreatedBy> builder) {
162        this.createdBy = builder.apply(com.commercetools.api.models.common.CreatedByBuilder.of());
163        return this;
164    }
165
166    /**
167     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
168     * @param createdBy value to be set
169     * @return Builder
170     */
171
172    public StoreCountriesChangedMessageBuilder createdBy(
173            @Nullable final com.commercetools.api.models.common.CreatedBy createdBy) {
174        this.createdBy = createdBy;
175        return this;
176    }
177
178    /**
179     *  <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>
180     * @param sequenceNumber value to be set
181     * @return Builder
182     */
183
184    public StoreCountriesChangedMessageBuilder sequenceNumber(final Long sequenceNumber) {
185        this.sequenceNumber = sequenceNumber;
186        return this;
187    }
188
189    /**
190     *  <p>Reference to the resource on which the change or action was performed.</p>
191     * @param resource value to be set
192     * @return Builder
193     */
194
195    public StoreCountriesChangedMessageBuilder resource(final com.commercetools.api.models.common.Reference resource) {
196        this.resource = resource;
197        return this;
198    }
199
200    /**
201     *  <p>Reference to the resource on which the change or action was performed.</p>
202     * @param builder function to build the resource value
203     * @return Builder
204     */
205
206    public StoreCountriesChangedMessageBuilder resource(
207            Function<com.commercetools.api.models.common.ReferenceBuilder, Builder<? extends com.commercetools.api.models.common.Reference>> builder) {
208        this.resource = builder.apply(com.commercetools.api.models.common.ReferenceBuilder.of()).build();
209        return this;
210    }
211
212    /**
213     *  <p>Version of the resource on which the change or action was performed.</p>
214     * @param resourceVersion value to be set
215     * @return Builder
216     */
217
218    public StoreCountriesChangedMessageBuilder resourceVersion(final Long resourceVersion) {
219        this.resourceVersion = resourceVersion;
220        return this;
221    }
222
223    /**
224     *  <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>
225     * @param builder function to build the resourceUserProvidedIdentifiers value
226     * @return Builder
227     */
228
229    public StoreCountriesChangedMessageBuilder resourceUserProvidedIdentifiers(
230            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiersBuilder> builder) {
231        this.resourceUserProvidedIdentifiers = builder
232                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of())
233                .build();
234        return this;
235    }
236
237    /**
238     *  <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>
239     * @param builder function to build the resourceUserProvidedIdentifiers value
240     * @return Builder
241     */
242
243    public StoreCountriesChangedMessageBuilder withResourceUserProvidedIdentifiers(
244            Function<com.commercetools.api.models.message.UserProvidedIdentifiersBuilder, com.commercetools.api.models.message.UserProvidedIdentifiers> builder) {
245        this.resourceUserProvidedIdentifiers = builder
246                .apply(com.commercetools.api.models.message.UserProvidedIdentifiersBuilder.of());
247        return this;
248    }
249
250    /**
251     *  <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>
252     * @param resourceUserProvidedIdentifiers value to be set
253     * @return Builder
254     */
255
256    public StoreCountriesChangedMessageBuilder resourceUserProvidedIdentifiers(
257            @Nullable final com.commercetools.api.models.message.UserProvidedIdentifiers resourceUserProvidedIdentifiers) {
258        this.resourceUserProvidedIdentifiers = resourceUserProvidedIdentifiers;
259        return this;
260    }
261
262    /**
263     *  <p>Countries added to the Store.</p>
264     * @param addedCountries value to be set
265     * @return Builder
266     */
267
268    public StoreCountriesChangedMessageBuilder addedCountries(
269            @Nullable final com.commercetools.api.models.store_country.StoreCountry... addedCountries) {
270        this.addedCountries = new ArrayList<>(Arrays.asList(addedCountries));
271        return this;
272    }
273
274    /**
275     *  <p>Countries added to the Store.</p>
276     * @param addedCountries value to be set
277     * @return Builder
278     */
279
280    public StoreCountriesChangedMessageBuilder addedCountries(
281            @Nullable final java.util.List<com.commercetools.api.models.store_country.StoreCountry> addedCountries) {
282        this.addedCountries = addedCountries;
283        return this;
284    }
285
286    /**
287     *  <p>Countries added to the Store.</p>
288     * @param addedCountries value to be set
289     * @return Builder
290     */
291
292    public StoreCountriesChangedMessageBuilder plusAddedCountries(
293            @Nullable final com.commercetools.api.models.store_country.StoreCountry... addedCountries) {
294        if (this.addedCountries == null) {
295            this.addedCountries = new ArrayList<>();
296        }
297        this.addedCountries.addAll(Arrays.asList(addedCountries));
298        return this;
299    }
300
301    /**
302     *  <p>Countries added to the Store.</p>
303     * @param builder function to build the addedCountries value
304     * @return Builder
305     */
306
307    public StoreCountriesChangedMessageBuilder plusAddedCountries(
308            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountryBuilder> builder) {
309        if (this.addedCountries == null) {
310            this.addedCountries = new ArrayList<>();
311        }
312        this.addedCountries
313                .add(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()).build());
314        return this;
315    }
316
317    /**
318     *  <p>Countries added to the Store.</p>
319     * @param builder function to build the addedCountries value
320     * @return Builder
321     */
322
323    public StoreCountriesChangedMessageBuilder withAddedCountries(
324            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountryBuilder> builder) {
325        this.addedCountries = new ArrayList<>();
326        this.addedCountries
327                .add(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()).build());
328        return this;
329    }
330
331    /**
332     *  <p>Countries added to the Store.</p>
333     * @param builder function to build the addedCountries value
334     * @return Builder
335     */
336
337    public StoreCountriesChangedMessageBuilder addAddedCountries(
338            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountry> builder) {
339        return plusAddedCountries(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()));
340    }
341
342    /**
343     *  <p>Countries added to the Store.</p>
344     * @param builder function to build the addedCountries value
345     * @return Builder
346     */
347
348    public StoreCountriesChangedMessageBuilder setAddedCountries(
349            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountry> builder) {
350        return addedCountries(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()));
351    }
352
353    /**
354     *  <p>Countries removed from the Store.</p>
355     * @param removedCountries value to be set
356     * @return Builder
357     */
358
359    public StoreCountriesChangedMessageBuilder removedCountries(
360            @Nullable final com.commercetools.api.models.store_country.StoreCountry... removedCountries) {
361        this.removedCountries = new ArrayList<>(Arrays.asList(removedCountries));
362        return this;
363    }
364
365    /**
366     *  <p>Countries removed from the Store.</p>
367     * @param removedCountries value to be set
368     * @return Builder
369     */
370
371    public StoreCountriesChangedMessageBuilder removedCountries(
372            @Nullable final java.util.List<com.commercetools.api.models.store_country.StoreCountry> removedCountries) {
373        this.removedCountries = removedCountries;
374        return this;
375    }
376
377    /**
378     *  <p>Countries removed from the Store.</p>
379     * @param removedCountries value to be set
380     * @return Builder
381     */
382
383    public StoreCountriesChangedMessageBuilder plusRemovedCountries(
384            @Nullable final com.commercetools.api.models.store_country.StoreCountry... removedCountries) {
385        if (this.removedCountries == null) {
386            this.removedCountries = new ArrayList<>();
387        }
388        this.removedCountries.addAll(Arrays.asList(removedCountries));
389        return this;
390    }
391
392    /**
393     *  <p>Countries removed from the Store.</p>
394     * @param builder function to build the removedCountries value
395     * @return Builder
396     */
397
398    public StoreCountriesChangedMessageBuilder plusRemovedCountries(
399            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountryBuilder> builder) {
400        if (this.removedCountries == null) {
401            this.removedCountries = new ArrayList<>();
402        }
403        this.removedCountries
404                .add(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()).build());
405        return this;
406    }
407
408    /**
409     *  <p>Countries removed from the Store.</p>
410     * @param builder function to build the removedCountries value
411     * @return Builder
412     */
413
414    public StoreCountriesChangedMessageBuilder withRemovedCountries(
415            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountryBuilder> builder) {
416        this.removedCountries = new ArrayList<>();
417        this.removedCountries
418                .add(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()).build());
419        return this;
420    }
421
422    /**
423     *  <p>Countries removed from the Store.</p>
424     * @param builder function to build the removedCountries value
425     * @return Builder
426     */
427
428    public StoreCountriesChangedMessageBuilder addRemovedCountries(
429            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountry> builder) {
430        return plusRemovedCountries(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()));
431    }
432
433    /**
434     *  <p>Countries removed from the Store.</p>
435     * @param builder function to build the removedCountries value
436     * @return Builder
437     */
438
439    public StoreCountriesChangedMessageBuilder setRemovedCountries(
440            Function<com.commercetools.api.models.store_country.StoreCountryBuilder, com.commercetools.api.models.store_country.StoreCountry> builder) {
441        return removedCountries(builder.apply(com.commercetools.api.models.store_country.StoreCountryBuilder.of()));
442    }
443
444    /**
445     *  <p>Unique identifier of the Message. Can be used to track which Messages have been processed.</p>
446     * @return id
447     */
448
449    public String getId() {
450        return this.id;
451    }
452
453    /**
454     *  <p>Version of a resource. In case of Messages, this is always <code>1</code>.</p>
455     * @return version
456     */
457
458    public Long getVersion() {
459        return this.version;
460    }
461
462    /**
463     *  <p>Date and time (UTC) the Message was generated.</p>
464     * @return createdAt
465     */
466
467    public java.time.ZonedDateTime getCreatedAt() {
468        return this.createdAt;
469    }
470
471    /**
472     *  <p>Value of <code>createdAt</code>.</p>
473     * @return lastModifiedAt
474     */
475
476    public java.time.ZonedDateTime getLastModifiedAt() {
477        return this.lastModifiedAt;
478    }
479
480    /**
481     *  <p>Value of <code>createdBy</code>.</p>
482     * @return lastModifiedBy
483     */
484
485    @Nullable
486    public com.commercetools.api.models.common.LastModifiedBy getLastModifiedBy() {
487        return this.lastModifiedBy;
488    }
489
490    /**
491     *  <p>Present on resources created after 1 February 2019 except for events not tracked.</p>
492     * @return createdBy
493     */
494
495    @Nullable
496    public com.commercetools.api.models.common.CreatedBy getCreatedBy() {
497        return this.createdBy;
498    }
499
500    /**
501     *  <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>
502     * @return sequenceNumber
503     */
504
505    public Long getSequenceNumber() {
506        return this.sequenceNumber;
507    }
508
509    /**
510     *  <p>Reference to the resource on which the change or action was performed.</p>
511     * @return resource
512     */
513
514    public com.commercetools.api.models.common.Reference getResource() {
515        return this.resource;
516    }
517
518    /**
519     *  <p>Version of the resource on which the change or action was performed.</p>
520     * @return resourceVersion
521     */
522
523    public Long getResourceVersion() {
524        return this.resourceVersion;
525    }
526
527    /**
528     *  <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>
529     * @return resourceUserProvidedIdentifiers
530     */
531
532    @Nullable
533    public com.commercetools.api.models.message.UserProvidedIdentifiers getResourceUserProvidedIdentifiers() {
534        return this.resourceUserProvidedIdentifiers;
535    }
536
537    /**
538     *  <p>Countries added to the Store.</p>
539     * @return addedCountries
540     */
541
542    @Nullable
543    public java.util.List<com.commercetools.api.models.store_country.StoreCountry> getAddedCountries() {
544        return this.addedCountries;
545    }
546
547    /**
548     *  <p>Countries removed from the Store.</p>
549     * @return removedCountries
550     */
551
552    @Nullable
553    public java.util.List<com.commercetools.api.models.store_country.StoreCountry> getRemovedCountries() {
554        return this.removedCountries;
555    }
556
557    /**
558     * builds StoreCountriesChangedMessage with checking for non-null required values
559     * @return StoreCountriesChangedMessage
560     */
561    public StoreCountriesChangedMessage build() {
562        Objects.requireNonNull(id, StoreCountriesChangedMessage.class + ": id is missing");
563        Objects.requireNonNull(version, StoreCountriesChangedMessage.class + ": version is missing");
564        Objects.requireNonNull(createdAt, StoreCountriesChangedMessage.class + ": createdAt is missing");
565        Objects.requireNonNull(lastModifiedAt, StoreCountriesChangedMessage.class + ": lastModifiedAt is missing");
566        Objects.requireNonNull(sequenceNumber, StoreCountriesChangedMessage.class + ": sequenceNumber is missing");
567        Objects.requireNonNull(resource, StoreCountriesChangedMessage.class + ": resource is missing");
568        Objects.requireNonNull(resourceVersion, StoreCountriesChangedMessage.class + ": resourceVersion is missing");
569        return new StoreCountriesChangedMessageImpl(id, version, createdAt, lastModifiedAt, lastModifiedBy, createdBy,
570            sequenceNumber, resource, resourceVersion, resourceUserProvidedIdentifiers, addedCountries,
571            removedCountries);
572    }
573
574    /**
575     * builds StoreCountriesChangedMessage without checking for non-null required values
576     * @return StoreCountriesChangedMessage
577     */
578    public StoreCountriesChangedMessage buildUnchecked() {
579        return new StoreCountriesChangedMessageImpl(id, version, createdAt, lastModifiedAt, lastModifiedBy, createdBy,
580            sequenceNumber, resource, resourceVersion, resourceUserProvidedIdentifiers, addedCountries,
581            removedCountries);
582    }
583
584    /**
585     * factory method for an instance of StoreCountriesChangedMessageBuilder
586     * @return builder
587     */
588    public static StoreCountriesChangedMessageBuilder of() {
589        return new StoreCountriesChangedMessageBuilder();
590    }
591
592    /**
593     * create builder for StoreCountriesChangedMessage instance
594     * @param template instance with prefilled values for the builder
595     * @return builder
596     */
597    public static StoreCountriesChangedMessageBuilder of(final StoreCountriesChangedMessage template) {
598        StoreCountriesChangedMessageBuilder builder = new StoreCountriesChangedMessageBuilder();
599        builder.id = template.getId();
600        builder.version = template.getVersion();
601        builder.createdAt = template.getCreatedAt();
602        builder.lastModifiedAt = template.getLastModifiedAt();
603        builder.lastModifiedBy = template.getLastModifiedBy();
604        builder.createdBy = template.getCreatedBy();
605        builder.sequenceNumber = template.getSequenceNumber();
606        builder.resource = template.getResource();
607        builder.resourceVersion = template.getResourceVersion();
608        builder.resourceUserProvidedIdentifiers = template.getResourceUserProvidedIdentifiers();
609        builder.addedCountries = template.getAddedCountries();
610        builder.removedCountries = template.getRemovedCountries();
611        return builder;
612    }
613
614}