/*
 * 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 lakeformation-2017-03-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.LakeFormation.Model
{
    /// 
    /// A new object to add to the governed table.
    /// 
    public partial class AddObjectInput
    {
        private string _eTag;
        private List _partitionValues = new List();
        private long? _size;
        private string _uri;
        /// 
        /// Gets and sets the property ETag. 
        /// 
        /// The Amazon S3 ETag of the object. Returned by GetTableObjects for validation
        /// and used to identify changes to the underlying data.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=255)]
        public string ETag
        {
            get { return this._eTag; }
            set { this._eTag = value; }
        }
        // Check to see if ETag property is set
        internal bool IsSetETag()
        {
            return this._eTag != null;
        }
        /// 
        /// Gets and sets the property PartitionValues. 
        /// 
        /// A list of partition values for the object. A value must be specified for each partition
        /// key associated with the table.
        /// 
        ///  
        /// 
        /// The supported data types are integer, long, date(yyyy-MM-dd), timestamp(yyyy-MM-dd
        /// HH:mm:ssXXX or yyyy-MM-dd HH:mm:ss"), string and decimal.
        /// 
        /// 
        [AWSProperty(Min=1, Max=100)]
        public List PartitionValues
        {
            get { return this._partitionValues; }
            set { this._partitionValues = value; }
        }
        // Check to see if PartitionValues property is set
        internal bool IsSetPartitionValues()
        {
            return this._partitionValues != null && this._partitionValues.Count > 0; 
        }
        /// 
        /// Gets and sets the property Size. 
        /// 
        /// The size of the Amazon S3 object in bytes.
        /// 
        /// 
        [AWSProperty(Required=true)]
        public long Size
        {
            get { return this._size.GetValueOrDefault(); }
            set { this._size = value; }
        }
        // Check to see if Size property is set
        internal bool IsSetSize()
        {
            return this._size.HasValue; 
        }
        /// 
        /// Gets and sets the property Uri. 
        /// 
        /// The Amazon S3 location of the object.
        /// 
        /// 
        [AWSProperty(Required=true, Min=1, Max=1024)]
        public string Uri
        {
            get { return this._uri; }
            set { this._uri = value; }
        }
        // Check to see if Uri property is set
        internal bool IsSetUri()
        {
            return this._uri != null;
        }
    }
}