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