001
002package com.commercetools.api.models.review;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009import javax.validation.Valid;
010import javax.validation.constraints.NotNull;
011
012import com.fasterxml.jackson.annotation.*;
013import com.fasterxml.jackson.databind.annotation.*;
014
015import io.vrap.rmf.base.client.utils.Generated;
016
017/**
018 * ReviewRatingStatistics
019 *
020 * <hr>
021 * Example to create an instance using the builder pattern
022 * <div class=code-example>
023 * <pre><code class='java'>
024 *     ReviewRatingStatistics reviewRatingStatistics = ReviewRatingStatistics.builder()
025 *             .averageRating(0.3)
026 *             .highestRating(0.3)
027 *             .lowestRating(0.3)
028 *             .count(1)
029 *             .ratingsDistribution(ratingsDistributionBuilder -> ratingsDistributionBuilder)
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 = ReviewRatingStatisticsImpl.class)
036public interface ReviewRatingStatistics {
037
038    /**
039     *  <p>Average rating of one target This number is rounded with 5 decimals.</p>
040     * @return averageRating
041     */
042    @NotNull
043    @JsonProperty("averageRating")
044    public Double getAverageRating();
045
046    /**
047     *  <p>Highest rating of one target</p>
048     * @return highestRating
049     */
050    @NotNull
051    @JsonProperty("highestRating")
052    public Double getHighestRating();
053
054    /**
055     *  <p>Lowest rating of one target</p>
056     * @return lowestRating
057     */
058    @NotNull
059    @JsonProperty("lowestRating")
060    public Double getLowestRating();
061
062    /**
063     *  <p>Number of ratings taken into account</p>
064     * @return count
065     */
066    @NotNull
067    @JsonProperty("count")
068    public Integer getCount();
069
070    /**
071     *  <p>Full distribution of the ratings. The keys are the different ratings and the values are the count of reviews having this rating. Only the used ratings appear in this object.</p>
072     * @return ratingsDistribution
073     */
074    @NotNull
075    @Valid
076    @JsonProperty("ratingsDistribution")
077    public Object getRatingsDistribution();
078
079    /**
080     *  <p>Average rating of one target This number is rounded with 5 decimals.</p>
081     * @param averageRating value to be set
082     */
083
084    public void setAverageRating(final Double averageRating);
085
086    /**
087     *  <p>Highest rating of one target</p>
088     * @param highestRating value to be set
089     */
090
091    public void setHighestRating(final Double highestRating);
092
093    /**
094     *  <p>Lowest rating of one target</p>
095     * @param lowestRating value to be set
096     */
097
098    public void setLowestRating(final Double lowestRating);
099
100    /**
101     *  <p>Number of ratings taken into account</p>
102     * @param count value to be set
103     */
104
105    public void setCount(final Integer count);
106
107    /**
108     *  <p>Full distribution of the ratings. The keys are the different ratings and the values are the count of reviews having this rating. Only the used ratings appear in this object.</p>
109     * @param ratingsDistribution value to be set
110     */
111
112    public void setRatingsDistribution(final Object ratingsDistribution);
113
114    /**
115     * factory method
116     * @return instance of ReviewRatingStatistics
117     */
118    public static ReviewRatingStatistics of() {
119        return new ReviewRatingStatisticsImpl();
120    }
121
122    /**
123     * factory method to create a shallow copy ReviewRatingStatistics
124     * @param template instance to be copied
125     * @return copy instance
126     */
127    public static ReviewRatingStatistics of(final ReviewRatingStatistics template) {
128        ReviewRatingStatisticsImpl instance = new ReviewRatingStatisticsImpl();
129        instance.setAverageRating(template.getAverageRating());
130        instance.setHighestRating(template.getHighestRating());
131        instance.setLowestRating(template.getLowestRating());
132        instance.setCount(template.getCount());
133        instance.setRatingsDistribution(template.getRatingsDistribution());
134        return instance;
135    }
136
137    /**
138     * factory method to create a deep copy of ReviewRatingStatistics
139     * @param template instance to be copied
140     * @return copy instance
141     */
142    @Nullable
143    public static ReviewRatingStatistics deepCopy(@Nullable final ReviewRatingStatistics template) {
144        if (template == null) {
145            return null;
146        }
147        ReviewRatingStatisticsImpl instance = new ReviewRatingStatisticsImpl();
148        instance.setAverageRating(template.getAverageRating());
149        instance.setHighestRating(template.getHighestRating());
150        instance.setLowestRating(template.getLowestRating());
151        instance.setCount(template.getCount());
152        instance.setRatingsDistribution(template.getRatingsDistribution());
153        return instance;
154    }
155
156    /**
157     * builder factory method for ReviewRatingStatistics
158     * @return builder
159     */
160    public static ReviewRatingStatisticsBuilder builder() {
161        return ReviewRatingStatisticsBuilder.of();
162    }
163
164    /**
165     * create builder for ReviewRatingStatistics instance
166     * @param template instance with prefilled values for the builder
167     * @return builder
168     */
169    public static ReviewRatingStatisticsBuilder builder(final ReviewRatingStatistics template) {
170        return ReviewRatingStatisticsBuilder.of(template);
171    }
172
173    /**
174     * accessor map function
175     * @param <T> mapped type
176     * @param helper function to map the object
177     * @return mapped value
178     */
179    default <T> T withReviewRatingStatistics(Function<ReviewRatingStatistics, 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<ReviewRatingStatistics> typeReference() {
188        return new com.fasterxml.jackson.core.type.TypeReference<ReviewRatingStatistics>() {
189            @Override
190            public String toString() {
191                return "TypeReference<ReviewRatingStatistics>";
192            }
193        };
194    }
195}