/*
 * Copyright 2010-2014 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 firehose-2015-08-04.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.KinesisFirehose.Model
{
    /// 
    /// Describes an update for a destination in Amazon Redshift.
    /// 
    public partial class RedshiftDestinationUpdate
    {
        private CloudWatchLoggingOptions _cloudWatchLoggingOptions;
        private string _clusterJDBCURL;
        private CopyCommand _copyCommand;
        private string _password;
        private ProcessingConfiguration _processingConfiguration;
        private RedshiftRetryOptions _retryOptions;
        private string _roleARN;
        private RedshiftS3BackupMode _s3BackupMode;
        private S3DestinationUpdate _s3BackupUpdate;
        private S3DestinationUpdate _s3Update;
        private string _username;
        /// 
        /// Gets and sets the property CloudWatchLoggingOptions. 
        /// 
        /// The Amazon CloudWatch logging options for your delivery stream.
        /// 
        /// 
        public CloudWatchLoggingOptions CloudWatchLoggingOptions
        {
            get { return this._cloudWatchLoggingOptions; }
            set { this._cloudWatchLoggingOptions = value; }
        }
        // Check to see if CloudWatchLoggingOptions property is set
        internal bool IsSetCloudWatchLoggingOptions()
        {
            return this._cloudWatchLoggingOptions != null;
        }
        /// 
        /// Gets and sets the property ClusterJDBCURL. 
        /// 
        /// The database connection string.
        /// 
        /// 
        [AWSProperty(Min=1)]
        public string ClusterJDBCURL
        {
            get { return this._clusterJDBCURL; }
            set { this._clusterJDBCURL = value; }
        }
        // Check to see if ClusterJDBCURL property is set
        internal bool IsSetClusterJDBCURL()
        {
            return this._clusterJDBCURL != null;
        }
        /// 
        /// Gets and sets the property CopyCommand. 
        /// 
        /// The COPY command.
        /// 
        /// 
        public CopyCommand CopyCommand
        {
            get { return this._copyCommand; }
            set { this._copyCommand = value; }
        }
        // Check to see if CopyCommand property is set
        internal bool IsSetCopyCommand()
        {
            return this._copyCommand != null;
        }
        /// 
        /// Gets and sets the property Password. 
        /// 
        /// The user password.
        /// 
        /// 
        [AWSProperty(Min=6)]
        public string Password
        {
            get { return this._password; }
            set { this._password = value; }
        }
        // Check to see if Password property is set
        internal bool IsSetPassword()
        {
            return this._password != null;
        }
        /// 
        /// Gets and sets the property ProcessingConfiguration. 
        /// 
        /// The data processing configuration.
        /// 
        /// 
        public ProcessingConfiguration ProcessingConfiguration
        {
            get { return this._processingConfiguration; }
            set { this._processingConfiguration = value; }
        }
        // Check to see if ProcessingConfiguration property is set
        internal bool IsSetProcessingConfiguration()
        {
            return this._processingConfiguration != null;
        }
        /// 
        /// Gets and sets the property RetryOptions. 
        /// 
        /// The retry behavior in case Kinesis Data Firehose is unable to deliver documents to
        /// Amazon Redshift. Default value is 3600 (60 minutes).
        /// 
        /// 
        public RedshiftRetryOptions RetryOptions
        {
            get { return this._retryOptions; }
            set { this._retryOptions = value; }
        }
        // Check to see if RetryOptions property is set
        internal bool IsSetRetryOptions()
        {
            return this._retryOptions != null;
        }
        /// 
        /// Gets and sets the property RoleARN. 
        /// 
        /// The Amazon Resource Name (ARN) of the AWS credentials. For more information, see Amazon
        /// Resource Names (ARNs) and AWS Service Namespaces.
        /// 
        /// 
        [AWSProperty(Min=1, Max=512)]
        public string RoleARN
        {
            get { return this._roleARN; }
            set { this._roleARN = value; }
        }
        // Check to see if RoleARN property is set
        internal bool IsSetRoleARN()
        {
            return this._roleARN != null;
        }
        /// 
        /// Gets and sets the property S3BackupMode. 
        /// 
        /// The Amazon S3 backup mode.
        /// 
        /// 
        public RedshiftS3BackupMode S3BackupMode
        {
            get { return this._s3BackupMode; }
            set { this._s3BackupMode = value; }
        }
        // Check to see if S3BackupMode property is set
        internal bool IsSetS3BackupMode()
        {
            return this._s3BackupMode != null;
        }
        /// 
        /// Gets and sets the property S3BackupUpdate. 
        /// 
        /// The Amazon S3 destination for backup.
        /// 
        /// 
        public S3DestinationUpdate S3BackupUpdate
        {
            get { return this._s3BackupUpdate; }
            set { this._s3BackupUpdate = value; }
        }
        // Check to see if S3BackupUpdate property is set
        internal bool IsSetS3BackupUpdate()
        {
            return this._s3BackupUpdate != null;
        }
        /// 
        /// Gets and sets the property S3Update. 
        /// 
        /// The Amazon S3 destination.
        /// 
        ///  
        /// 
        /// The compression formats SNAPPY or ZIP cannot be specified
        /// in RedshiftDestinationUpdate.S3Update because the Amazon Redshift COPY
        /// operation that reads from the S3 bucket doesn't support these compression formats.
        /// 
        /// 
        public S3DestinationUpdate S3Update
        {
            get { return this._s3Update; }
            set { this._s3Update = value; }
        }
        // Check to see if S3Update property is set
        internal bool IsSetS3Update()
        {
            return this._s3Update != null;
        }
        /// 
        /// Gets and sets the property Username. 
        /// 
        /// The name of the user.
        /// 
        /// 
        [AWSProperty(Min=1)]
        public string Username
        {
            get { return this._username; }
            set { this._username = value; }
        }
        // Check to see if Username property is set
        internal bool IsSetUsername()
        {
            return this._username != null;
        }
    }
}