001package org.javasimon.callback.quantiles;
002
003/**
004 * Snapshot of {@link Buckets}
005 *
006 * @author gquintana
007 */
008public class BucketsSample {
009        private final BucketSample[] buckets;
010        /**
011         * Median (50% percentile)
012         */
013        private final Double median;
014        /**
015         * 90% percentile
016         */
017        private final Double percentile90;
018
019        public BucketsSample(BucketSample[] buckets, Double median, Double quantile90) {
020                this.buckets = buckets;
021                this.median = median;
022                this.percentile90 = quantile90;
023        }
024
025        public BucketSample[] getBuckets() {
026                return buckets;
027        }
028
029        public Double getMedian() {
030                return median;
031        }
032
033        public Double getPercentile90() {
034                return percentile90;
035        }
036
037        private boolean hasNoBuckets() {
038                return buckets == null || buckets.length == 0;
039        }
040
041        public Integer getMaxCount() {
042                Integer maxCount;
043                if (hasNoBuckets()) {
044                        return null;
045                } else {
046                        maxCount = 0;
047                        for (BucketSample bucket : buckets) {
048                                maxCount = Math.max(bucket.getCount(), maxCount);
049                        }
050                }
051                return maxCount;
052        }
053
054        public Integer getTotalCount() {
055                Integer totalCount;
056                if (hasNoBuckets()) {
057                        return null;
058                } else {
059                        totalCount = 0;
060                        for (BucketSample bucket : buckets) {
061                                totalCount += bucket.getCount();
062                        }
063                }
064                return totalCount;
065        }
066}