<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/dataplex/v1/data_quality.proto

namespace Google\Cloud\Dataplex\V1\DataQualityRule;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Evaluates whether the column aggregate statistic lies between a specified
 * range.
 *
 * Generated from protobuf message <code>google.cloud.dataplex.v1.DataQualityRule.StatisticRangeExpectation</code>
 */
class StatisticRangeExpectation extends \Google\Protobuf\Internal\Message
{
    /**
     * Generated from protobuf field <code>.google.cloud.dataplex.v1.DataQualityRule.StatisticRangeExpectation.ColumnStatistic statistic = 1;</code>
     */
    private $statistic = 0;
    /**
     * The minimum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string min_value = 2;</code>
     */
    private $min_value = '';
    /**
     * The maximum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string max_value = 3;</code>
     */
    private $max_value = '';
    /**
     * Whether column statistic needs to be strictly greater than ('>')
     * the minimum, or if equality is allowed. Only relevant if a min_value has
     * been defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_min_enabled = 4;</code>
     */
    private $strict_min_enabled = false;
    /**
     * Whether column statistic needs to be strictly lesser than ('<') the
     * maximum, or if equality is allowed. Only relevant if a max_value has been
     * defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_max_enabled = 5;</code>
     */
    private $strict_max_enabled = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int $statistic
     *     @type string $min_value
     *           The minimum column statistic value allowed for a row to pass this
     *           validation.
     *           At least one of min_value and max_value need to be provided.
     *     @type string $max_value
     *           The maximum column statistic value allowed for a row to pass this
     *           validation.
     *           At least one of min_value and max_value need to be provided.
     *     @type bool $strict_min_enabled
     *           Whether column statistic needs to be strictly greater than ('>')
     *           the minimum, or if equality is allowed. Only relevant if a min_value has
     *           been defined. Default = false.
     *     @type bool $strict_max_enabled
     *           Whether column statistic needs to be strictly lesser than ('<') the
     *           maximum, or if equality is allowed. Only relevant if a max_value has been
     *           defined. Default = false.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Dataplex\V1\DataQuality::initOnce();
        parent::__construct($data);
    }

    /**
     * Generated from protobuf field <code>.google.cloud.dataplex.v1.DataQualityRule.StatisticRangeExpectation.ColumnStatistic statistic = 1;</code>
     * @return int
     */
    public function getStatistic()
    {
        return $this->statistic;
    }

    /**
     * Generated from protobuf field <code>.google.cloud.dataplex.v1.DataQualityRule.StatisticRangeExpectation.ColumnStatistic statistic = 1;</code>
     * @param int $var
     * @return $this
     */
    public function setStatistic($var)
    {
        GPBUtil::checkEnum($var, \Google\Cloud\Dataplex\V1\DataQualityRule\StatisticRangeExpectation\ColumnStatistic::class);
        $this->statistic = $var;

        return $this;
    }

    /**
     * The minimum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string min_value = 2;</code>
     * @return string
     */
    public function getMinValue()
    {
        return $this->min_value;
    }

    /**
     * The minimum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string min_value = 2;</code>
     * @param string $var
     * @return $this
     */
    public function setMinValue($var)
    {
        GPBUtil::checkString($var, True);
        $this->min_value = $var;

        return $this;
    }

    /**
     * The maximum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string max_value = 3;</code>
     * @return string
     */
    public function getMaxValue()
    {
        return $this->max_value;
    }

    /**
     * The maximum column statistic value allowed for a row to pass this
     * validation.
     * At least one of min_value and max_value need to be provided.
     *
     * Generated from protobuf field <code>string max_value = 3;</code>
     * @param string $var
     * @return $this
     */
    public function setMaxValue($var)
    {
        GPBUtil::checkString($var, True);
        $this->max_value = $var;

        return $this;
    }

    /**
     * Whether column statistic needs to be strictly greater than ('>')
     * the minimum, or if equality is allowed. Only relevant if a min_value has
     * been defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_min_enabled = 4;</code>
     * @return bool
     */
    public function getStrictMinEnabled()
    {
        return $this->strict_min_enabled;
    }

    /**
     * Whether column statistic needs to be strictly greater than ('>')
     * the minimum, or if equality is allowed. Only relevant if a min_value has
     * been defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_min_enabled = 4;</code>
     * @param bool $var
     * @return $this
     */
    public function setStrictMinEnabled($var)
    {
        GPBUtil::checkBool($var);
        $this->strict_min_enabled = $var;

        return $this;
    }

    /**
     * Whether column statistic needs to be strictly lesser than ('<') the
     * maximum, or if equality is allowed. Only relevant if a max_value has been
     * defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_max_enabled = 5;</code>
     * @return bool
     */
    public function getStrictMaxEnabled()
    {
        return $this->strict_max_enabled;
    }

    /**
     * Whether column statistic needs to be strictly lesser than ('<') the
     * maximum, or if equality is allowed. Only relevant if a max_value has been
     * defined. Default = false.
     *
     * Generated from protobuf field <code>bool strict_max_enabled = 5;</code>
     * @param bool $var
     * @return $this
     */
    public function setStrictMaxEnabled($var)
    {
        GPBUtil::checkBool($var);
        $this->strict_max_enabled = $var;

        return $this;
    }

}


