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     * set the value to the state
037     * @param state value to be set
038     * @return Builder
039     */
040
041    public SimilarProductsTaskStatusBuilder state(final com.commercetools.ml.models.common.TaskStatusEnum state) {
042        this.state = state;
043        return this;
044    }
045
046    /**
047     *  <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>
048     * @param expires value to be set
049     * @return Builder
050     */
051
052    public SimilarProductsTaskStatusBuilder expires(@Nullable final java.time.ZonedDateTime expires) {
053        this.expires = expires;
054        return this;
055    }
056
057    /**
058     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
059     * @param builder function to build the result value
060     * @return Builder
061     */
062
063    public SimilarProductsTaskStatusBuilder result(
064            Function<com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder, com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder> builder) {
065        this.result = builder
066                .apply(com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder.of())
067                .build();
068        return this;
069    }
070
071    /**
072     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
073     * @param builder function to build the result value
074     * @return Builder
075     */
076
077    public SimilarProductsTaskStatusBuilder withResult(
078            Function<com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder, com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult> builder) {
079        this.result = builder
080                .apply(com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResultBuilder.of());
081        return this;
082    }
083
084    /**
085     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
086     * @param result value to be set
087     * @return Builder
088     */
089
090    public SimilarProductsTaskStatusBuilder result(
091            final com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult result) {
092        this.result = result;
093        return this;
094    }
095
096    /**
097     * value of state}
098     * @return state
099     */
100
101    public com.commercetools.ml.models.common.TaskStatusEnum getState() {
102        return this.state;
103    }
104
105    /**
106     *  <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>
107     * @return expires
108     */
109
110    @Nullable
111    public java.time.ZonedDateTime getExpires() {
112        return this.expires;
113    }
114
115    /**
116     *  <p>The response to an asynchronous request. The type depends on the request initiated. Only populated when the status is <code>SUCCESS</code>.</p>
117     * @return result
118     */
119
120    public com.commercetools.ml.models.similar_products.SimilarProductsPagedQueryResult getResult() {
121        return this.result;
122    }
123
124    /**
125     * builds SimilarProductsTaskStatus with checking for non-null required values
126     * @return SimilarProductsTaskStatus
127     */
128    public SimilarProductsTaskStatus build() {
129        Objects.requireNonNull(state, SimilarProductsTaskStatus.class + ": state is missing");
130        Objects.requireNonNull(result, SimilarProductsTaskStatus.class + ": result is missing");
131        return new SimilarProductsTaskStatusImpl(state, expires, result);
132    }
133
134    /**
135     * builds SimilarProductsTaskStatus without checking for non-null required values
136     * @return SimilarProductsTaskStatus
137     */
138    public SimilarProductsTaskStatus buildUnchecked() {
139        return new SimilarProductsTaskStatusImpl(state, expires, result);
140    }
141
142    /**
143     * factory method for an instance of SimilarProductsTaskStatusBuilder
144     * @return builder
145     */
146    public static SimilarProductsTaskStatusBuilder of() {
147        return new SimilarProductsTaskStatusBuilder();
148    }
149
150    /**
151     * create builder for SimilarProductsTaskStatus instance
152     * @param template instance with prefilled values for the builder
153     * @return builder
154     */
155    public static SimilarProductsTaskStatusBuilder of(final SimilarProductsTaskStatus template) {
156        SimilarProductsTaskStatusBuilder builder = new SimilarProductsTaskStatusBuilder();
157        builder.state = template.getState();
158        builder.expires = template.getExpires();
159        builder.result = template.getResult();
160        return builder;
161    }
162
163}