/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the rds-2014-10-31.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.RDS.Model
{
    /// 
    /// Option settings are the actual settings being applied or configured for that option.
    /// It is used when you modify an option group or describe option groups. For example,
    /// the NATIVE_NETWORK_ENCRYPTION option has a setting called SQLNET.ENCRYPTION_SERVER
    /// that can have several different values.
    /// 
    public partial class OptionSetting
    {
        private string _allowedValues;
        private string _applyType;
        private string _dataType;
        private string _defaultValue;
        private string _description;
        private bool? _isCollection;
        private bool? _isModifiable;
        private string _name;
        private string _value;
        /// 
        /// Gets and sets the property AllowedValues. 
        /// 
        /// The allowed values of the option setting.
        /// 
        /// 
        public string AllowedValues
        {
            get { return this._allowedValues; }
            set { this._allowedValues = value; }
        }
        // Check to see if AllowedValues property is set
        internal bool IsSetAllowedValues()
        {
            return this._allowedValues != null;
        }
        /// 
        /// Gets and sets the property ApplyType. 
        /// 
        /// The DB engine specific parameter type.
        /// 
        /// 
        public string ApplyType
        {
            get { return this._applyType; }
            set { this._applyType = value; }
        }
        // Check to see if ApplyType property is set
        internal bool IsSetApplyType()
        {
            return this._applyType != null;
        }
        /// 
        /// Gets and sets the property DataType. 
        /// 
        /// The data type of the option setting.
        /// 
        /// 
        public string DataType
        {
            get { return this._dataType; }
            set { this._dataType = value; }
        }
        // Check to see if DataType property is set
        internal bool IsSetDataType()
        {
            return this._dataType != null;
        }
        /// 
        /// Gets and sets the property DefaultValue. 
        /// 
        /// The default value of the option setting.
        /// 
        /// 
        public string DefaultValue
        {
            get { return this._defaultValue; }
            set { this._defaultValue = value; }
        }
        // Check to see if DefaultValue property is set
        internal bool IsSetDefaultValue()
        {
            return this._defaultValue != null;
        }
        /// 
        /// Gets and sets the property Description. 
        /// 
        /// The description of the option setting.
        /// 
        /// 
        public string Description
        {
            get { return this._description; }
            set { this._description = value; }
        }
        // Check to see if Description property is set
        internal bool IsSetDescription()
        {
            return this._description != null;
        }
        /// 
        /// Gets and sets the property IsCollection. 
        /// 
        /// Indicates if the option setting is part of a collection.
        /// 
        /// 
        public bool IsCollection
        {
            get { return this._isCollection.GetValueOrDefault(); }
            set { this._isCollection = value; }
        }
        // Check to see if IsCollection property is set
        internal bool IsSetIsCollection()
        {
            return this._isCollection.HasValue; 
        }
        /// 
        /// Gets and sets the property IsModifiable. 
        /// 
        /// A Boolean value that, when true, indicates the option setting can be modified from
        /// the default.
        /// 
        /// 
        public bool IsModifiable
        {
            get { return this._isModifiable.GetValueOrDefault(); }
            set { this._isModifiable = value; }
        }
        // Check to see if IsModifiable property is set
        internal bool IsSetIsModifiable()
        {
            return this._isModifiable.HasValue; 
        }
        /// 
        /// Gets and sets the property Name. 
        /// 
        /// The name of the option that has settings that you can set.
        /// 
        /// 
        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }
        // Check to see if Name property is set
        internal bool IsSetName()
        {
            return this._name != null;
        }
        /// 
        /// Gets and sets the property Value. 
        /// 
        /// The current value of the option setting.
        /// 
        /// 
        public string Value
        {
            get { return this._value; }
            set { this._value = value; }
        }
        // Check to see if Value property is set
        internal bool IsSetValue()
        {
            return this._value != null;
        }
    }
}