All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mydotey.quantile.facade.QuantileEstimators Maven / Gradle / Ivy

The newest version!
package org.mydotey.quantile.facade;

import java.util.Comparator;
import java.util.function.Supplier;

import org.mydotey.quantile.QuantileEstimator;
import org.mydotey.quantile.ckms.CkmsQuantileEstimator;
import org.mydotey.quantile.ckms.CkmsQuantileEstimatorConfig;
import org.mydotey.quantile.classic.ClassicQuantileEstimator;
import org.mydotey.quantile.classic.ClassicQuantileEstimatorConfig;
import org.mydotey.quantile.concurrent.ConcurrencyDecorator;
import org.mydotey.quantile.gk.GkQuantileEstimator;
import org.mydotey.quantile.gk.GkQuantileEstimatorConfig;
import org.mydotey.quantile.kll.KllQuantileEstimator;
import org.mydotey.quantile.kll.KllQuantileEstimatorConfig;
import org.mydotey.quantile.timewindow.TimeWindowQuantileEstimator;
import org.mydotey.quantile.timewindow.TimeWindowQuantileEstimatorConfig;
import org.mydotey.quantile.validation.ValidationDecorator;
import org.mydotey.quantile.value.Calculator;

/**
 * @author koqizhao
 *
 * Apr 1, 2018
 */
public class QuantileEstimators {

    protected QuantileEstimators() {

    }

    public static  QuantileEstimator newClassicEstimator(Comparator comparator, Calculator calculator) {
        QuantileEstimator quantileEstimator = new ClassicQuantileEstimator<>(
                new ClassicQuantileEstimatorConfig<>(comparator, calculator));
        return new ValidationDecorator<>(quantileEstimator);
    }

    /**
     * @param k    first compactor size
     * c default to 2.0 / 3.0
     */
    public static  QuantileEstimator newKllEstimator(Comparator comparator, int k) {
        QuantileEstimator quantileEstimator = new KllQuantileEstimator<>(
                new KllQuantileEstimatorConfig<>(comparator, k));
        return new ValidationDecorator<>(quantileEstimator);
    }

    /**
     * @param k    first compactor size
     * @param c    compaction rate
     */
    public static  QuantileEstimator newKllEstimator(Comparator comparator, int k, double c) {
        QuantileEstimator quantileEstimator = new KllQuantileEstimator<>(
                new KllQuantileEstimatorConfig<>(comparator, k, c));
        return new ValidationDecorator<>(quantileEstimator);
    }

    public static  CkmsQuantileEstimatorConfig.Builder newCkmsEstimatorConfigBuilder() {
        return CkmsQuantileEstimatorConfig. newBuilder();
    }

    public static  QuantileEstimator newCkmsEstimator(CkmsQuantileEstimatorConfig config) {
        QuantileEstimator quantileEstimator = new CkmsQuantileEstimator<>(config);
        return new ValidationDecorator<>(quantileEstimator);
    }

    public static  QuantileEstimator newGkEstimator(Comparator comparator, double error,
            int compactThreshold) {
        QuantileEstimator quantileEstimator = new GkQuantileEstimator<>(
                new GkQuantileEstimatorConfig<>(comparator, error, compactThreshold));
        return new ValidationDecorator<>(quantileEstimator);
    }

    public static  QuantileEstimator newTimeWindowEstimator(
            Supplier> quantileEstimatorSupplier, long timeWindowMillis,
            long rotateDurationMillis) {
        return new TimeWindowQuantileEstimator<>(new TimeWindowQuantileEstimatorConfig<>(quantileEstimatorSupplier,
                timeWindowMillis, rotateDurationMillis));
    }

    public static  QuantileEstimator newConcurrentEstimator(QuantileEstimator quantileEstimator) {
        return new ConcurrencyDecorator<>(quantileEstimator);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy