/*
 * Copyright 2018-2023 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.
 */
package com.amazonaws.services.cloudtrail.model;
import java.io.Serializable;
import javax.annotation.Generated;
/**
 * 
 * @see AWS
 *      API Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class UpdateEventDataStoreResult extends com.amazonaws.AmazonWebServiceResult 
     * The ARN of the event data store.
     *  
     * The name of the event data store.
     *  
     * The status of an event data store.
     *  
     * The advanced event selectors that are applied to the event data store.
     *  
     * Indicates whether the event data store includes events from all Regions, or only from the Region in which it was
     * created.
     *  
     * Indicates whether an event data store is collecting logged events for an organization in Organizations.
     *  
     * The retention period, in days.
     *  
     * Indicates whether termination protection is enabled for the event data store.
     *  
     * The timestamp that shows when an event data store was first created.
     *  
     * The timestamp that shows when the event data store was last updated.  
     * Specifies the KMS key ID that encrypts the events delivered by CloudTrail. The value is a fully specified ARN to
     * a KMS key in the following format.
     *  
     *  
     * The ARN of the event data store.
     *  
     * The ARN of the event data store.
     *  
     * The ARN of the event data store.
     *  
     * The name of the event data store.
     *  
     * The name of the event data store.
     *  
     * The name of the event data store.
     *  
     * The status of an event data store.
     *  
     * The status of an event data store.
     *  
     * The status of an event data store.
     *  
     * The status of an event data store.
     *  
     * The advanced event selectors that are applied to the event data store.
     *  
     * The advanced event selectors that are applied to the event data store.
     *  
     * The advanced event selectors that are applied to the event data store.
     *  
     * NOTE: This method appends the values to the existing list (if any). Use
     * {@link #setAdvancedEventSelectors(java.util.Collection)} or
     * {@link #withAdvancedEventSelectors(java.util.Collection)} if you want to override the existing values.
     *  
     * The advanced event selectors that are applied to the event data store.
     *  
     * Indicates whether the event data store includes events from all Regions, or only from the Region in which it was
     * created.
     *  
     * Indicates whether the event data store includes events from all Regions, or only from the Region in which it was
     * created.
     *  
     * Indicates whether the event data store includes events from all Regions, or only from the Region in which it was
     * created.
     *  
     * Indicates whether the event data store includes events from all Regions, or only from the Region in which it was
     * created.
     *  
     * Indicates whether an event data store is collecting logged events for an organization in Organizations.
     *  
     * Indicates whether an event data store is collecting logged events for an organization in Organizations.
     *  
     * Indicates whether an event data store is collecting logged events for an organization in Organizations.
     *  
     * Indicates whether an event data store is collecting logged events for an organization in Organizations.
     *  
     * The retention period, in days.
     *  
     * The retention period, in days.
     *  
     * The retention period, in days.
     *  
     * Indicates whether termination protection is enabled for the event data store.
     *  
     * Indicates whether termination protection is enabled for the event data store.
     *  
     * Indicates whether termination protection is enabled for the event data store.
     *  
     * Indicates whether termination protection is enabled for the event data store.
     *  
     * The timestamp that shows when an event data store was first created.
     *  
     * The timestamp that shows when an event data store was first created.
     *  
     * The timestamp that shows when an event data store was first created.
     *  
     * The timestamp that shows when the event data store was last updated.  
     * The timestamp that shows when the event data store was last updated.  
     * The timestamp that shows when the event data store was last updated.  
     * Specifies the KMS key ID that encrypts the events delivered by CloudTrail. The value is a fully specified ARN to
     * a KMS key in the following format.
     *  
     * UpdatedTimestamp is always
     * either the same or newer than the time shown in CreatedTimestamp.
     * arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     * UpdatedTimestamp is always
     * either the same or newer than the time shown in CreatedTimestamp.
     * UpdatedTimestamp is
     *        always either the same or newer than the time shown in CreatedTimestamp.
     */
    public void setUpdatedTimestamp(java.util.Date updatedTimestamp) {
        this.updatedTimestamp = updatedTimestamp;
    }
    /**
     * UpdatedTimestamp is always
     * either the same or newer than the time shown in CreatedTimestamp.
     * UpdatedTimestamp is
     *         always either the same or newer than the time shown in CreatedTimestamp.
     */
    public java.util.Date getUpdatedTimestamp() {
        return this.updatedTimestamp;
    }
    /**
     * UpdatedTimestamp is always
     * either the same or newer than the time shown in CreatedTimestamp.
     * UpdatedTimestamp is
     *        always either the same or newer than the time shown in CreatedTimestamp.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public UpdateEventDataStoreResult withUpdatedTimestamp(java.util.Date updatedTimestamp) {
        setUpdatedTimestamp(updatedTimestamp);
        return this;
    }
    /**
     * arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     * 
     *        arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     */
    public void setKmsKeyId(String kmsKeyId) {
        this.kmsKeyId = kmsKeyId;
    }
    /**
     * 
* Specifies the KMS key ID that encrypts the events delivered by CloudTrail. The value is a fully specified ARN to * a KMS key in the following format. *
*
     * arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     * 
     *         arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     */
    public String getKmsKeyId() {
        return this.kmsKeyId;
    }
    /**
     * 
* Specifies the KMS key ID that encrypts the events delivered by CloudTrail. The value is a fully specified ARN to * a KMS key in the following format. *
*
     * arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     * 
     *        arn:aws:kms:us-east-2:123456789012:key/12345678-1234-1234-1234-123456789012
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public UpdateEventDataStoreResult withKmsKeyId(String kmsKeyId) {
        setKmsKeyId(kmsKeyId);
        return this;
    }
    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getEventDataStoreArn() != null)
            sb.append("EventDataStoreArn: ").append(getEventDataStoreArn()).append(",");
        if (getName() != null)
            sb.append("Name: ").append(getName()).append(",");
        if (getStatus() != null)
            sb.append("Status: ").append(getStatus()).append(",");
        if (getAdvancedEventSelectors() != null)
            sb.append("AdvancedEventSelectors: ").append(getAdvancedEventSelectors()).append(",");
        if (getMultiRegionEnabled() != null)
            sb.append("MultiRegionEnabled: ").append(getMultiRegionEnabled()).append(",");
        if (getOrganizationEnabled() != null)
            sb.append("OrganizationEnabled: ").append(getOrganizationEnabled()).append(",");
        if (getRetentionPeriod() != null)
            sb.append("RetentionPeriod: ").append(getRetentionPeriod()).append(",");
        if (getTerminationProtectionEnabled() != null)
            sb.append("TerminationProtectionEnabled: ").append(getTerminationProtectionEnabled()).append(",");
        if (getCreatedTimestamp() != null)
            sb.append("CreatedTimestamp: ").append(getCreatedTimestamp()).append(",");
        if (getUpdatedTimestamp() != null)
            sb.append("UpdatedTimestamp: ").append(getUpdatedTimestamp()).append(",");
        if (getKmsKeyId() != null)
            sb.append("KmsKeyId: ").append(getKmsKeyId());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof UpdateEventDataStoreResult == false)
            return false;
        UpdateEventDataStoreResult other = (UpdateEventDataStoreResult) obj;
        if (other.getEventDataStoreArn() == null ^ this.getEventDataStoreArn() == null)
            return false;
        if (other.getEventDataStoreArn() != null && other.getEventDataStoreArn().equals(this.getEventDataStoreArn()) == false)
            return false;
        if (other.getName() == null ^ this.getName() == null)
            return false;
        if (other.getName() != null && other.getName().equals(this.getName()) == false)
            return false;
        if (other.getStatus() == null ^ this.getStatus() == null)
            return false;
        if (other.getStatus() != null && other.getStatus().equals(this.getStatus()) == false)
            return false;
        if (other.getAdvancedEventSelectors() == null ^ this.getAdvancedEventSelectors() == null)
            return false;
        if (other.getAdvancedEventSelectors() != null && other.getAdvancedEventSelectors().equals(this.getAdvancedEventSelectors()) == false)
            return false;
        if (other.getMultiRegionEnabled() == null ^ this.getMultiRegionEnabled() == null)
            return false;
        if (other.getMultiRegionEnabled() != null && other.getMultiRegionEnabled().equals(this.getMultiRegionEnabled()) == false)
            return false;
        if (other.getOrganizationEnabled() == null ^ this.getOrganizationEnabled() == null)
            return false;
        if (other.getOrganizationEnabled() != null && other.getOrganizationEnabled().equals(this.getOrganizationEnabled()) == false)
            return false;
        if (other.getRetentionPeriod() == null ^ this.getRetentionPeriod() == null)
            return false;
        if (other.getRetentionPeriod() != null && other.getRetentionPeriod().equals(this.getRetentionPeriod()) == false)
            return false;
        if (other.getTerminationProtectionEnabled() == null ^ this.getTerminationProtectionEnabled() == null)
            return false;
        if (other.getTerminationProtectionEnabled() != null && other.getTerminationProtectionEnabled().equals(this.getTerminationProtectionEnabled()) == false)
            return false;
        if (other.getCreatedTimestamp() == null ^ this.getCreatedTimestamp() == null)
            return false;
        if (other.getCreatedTimestamp() != null && other.getCreatedTimestamp().equals(this.getCreatedTimestamp()) == false)
            return false;
        if (other.getUpdatedTimestamp() == null ^ this.getUpdatedTimestamp() == null)
            return false;
        if (other.getUpdatedTimestamp() != null && other.getUpdatedTimestamp().equals(this.getUpdatedTimestamp()) == false)
            return false;
        if (other.getKmsKeyId() == null ^ this.getKmsKeyId() == null)
            return false;
        if (other.getKmsKeyId() != null && other.getKmsKeyId().equals(this.getKmsKeyId()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getEventDataStoreArn() == null) ? 0 : getEventDataStoreArn().hashCode());
        hashCode = prime * hashCode + ((getName() == null) ? 0 : getName().hashCode());
        hashCode = prime * hashCode + ((getStatus() == null) ? 0 : getStatus().hashCode());
        hashCode = prime * hashCode + ((getAdvancedEventSelectors() == null) ? 0 : getAdvancedEventSelectors().hashCode());
        hashCode = prime * hashCode + ((getMultiRegionEnabled() == null) ? 0 : getMultiRegionEnabled().hashCode());
        hashCode = prime * hashCode + ((getOrganizationEnabled() == null) ? 0 : getOrganizationEnabled().hashCode());
        hashCode = prime * hashCode + ((getRetentionPeriod() == null) ? 0 : getRetentionPeriod().hashCode());
        hashCode = prime * hashCode + ((getTerminationProtectionEnabled() == null) ? 0 : getTerminationProtectionEnabled().hashCode());
        hashCode = prime * hashCode + ((getCreatedTimestamp() == null) ? 0 : getCreatedTimestamp().hashCode());
        hashCode = prime * hashCode + ((getUpdatedTimestamp() == null) ? 0 : getUpdatedTimestamp().hashCode());
        hashCode = prime * hashCode + ((getKmsKeyId() == null) ? 0 : getKmsKeyId().hashCode());
        return hashCode;
    }
    @Override
    public UpdateEventDataStoreResult clone() {
        try {
            return (UpdateEventDataStoreResult) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }
}