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}