001
002package com.commercetools.api.models.review;
003
004import java.util.*;
005
006import io.vrap.rmf.base.client.Builder;
007import io.vrap.rmf.base.client.utils.Generated;
008
009/**
010 * ReviewRatingStatisticsBuilder
011 * <hr>
012 * Example to create an instance using the builder pattern
013 * <div class=code-example>
014 * <pre><code class='java'>
015 *     ReviewRatingStatistics reviewRatingStatistics = ReviewRatingStatistics.builder()
016 *             .averageRating(0.3)
017 *             .highestRating(0.3)
018 *             .lowestRating(0.3)
019 *             .count(1)
020 *             .ratingsDistribution(ratingsDistributionBuilder -> ratingsDistributionBuilder)
021 *             .build()
022 * </code></pre>
023 * </div>
024 */
025@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
026public class ReviewRatingStatisticsBuilder implements Builder<ReviewRatingStatistics> {
027
028    private Double averageRating;
029
030    private Double highestRating;
031
032    private Double lowestRating;
033
034    private Integer count;
035
036    private java.lang.Object ratingsDistribution;
037
038    /**
039     *  <p>Average rating of one target This number is rounded with 5 decimals.</p>
040     * @param averageRating value to be set
041     * @return Builder
042     */
043
044    public ReviewRatingStatisticsBuilder averageRating(final Double averageRating) {
045        this.averageRating = averageRating;
046        return this;
047    }
048
049    /**
050     *  <p>Highest rating of one target</p>
051     * @param highestRating value to be set
052     * @return Builder
053     */
054
055    public ReviewRatingStatisticsBuilder highestRating(final Double highestRating) {
056        this.highestRating = highestRating;
057        return this;
058    }
059
060    /**
061     *  <p>Lowest rating of one target</p>
062     * @param lowestRating value to be set
063     * @return Builder
064     */
065
066    public ReviewRatingStatisticsBuilder lowestRating(final Double lowestRating) {
067        this.lowestRating = lowestRating;
068        return this;
069    }
070
071    /**
072     *  <p>Number of ratings taken into account</p>
073     * @param count value to be set
074     * @return Builder
075     */
076
077    public ReviewRatingStatisticsBuilder count(final Integer count) {
078        this.count = count;
079        return this;
080    }
081
082    /**
083     *  <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>
084     * @param ratingsDistribution value to be set
085     * @return Builder
086     */
087
088    public ReviewRatingStatisticsBuilder ratingsDistribution(final java.lang.Object ratingsDistribution) {
089        this.ratingsDistribution = ratingsDistribution;
090        return this;
091    }
092
093    /**
094     *  <p>Average rating of one target This number is rounded with 5 decimals.</p>
095     * @return averageRating
096     */
097
098    public Double getAverageRating() {
099        return this.averageRating;
100    }
101
102    /**
103     *  <p>Highest rating of one target</p>
104     * @return highestRating
105     */
106
107    public Double getHighestRating() {
108        return this.highestRating;
109    }
110
111    /**
112     *  <p>Lowest rating of one target</p>
113     * @return lowestRating
114     */
115
116    public Double getLowestRating() {
117        return this.lowestRating;
118    }
119
120    /**
121     *  <p>Number of ratings taken into account</p>
122     * @return count
123     */
124
125    public Integer getCount() {
126        return this.count;
127    }
128
129    /**
130     *  <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>
131     * @return ratingsDistribution
132     */
133
134    public java.lang.Object getRatingsDistribution() {
135        return this.ratingsDistribution;
136    }
137
138    /**
139     * builds ReviewRatingStatistics with checking for non-null required values
140     * @return ReviewRatingStatistics
141     */
142    public ReviewRatingStatistics build() {
143        Objects.requireNonNull(averageRating, ReviewRatingStatistics.class + ": averageRating is missing");
144        Objects.requireNonNull(highestRating, ReviewRatingStatistics.class + ": highestRating is missing");
145        Objects.requireNonNull(lowestRating, ReviewRatingStatistics.class + ": lowestRating is missing");
146        Objects.requireNonNull(count, ReviewRatingStatistics.class + ": count is missing");
147        Objects.requireNonNull(ratingsDistribution, ReviewRatingStatistics.class + ": ratingsDistribution is missing");
148        return new ReviewRatingStatisticsImpl(averageRating, highestRating, lowestRating, count, ratingsDistribution);
149    }
150
151    /**
152     * builds ReviewRatingStatistics without checking for non-null required values
153     * @return ReviewRatingStatistics
154     */
155    public ReviewRatingStatistics buildUnchecked() {
156        return new ReviewRatingStatisticsImpl(averageRating, highestRating, lowestRating, count, ratingsDistribution);
157    }
158
159    /**
160     * factory method for an instance of ReviewRatingStatisticsBuilder
161     * @return builder
162     */
163    public static ReviewRatingStatisticsBuilder of() {
164        return new ReviewRatingStatisticsBuilder();
165    }
166
167    /**
168     * create builder for ReviewRatingStatistics instance
169     * @param template instance with prefilled values for the builder
170     * @return builder
171     */
172    public static ReviewRatingStatisticsBuilder of(final ReviewRatingStatistics template) {
173        ReviewRatingStatisticsBuilder builder = new ReviewRatingStatisticsBuilder();
174        builder.averageRating = template.getAverageRating();
175        builder.highestRating = template.getHighestRating();
176        builder.lowestRating = template.getLowestRating();
177        builder.count = template.getCount();
178        builder.ratingsDistribution = template.getRatingsDistribution();
179        return builder;
180    }
181
182}