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

namespace Google\Cloud\NetApp\V1\BackupVault;

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

/**
 * Retention policy for backups in the backup vault
 *
 * Generated from protobuf message <code>google.cloud.netapp.v1.BackupVault.BackupRetentionPolicy</code>
 */
class BackupRetentionPolicy extends \Google\Protobuf\Internal\Message
{
    /**
     * Required. Minimum retention duration in days for backups in the backup
     * vault.
     *
     * Generated from protobuf field <code>int32 backup_minimum_enforced_retention_days = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    protected $backup_minimum_enforced_retention_days = 0;
    /**
     * Optional. Indicates if the daily backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool daily_backup_immutable = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $daily_backup_immutable = false;
    /**
     * Optional. Indicates if the weekly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool weekly_backup_immutable = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $weekly_backup_immutable = false;
    /**
     * Optional. Indicates if the monthly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool monthly_backup_immutable = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $monthly_backup_immutable = false;
    /**
     * Optional. Indicates if the manual backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool manual_backup_immutable = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    protected $manual_backup_immutable = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int $backup_minimum_enforced_retention_days
     *           Required. Minimum retention duration in days for backups in the backup
     *           vault.
     *     @type bool $daily_backup_immutable
     *           Optional. Indicates if the daily backups are immutable.
     *           At least one of daily_backup_immutable, weekly_backup_immutable,
     *           monthly_backup_immutable and manual_backup_immutable must be true.
     *     @type bool $weekly_backup_immutable
     *           Optional. Indicates if the weekly backups are immutable.
     *           At least one of daily_backup_immutable, weekly_backup_immutable,
     *           monthly_backup_immutable and manual_backup_immutable must be true.
     *     @type bool $monthly_backup_immutable
     *           Optional. Indicates if the monthly backups are immutable.
     *           At least one of daily_backup_immutable, weekly_backup_immutable,
     *           monthly_backup_immutable and manual_backup_immutable must be true.
     *     @type bool $manual_backup_immutable
     *           Optional. Indicates if the manual backups are immutable.
     *           At least one of daily_backup_immutable, weekly_backup_immutable,
     *           monthly_backup_immutable and manual_backup_immutable must be true.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Netapp\V1\BackupVault::initOnce();
        parent::__construct($data);
    }

    /**
     * Required. Minimum retention duration in days for backups in the backup
     * vault.
     *
     * Generated from protobuf field <code>int32 backup_minimum_enforced_retention_days = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return int
     */
    public function getBackupMinimumEnforcedRetentionDays()
    {
        return $this->backup_minimum_enforced_retention_days;
    }

    /**
     * Required. Minimum retention duration in days for backups in the backup
     * vault.
     *
     * Generated from protobuf field <code>int32 backup_minimum_enforced_retention_days = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param int $var
     * @return $this
     */
    public function setBackupMinimumEnforcedRetentionDays($var)
    {
        GPBUtil::checkInt32($var);
        $this->backup_minimum_enforced_retention_days = $var;

        return $this;
    }

    /**
     * Optional. Indicates if the daily backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool daily_backup_immutable = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getDailyBackupImmutable()
    {
        return $this->daily_backup_immutable;
    }

    /**
     * Optional. Indicates if the daily backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool daily_backup_immutable = 2 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setDailyBackupImmutable($var)
    {
        GPBUtil::checkBool($var);
        $this->daily_backup_immutable = $var;

        return $this;
    }

    /**
     * Optional. Indicates if the weekly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool weekly_backup_immutable = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getWeeklyBackupImmutable()
    {
        return $this->weekly_backup_immutable;
    }

    /**
     * Optional. Indicates if the weekly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool weekly_backup_immutable = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setWeeklyBackupImmutable($var)
    {
        GPBUtil::checkBool($var);
        $this->weekly_backup_immutable = $var;

        return $this;
    }

    /**
     * Optional. Indicates if the monthly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool monthly_backup_immutable = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getMonthlyBackupImmutable()
    {
        return $this->monthly_backup_immutable;
    }

    /**
     * Optional. Indicates if the monthly backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool monthly_backup_immutable = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setMonthlyBackupImmutable($var)
    {
        GPBUtil::checkBool($var);
        $this->monthly_backup_immutable = $var;

        return $this;
    }

    /**
     * Optional. Indicates if the manual backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool manual_backup_immutable = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return bool
     */
    public function getManualBackupImmutable()
    {
        return $this->manual_backup_immutable;
    }

    /**
     * Optional. Indicates if the manual backups are immutable.
     * At least one of daily_backup_immutable, weekly_backup_immutable,
     * monthly_backup_immutable and manual_backup_immutable must be true.
     *
     * Generated from protobuf field <code>bool manual_backup_immutable = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @param bool $var
     * @return $this
     */
    public function setManualBackupImmutable($var)
    {
        GPBUtil::checkBool($var);
        $this->manual_backup_immutable = $var;

        return $this;
    }

}


