001
002package com.commercetools.ml.models.similar_products;
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 * SimilarProductsTaskStatusBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     SimilarProductsTaskStatus similarProductsTaskStatus = SimilarProductsTaskStatus.builder()
019 *             .state(TaskStatusEnum.PENDING)
020 *             .result(resultBuilder -> resultBuilder)
021 *             .build()
022 * </code></pre>
023 * </div>
024 */
025@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
026public class SimilarProductsTaskStatusBuilder implements Builder<SimilarProductsTaskStatus> {
027
028    private com.commercetools.ml.models.common.TaskStatusEnum state;
029
030    @Nullable
031    private java.time.ZonedDateTime expires;
032
033    private com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult result;
034
035    /**
036     *
037     */
038
039    public SimilarProductsTaskStatusBuilder state(final com.commercetools.ml.models.common.TaskStatusEnum state) {
040        this.state = state;
041        return this;
042    }
043
044    /**
045     *  <p>The expiry date of the result. You cannot access the result after the expiry date. Default: 1 day after the result first becomes available. This is only available when the TaskStatus state is SUCCESS.</p>
046     */
047
048    public SimilarProductsTaskStatusBuilder expires(@Nullable final java.time.ZonedDateTime expires) {
049        this.expires = expires;
050        return this;
051    }
052
053    /**
054     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
055     */
056
057    public SimilarProductsTaskStatusBuilder result(
058            Function<com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder, com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder> builder) {
059        this.result = builder
060                .apply(com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder.of())
061                .build();
062        return this;
063    }
064
065    /**
066     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
067     */
068
069    public SimilarProductsTaskStatusBuilder result(
070            final com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult result) {
071        this.result = result;
072        return this;
073    }
074
075    public com.commercetools.ml.models.common.TaskStatusEnum getState() {
076        return this.state;
077    }
078
079    @Nullable
080    public java.time.ZonedDateTime getExpires() {
081        return this.expires;
082    }
083
084    public com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult getResult() {
085        return this.result;
086    }
087
088    public SimilarProductsTaskStatus build() {
089        Objects.requireNonNull(state, SimilarProductsTaskStatus.class + ": state is missing");
090        Objects.requireNonNull(result, SimilarProductsTaskStatus.class + ": result is missing");
091        return new SimilarProductsTaskStatusImpl(state, expires, result);
092    }
093
094    /**
095     * builds SimilarProductsTaskStatus without checking for non null required values
096     */
097    public SimilarProductsTaskStatus buildUnchecked() {
098        return new SimilarProductsTaskStatusImpl(state, expires, result);
099    }
100
101    public static SimilarProductsTaskStatusBuilder of() {
102        return new SimilarProductsTaskStatusBuilder();
103    }
104
105    public static SimilarProductsTaskStatusBuilder of(final SimilarProductsTaskStatus template) {
106        SimilarProductsTaskStatusBuilder builder = new SimilarProductsTaskStatusBuilder();
107        builder.state = template.getState();
108        builder.expires = template.getExpires();
109        builder.result = template.getResult();
110        return builder;
111    }
112
113}