001
002package com.commercetools.ml.models.general_category_recommendations;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007import java.util.stream.Collectors;
008
009import javax.annotation.Nullable;
010import javax.validation.Valid;
011import javax.validation.constraints.NotNull;
012
013import com.fasterxml.jackson.annotation.*;
014import com.fasterxml.jackson.databind.annotation.*;
015
016import io.vrap.rmf.base.client.utils.Generated;
017
018/**
019 * GeneralCategoryRecommendationPagedQueryResponse
020 *
021 * <hr>
022 * Example to create an instance using the builder pattern
023 * <div class=code-example>
024 * <pre><code class='java'>
025 *     GeneralCategoryRecommendationPagedQueryResponse generalCategoryRecommendationPagedQueryResponse = GeneralCategoryRecommendationPagedQueryResponse.builder()
026 *             .count(0.3)
027 *             .total(0.3)
028 *             .offset(0.3)
029 *             .plusResults(resultsBuilder -> resultsBuilder)
030 *             .build()
031 * </code></pre>
032 * </div>
033 */
034@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
035@JsonDeserialize(as = GeneralCategoryRecommendationPagedQueryResponseImpl.class)
036public interface GeneralCategoryRecommendationPagedQueryResponse {
037
038    /**
039     *
040     * @return count
041     */
042    @NotNull
043    @JsonProperty("count")
044    public Long getCount();
045
046    /**
047     *
048     * @return total
049     */
050    @NotNull
051    @JsonProperty("total")
052    public Long getTotal();
053
054    /**
055     *  <p>Number of elements skipped.</p>
056     * @return offset
057     */
058    @NotNull
059    @JsonProperty("offset")
060    public Long getOffset();
061
062    /**
063     *
064     * @return results
065     */
066    @NotNull
067    @Valid
068    @JsonProperty("results")
069    public List<GeneralCategoryRecommendation> getResults();
070
071    /**
072     * set count
073     * @param count value to be set
074     */
075
076    public void setCount(final Long count);
077
078    /**
079     * set total
080     * @param total value to be set
081     */
082
083    public void setTotal(final Long total);
084
085    /**
086     *  <p>Number of elements skipped.</p>
087     * @param offset value to be set
088     */
089
090    public void setOffset(final Long offset);
091
092    /**
093     * set results
094     * @param results values to be set
095     */
096
097    @JsonIgnore
098    public void setResults(final GeneralCategoryRecommendation... results);
099
100    /**
101     * set results
102     * @param results values to be set
103     */
104
105    public void setResults(final List<GeneralCategoryRecommendation> results);
106
107    /**
108     * factory method
109     * @return instance of GeneralCategoryRecommendationPagedQueryResponse
110     */
111    public static GeneralCategoryRecommendationPagedQueryResponse of() {
112        return new GeneralCategoryRecommendationPagedQueryResponseImpl();
113    }
114
115    /**
116     * factory method to create a shallow copy GeneralCategoryRecommendationPagedQueryResponse
117     * @param template instance to be copied
118     * @return copy instance
119     */
120    public static GeneralCategoryRecommendationPagedQueryResponse of(
121            final GeneralCategoryRecommendationPagedQueryResponse template) {
122        GeneralCategoryRecommendationPagedQueryResponseImpl instance = new GeneralCategoryRecommendationPagedQueryResponseImpl();
123        instance.setCount(template.getCount());
124        instance.setTotal(template.getTotal());
125        instance.setOffset(template.getOffset());
126        instance.setResults(template.getResults());
127        return instance;
128    }
129
130    /**
131     * factory method to create a deep copy of GeneralCategoryRecommendationPagedQueryResponse
132     * @param template instance to be copied
133     * @return copy instance
134     */
135    @Nullable
136    public static GeneralCategoryRecommendationPagedQueryResponse deepCopy(
137            @Nullable final GeneralCategoryRecommendationPagedQueryResponse template) {
138        if (template == null) {
139            return null;
140        }
141        GeneralCategoryRecommendationPagedQueryResponseImpl instance = new GeneralCategoryRecommendationPagedQueryResponseImpl();
142        instance.setCount(template.getCount());
143        instance.setTotal(template.getTotal());
144        instance.setOffset(template.getOffset());
145        instance.setResults(Optional.ofNullable(template.getResults())
146                .map(t -> t.stream()
147                        .map(
148                            com.commercetools.ml.models.general_category_recommendations.GeneralCategoryRecommendation::deepCopy)
149                        .collect(Collectors.toList()))
150                .orElse(null));
151        return instance;
152    }
153
154    /**
155     * builder factory method for GeneralCategoryRecommendationPagedQueryResponse
156     * @return builder
157     */
158    public static GeneralCategoryRecommendationPagedQueryResponseBuilder builder() {
159        return GeneralCategoryRecommendationPagedQueryResponseBuilder.of();
160    }
161
162    /**
163     * create builder for GeneralCategoryRecommendationPagedQueryResponse instance
164     * @param template instance with prefilled values for the builder
165     * @return builder
166     */
167    public static GeneralCategoryRecommendationPagedQueryResponseBuilder builder(
168            final GeneralCategoryRecommendationPagedQueryResponse template) {
169        return GeneralCategoryRecommendationPagedQueryResponseBuilder.of(template);
170    }
171
172    /**
173     * accessor map function
174     * @param <T> mapped type
175     * @param helper function to map the object
176     * @return mapped value
177     */
178    default <T> T withGeneralCategoryRecommendationPagedQueryResponse(
179            Function<GeneralCategoryRecommendationPagedQueryResponse, T> helper) {
180        return helper.apply(this);
181    }
182
183    /**
184     * gives a TypeReference for usage with Jackson DataBind
185     * @return TypeReference
186     */
187    public static com.fasterxml.jackson.core.type.TypeReference<GeneralCategoryRecommendationPagedQueryResponse> typeReference() {
188        return new com.fasterxml.jackson.core.type.TypeReference<GeneralCategoryRecommendationPagedQueryResponse>() {
189            @Override
190            public String toString() {
191                return "TypeReference<GeneralCategoryRecommendationPagedQueryResponse>";
192            }
193        };
194    }
195}