001
002package com.commercetools.api.models.order;
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 * OrderSearchSortingBuilder
014 * <hr>
015 * Example to create an instance using the builder pattern
016 * <div class=code-example>
017 * <pre><code class='java'>
018 *     OrderSearchSorting orderSearchSorting = OrderSearchSorting.builder()
019 *             .field("{field}")
020 *             .build()
021 * </code></pre>
022 * </div>
023 */
024@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
025public class OrderSearchSortingBuilder implements Builder<OrderSearchSorting> {
026
027    private String field;
028
029    @Nullable
030    private String language;
031
032    @Nullable
033    private com.commercetools.api.models.order.OrderSearchSortOrder order;
034
035    @Nullable
036    private com.commercetools.api.models.order.OrderSearchSortMode mode;
037
038    @Nullable
039    private com.commercetools.api.models.order.OrderSearchQueryExpression filter;
040
041    /**
042     * set the value to the field
043     * @param field value to be set
044     * @return Builder
045     */
046
047    public OrderSearchSortingBuilder field(final String field) {
048        this.field = field;
049        return this;
050    }
051
052    /**
053     * set the value to the language
054     * @param language value to be set
055     * @return Builder
056     */
057
058    public OrderSearchSortingBuilder language(@Nullable final String language) {
059        this.language = language;
060        return this;
061    }
062
063    /**
064     * set the value to the order
065     * @param order value to be set
066     * @return Builder
067     */
068
069    public OrderSearchSortingBuilder order(
070            @Nullable final com.commercetools.api.models.order.OrderSearchSortOrder order) {
071        this.order = order;
072        return this;
073    }
074
075    /**
076     * set the value to the mode
077     * @param mode value to be set
078     * @return Builder
079     */
080
081    public OrderSearchSortingBuilder mode(@Nullable final com.commercetools.api.models.order.OrderSearchSortMode mode) {
082        this.mode = mode;
083        return this;
084    }
085
086    /**
087     * set the value to the filter using the builder function
088     * @param builder function to build the filter value
089     * @return Builder
090     */
091
092    public OrderSearchSortingBuilder filter(
093            Function<com.commercetools.api.models.order.OrderSearchQueryExpressionBuilder, com.commercetools.api.models.order.OrderSearchQueryExpressionBuilder> builder) {
094        this.filter = builder.apply(com.commercetools.api.models.order.OrderSearchQueryExpressionBuilder.of()).build();
095        return this;
096    }
097
098    /**
099     * set the value to the filter using the builder function
100     * @param builder function to build the filter value
101     * @return Builder
102     */
103
104    public OrderSearchSortingBuilder withFilter(
105            Function<com.commercetools.api.models.order.OrderSearchQueryExpressionBuilder, com.commercetools.api.models.order.OrderSearchQueryExpression> builder) {
106        this.filter = builder.apply(com.commercetools.api.models.order.OrderSearchQueryExpressionBuilder.of());
107        return this;
108    }
109
110    /**
111     * set the value to the filter
112     * @param filter value to be set
113     * @return Builder
114     */
115
116    public OrderSearchSortingBuilder filter(
117            @Nullable final com.commercetools.api.models.order.OrderSearchQueryExpression filter) {
118        this.filter = filter;
119        return this;
120    }
121
122    /**
123     * value of field}
124     * @return field
125     */
126
127    public String getField() {
128        return this.field;
129    }
130
131    /**
132     * value of language}
133     * @return language
134     */
135
136    @Nullable
137    public String getLanguage() {
138        return this.language;
139    }
140
141    /**
142     * value of order}
143     * @return order
144     */
145
146    @Nullable
147    public com.commercetools.api.models.order.OrderSearchSortOrder getOrder() {
148        return this.order;
149    }
150
151    /**
152     * value of mode}
153     * @return mode
154     */
155
156    @Nullable
157    public com.commercetools.api.models.order.OrderSearchSortMode getMode() {
158        return this.mode;
159    }
160
161    /**
162     * value of filter}
163     * @return filter
164     */
165
166    @Nullable
167    public com.commercetools.api.models.order.OrderSearchQueryExpression getFilter() {
168        return this.filter;
169    }
170
171    /**
172     * builds OrderSearchSorting with checking for non-null required values
173     * @return OrderSearchSorting
174     */
175    public OrderSearchSorting build() {
176        Objects.requireNonNull(field, OrderSearchSorting.class + ": field is missing");
177        return new OrderSearchSortingImpl(field, language, order, mode, filter);
178    }
179
180    /**
181     * builds OrderSearchSorting without checking for non-null required values
182     * @return OrderSearchSorting
183     */
184    public OrderSearchSorting buildUnchecked() {
185        return new OrderSearchSortingImpl(field, language, order, mode, filter);
186    }
187
188    /**
189     * factory method for an instance of OrderSearchSortingBuilder
190     * @return builder
191     */
192    public static OrderSearchSortingBuilder of() {
193        return new OrderSearchSortingBuilder();
194    }
195
196    /**
197     * create builder for OrderSearchSorting instance
198     * @param template instance with prefilled values for the builder
199     * @return builder
200     */
201    public static OrderSearchSortingBuilder of(final OrderSearchSorting template) {
202        OrderSearchSortingBuilder builder = new OrderSearchSortingBuilder();
203        builder.field = template.getField();
204        builder.language = template.getLanguage();
205        builder.order = template.getOrder();
206        builder.mode = template.getMode();
207        builder.filter = template.getFilter();
208        return builder;
209    }
210
211}