/* * 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.docdb.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.AmazonWebServiceRequest; /** *
* Represents the input to ModifyDBCluster. *
* * @see AWS API * Documentation */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class ModifyDBClusterRequest extends com.amazonaws.AmazonWebServiceRequest implements Serializable, Cloneable { /** ** The cluster identifier for the cluster that is being modified. This parameter is not case sensitive. *
** Constraints: *
*
     * Must match the identifier of an existing DBCluster.
     * 
* The new cluster identifier for the cluster when renaming a cluster. This value is stored as a lowercase string. *
** Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     * Example: my-cluster2
     * 
     * A value that specifies whether the changes in this request and any pending changes are asynchronously applied as
     * soon as possible, regardless of the PreferredMaintenanceWindow setting for the cluster. If this
     * parameter is set to false, changes to the cluster are applied during the next maintenance window.
     * 
     * The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     * MasterUserPassword values. If you set this parameter value to false, the changes to the
     * NewDBClusterIdentifier and MasterUserPassword values are applied during the next
     * maintenance window. All other changes are applied immediately, regardless of the value of the
     * ApplyImmediately parameter.
     * 
     * Default: false
     * 
* The number of days for which automated backups are retained. You must specify a minimum value of 1. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** The name of the cluster parameter group to use for the cluster. *
*/ private String dBClusterParameterGroupName; /** ** A list of virtual private cloud (VPC) security groups that the cluster will belong to. *
*/ private java.util.List* The port number on which the cluster accepts connections. *
*
     * Constraints: Must be a value from 1150 to 65535.
     * 
* Default: The same port as the original cluster. *
*/ private Integer port; /** ** The password for the master database user. This password can contain any printable ASCII character except forward * slash (/), double quote ("), or the "at" symbol (@). *
** Constraints: Must contain from 8 to 100 characters. *
*/ private String masterUserPassword; /** *
     * The daily time range during which automated backups are created if automated backups are enabled, using the
     * BackupRetentionPeriod parameter.
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region. *
** Constraints: *
*
     * Must be in the format hh24:mi-hh24:mi.
     * 
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
** The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
*
     * Format: ddd:hh24:mi-ddd:hh24:mi
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. *
*/ private String preferredMaintenanceWindow; /** *
     * The configuration setting for the log types to be enabled for export to Amazon CloudWatch Logs for a specific
     * instance or cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs
     * are exported (or not exported) to CloudWatch Logs.
     * 
     * The version number of the database engine to which you want to upgrade. Changing this parameter results in an
     * outage. The change is applied during the next maintenance window unless ApplyImmediately is enabled.
     * 
* To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     * aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     * 
* A value that indicates whether major version upgrades are allowed. *
*
     * Constraints: You must allow major version upgrades when specifying a value for the EngineVersion
     * parameter that is a different major version than the DB cluster's current version.
     * 
     * Specifies whether this cluster can be deleted. If DeletionProtection is enabled, the cluster cannot
     * be deleted unless it is modified and DeletionProtection is disabled. DeletionProtection
     * protects clusters from being accidentally deleted.
     * 
* The cluster identifier for the cluster that is being modified. This parameter is not case sensitive. *
** Constraints: *
*
     * Must match the identifier of an existing DBCluster.
     * 
* Constraints: *
*
     *        Must match the identifier of an existing DBCluster.
     *        
* The cluster identifier for the cluster that is being modified. This parameter is not case sensitive. *
** Constraints: *
*
     * Must match the identifier of an existing DBCluster.
     * 
* Constraints: *
*
     *         Must match the identifier of an existing DBCluster.
     *         
* The cluster identifier for the cluster that is being modified. This parameter is not case sensitive. *
** Constraints: *
*
     * Must match the identifier of an existing DBCluster.
     * 
* Constraints: *
*
     *        Must match the identifier of an existing DBCluster.
     *        
* The new cluster identifier for the cluster when renaming a cluster. This value is stored as a lowercase string. *
** Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     * Example: my-cluster2
     * 
* Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     *        Example: my-cluster2
     */
    public void setNewDBClusterIdentifier(String newDBClusterIdentifier) {
        this.newDBClusterIdentifier = newDBClusterIdentifier;
    }
    /**
     * 
* The new cluster identifier for the cluster when renaming a cluster. This value is stored as a lowercase string. *
** Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     * Example: my-cluster2
     * 
* Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     *         Example: my-cluster2
     */
    public String getNewDBClusterIdentifier() {
        return this.newDBClusterIdentifier;
    }
    /**
     * 
* The new cluster identifier for the cluster when renaming a cluster. This value is stored as a lowercase string. *
** Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     * Example: my-cluster2
     * 
* Constraints: *
** Must contain from 1 to 63 letters, numbers, or hyphens. *
** The first character must be a letter. *
** Cannot end with a hyphen or contain two consecutive hyphens. *
*
     *        Example: my-cluster2
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withNewDBClusterIdentifier(String newDBClusterIdentifier) {
        setNewDBClusterIdentifier(newDBClusterIdentifier);
        return this;
    }
    /**
     * 
     * A value that specifies whether the changes in this request and any pending changes are asynchronously applied as
     * soon as possible, regardless of the PreferredMaintenanceWindow setting for the cluster. If this
     * parameter is set to false, changes to the cluster are applied during the next maintenance window.
     * 
     * The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     * MasterUserPassword values. If you set this parameter value to false, the changes to the
     * NewDBClusterIdentifier and MasterUserPassword values are applied during the next
     * maintenance window. All other changes are applied immediately, regardless of the value of the
     * ApplyImmediately parameter.
     * 
     * Default: false
     * 
PreferredMaintenanceWindow setting for the
     *        cluster. If this parameter is set to false, changes to the cluster are applied during the
     *        next maintenance window.
     *        
     *        The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     *        MasterUserPassword values. If you set this parameter value to false, the changes
     *        to the NewDBClusterIdentifier and MasterUserPassword values are applied during
     *        the next maintenance window. All other changes are applied immediately, regardless of the value of the
     *        ApplyImmediately parameter.
     *        
     *        Default: false
     */
    public void setApplyImmediately(Boolean applyImmediately) {
        this.applyImmediately = applyImmediately;
    }
    /**
     * 
     * A value that specifies whether the changes in this request and any pending changes are asynchronously applied as
     * soon as possible, regardless of the PreferredMaintenanceWindow setting for the cluster. If this
     * parameter is set to false, changes to the cluster are applied during the next maintenance window.
     * 
     * The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     * MasterUserPassword values. If you set this parameter value to false, the changes to the
     * NewDBClusterIdentifier and MasterUserPassword values are applied during the next
     * maintenance window. All other changes are applied immediately, regardless of the value of the
     * ApplyImmediately parameter.
     * 
     * Default: false
     * 
PreferredMaintenanceWindow setting for the
     *         cluster. If this parameter is set to false, changes to the cluster are applied during the
     *         next maintenance window.
     *         
     *         The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     *         MasterUserPassword values. If you set this parameter value to false, the
     *         changes to the NewDBClusterIdentifier and MasterUserPassword values are applied
     *         during the next maintenance window. All other changes are applied immediately, regardless of the value of
     *         the ApplyImmediately parameter.
     *         
     *         Default: false
     */
    public Boolean getApplyImmediately() {
        return this.applyImmediately;
    }
    /**
     * 
     * A value that specifies whether the changes in this request and any pending changes are asynchronously applied as
     * soon as possible, regardless of the PreferredMaintenanceWindow setting for the cluster. If this
     * parameter is set to false, changes to the cluster are applied during the next maintenance window.
     * 
     * The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     * MasterUserPassword values. If you set this parameter value to false, the changes to the
     * NewDBClusterIdentifier and MasterUserPassword values are applied during the next
     * maintenance window. All other changes are applied immediately, regardless of the value of the
     * ApplyImmediately parameter.
     * 
     * Default: false
     * 
PreferredMaintenanceWindow setting for the
     *        cluster. If this parameter is set to false, changes to the cluster are applied during the
     *        next maintenance window.
     *        
     *        The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     *        MasterUserPassword values. If you set this parameter value to false, the changes
     *        to the NewDBClusterIdentifier and MasterUserPassword values are applied during
     *        the next maintenance window. All other changes are applied immediately, regardless of the value of the
     *        ApplyImmediately parameter.
     *        
     *        Default: false
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withApplyImmediately(Boolean applyImmediately) {
        setApplyImmediately(applyImmediately);
        return this;
    }
    /**
     * 
     * A value that specifies whether the changes in this request and any pending changes are asynchronously applied as
     * soon as possible, regardless of the PreferredMaintenanceWindow setting for the cluster. If this
     * parameter is set to false, changes to the cluster are applied during the next maintenance window.
     * 
     * The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     * MasterUserPassword values. If you set this parameter value to false, the changes to the
     * NewDBClusterIdentifier and MasterUserPassword values are applied during the next
     * maintenance window. All other changes are applied immediately, regardless of the value of the
     * ApplyImmediately parameter.
     * 
     * Default: false
     * 
PreferredMaintenanceWindow setting for the
     *         cluster. If this parameter is set to false, changes to the cluster are applied during the
     *         next maintenance window.
     *         
     *         The ApplyImmediately parameter affects only the NewDBClusterIdentifier and
     *         MasterUserPassword values. If you set this parameter value to false, the
     *         changes to the NewDBClusterIdentifier and MasterUserPassword values are applied
     *         during the next maintenance window. All other changes are applied immediately, regardless of the value of
     *         the ApplyImmediately parameter.
     *         
     *         Default: false
     */
    public Boolean isApplyImmediately() {
        return this.applyImmediately;
    }
    /**
     * 
* The number of days for which automated backups are retained. You must specify a minimum value of 1. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** The number of days for which automated backups are retained. You must specify a minimum value of 1. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** The number of days for which automated backups are retained. You must specify a minimum value of 1. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** Default: 1 *
** Constraints: *
** Must be a value from 1 to 35. *
** The name of the cluster parameter group to use for the cluster. *
* * @param dBClusterParameterGroupName * The name of the cluster parameter group to use for the cluster. */ public void setDBClusterParameterGroupName(String dBClusterParameterGroupName) { this.dBClusterParameterGroupName = dBClusterParameterGroupName; } /** ** The name of the cluster parameter group to use for the cluster. *
* * @return The name of the cluster parameter group to use for the cluster. */ public String getDBClusterParameterGroupName() { return this.dBClusterParameterGroupName; } /** ** The name of the cluster parameter group to use for the cluster. *
* * @param dBClusterParameterGroupName * The name of the cluster parameter group to use for the cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withDBClusterParameterGroupName(String dBClusterParameterGroupName) { setDBClusterParameterGroupName(dBClusterParameterGroupName); return this; } /** ** A list of virtual private cloud (VPC) security groups that the cluster will belong to. *
* * @return A list of virtual private cloud (VPC) security groups that the cluster will belong to. */ public java.util.List* A list of virtual private cloud (VPC) security groups that the cluster will belong to. *
* * @param vpcSecurityGroupIds * A list of virtual private cloud (VPC) security groups that the cluster will belong to. */ public void setVpcSecurityGroupIds(java.util.Collection* A list of virtual private cloud (VPC) security groups that the cluster will belong to. *
** NOTE: This method appends the values to the existing list (if any). Use * {@link #setVpcSecurityGroupIds(java.util.Collection)} or {@link #withVpcSecurityGroupIds(java.util.Collection)} * if you want to override the existing values. *
* * @param vpcSecurityGroupIds * A list of virtual private cloud (VPC) security groups that the cluster will belong to. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withVpcSecurityGroupIds(String... vpcSecurityGroupIds) { if (this.vpcSecurityGroupIds == null) { setVpcSecurityGroupIds(new java.util.ArrayList* A list of virtual private cloud (VPC) security groups that the cluster will belong to. *
* * @param vpcSecurityGroupIds * A list of virtual private cloud (VPC) security groups that the cluster will belong to. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withVpcSecurityGroupIds(java.util.Collection* The port number on which the cluster accepts connections. *
*
     * Constraints: Must be a value from 1150 to 65535.
     * 
* Default: The same port as the original cluster. *
* * @param port * The port number on which the cluster accepts connections. *
     *        Constraints: Must be a value from 1150 to 65535.
     *        
* Default: The same port as the original cluster. */ public void setPort(Integer port) { this.port = port; } /** *
* The port number on which the cluster accepts connections. *
*
     * Constraints: Must be a value from 1150 to 65535.
     * 
* Default: The same port as the original cluster. *
* * @return The port number on which the cluster accepts connections. *
     *         Constraints: Must be a value from 1150 to 65535.
     *         
* Default: The same port as the original cluster. */ public Integer getPort() { return this.port; } /** *
* The port number on which the cluster accepts connections. *
*
     * Constraints: Must be a value from 1150 to 65535.
     * 
* Default: The same port as the original cluster. *
* * @param port * The port number on which the cluster accepts connections. *
     *        Constraints: Must be a value from 1150 to 65535.
     *        
* Default: The same port as the original cluster. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withPort(Integer port) { setPort(port); return this; } /** *
* The password for the master database user. This password can contain any printable ASCII character except forward * slash (/), double quote ("), or the "at" symbol (@). *
** Constraints: Must contain from 8 to 100 characters. *
* * @param masterUserPassword * The password for the master database user. This password can contain any printable ASCII character except * forward slash (/), double quote ("), or the "at" symbol (@). ** Constraints: Must contain from 8 to 100 characters. */ public void setMasterUserPassword(String masterUserPassword) { this.masterUserPassword = masterUserPassword; } /** *
* The password for the master database user. This password can contain any printable ASCII character except forward * slash (/), double quote ("), or the "at" symbol (@). *
** Constraints: Must contain from 8 to 100 characters. *
* * @return The password for the master database user. This password can contain any printable ASCII character except * forward slash (/), double quote ("), or the "at" symbol (@). ** Constraints: Must contain from 8 to 100 characters. */ public String getMasterUserPassword() { return this.masterUserPassword; } /** *
* The password for the master database user. This password can contain any printable ASCII character except forward * slash (/), double quote ("), or the "at" symbol (@). *
** Constraints: Must contain from 8 to 100 characters. *
* * @param masterUserPassword * The password for the master database user. This password can contain any printable ASCII character except * forward slash (/), double quote ("), or the "at" symbol (@). ** Constraints: Must contain from 8 to 100 characters. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withMasterUserPassword(String masterUserPassword) { setMasterUserPassword(masterUserPassword); return this; } /** *
     * The daily time range during which automated backups are created if automated backups are enabled, using the
     * BackupRetentionPeriod parameter.
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region. *
** Constraints: *
*
     * Must be in the format hh24:mi-hh24:mi.
     * 
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
*BackupRetentionPeriod parameter. 
     *        * The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region. *
** Constraints: *
*
     *        Must be in the format hh24:mi-hh24:mi.
     *        
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
*
     * The daily time range during which automated backups are created if automated backups are enabled, using the
     * BackupRetentionPeriod parameter.
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region. *
** Constraints: *
*
     * Must be in the format hh24:mi-hh24:mi.
     * 
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
*BackupRetentionPeriod parameter. 
     *         * The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region. *
** Constraints: *
*
     *         Must be in the format hh24:mi-hh24:mi.
     *         
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
*
     * The daily time range during which automated backups are created if automated backups are enabled, using the
     * BackupRetentionPeriod parameter.
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region. *
** Constraints: *
*
     * Must be in the format hh24:mi-hh24:mi.
     * 
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
*BackupRetentionPeriod parameter. 
     *        * The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region. *
** Constraints: *
*
     *        Must be in the format hh24:mi-hh24:mi.
     *        
* Must be in Universal Coordinated Time (UTC). *
** Must not conflict with the preferred maintenance window. *
** Must be at least 30 minutes. *
** The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
*
     * Format: ddd:hh24:mi-ddd:hh24:mi
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. *
* * @param preferredMaintenanceWindow * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
     *        Format: ddd:hh24:mi-ddd:hh24:mi
     *        
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. */ public void setPreferredMaintenanceWindow(String preferredMaintenanceWindow) { this.preferredMaintenanceWindow = preferredMaintenanceWindow; } /** *
* The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
*
     * Format: ddd:hh24:mi-ddd:hh24:mi
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. *
* * @return The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
     *         Format: ddd:hh24:mi-ddd:hh24:mi
     *         
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. */ public String getPreferredMaintenanceWindow() { return this.preferredMaintenanceWindow; } /** *
* The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
*
     * Format: ddd:hh24:mi-ddd:hh24:mi
     * 
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services * Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. *
* * @param preferredMaintenanceWindow * The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC). *
     *        Format: ddd:hh24:mi-ddd:hh24:mi
     *        
* The default is a 30-minute window selected at random from an 8-hour block of time for each Amazon Web * Services Region, occurring on a random day of the week. *
** Valid days: Mon, Tue, Wed, Thu, Fri, Sat, Sun *
** Constraints: Minimum 30-minute window. * @return Returns a reference to this object so that method calls can be chained together. */ public ModifyDBClusterRequest withPreferredMaintenanceWindow(String preferredMaintenanceWindow) { setPreferredMaintenanceWindow(preferredMaintenanceWindow); return this; } /** *
     * The configuration setting for the log types to be enabled for export to Amazon CloudWatch Logs for a specific
     * instance or cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs
     * are exported (or not exported) to CloudWatch Logs.
     * 
EnableLogTypes and DisableLogTypes arrays
     *        determine which logs are exported (or not exported) to CloudWatch Logs.
     */
    public void setCloudwatchLogsExportConfiguration(CloudwatchLogsExportConfiguration cloudwatchLogsExportConfiguration) {
        this.cloudwatchLogsExportConfiguration = cloudwatchLogsExportConfiguration;
    }
    /**
     * 
     * The configuration setting for the log types to be enabled for export to Amazon CloudWatch Logs for a specific
     * instance or cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs
     * are exported (or not exported) to CloudWatch Logs.
     * 
EnableLogTypes and DisableLogTypes arrays
     *         determine which logs are exported (or not exported) to CloudWatch Logs.
     */
    public CloudwatchLogsExportConfiguration getCloudwatchLogsExportConfiguration() {
        return this.cloudwatchLogsExportConfiguration;
    }
    /**
     * 
     * The configuration setting for the log types to be enabled for export to Amazon CloudWatch Logs for a specific
     * instance or cluster. The EnableLogTypes and DisableLogTypes arrays determine which logs
     * are exported (or not exported) to CloudWatch Logs.
     * 
EnableLogTypes and DisableLogTypes arrays
     *        determine which logs are exported (or not exported) to CloudWatch Logs.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withCloudwatchLogsExportConfiguration(CloudwatchLogsExportConfiguration cloudwatchLogsExportConfiguration) {
        setCloudwatchLogsExportConfiguration(cloudwatchLogsExportConfiguration);
        return this;
    }
    /**
     * 
     * The version number of the database engine to which you want to upgrade. Changing this parameter results in an
     * outage. The change is applied during the next maintenance window unless ApplyImmediately is enabled.
     * 
* To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     * aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     * 
ApplyImmediately
     *        is enabled.
     *        * To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     *        aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     */
    public void setEngineVersion(String engineVersion) {
        this.engineVersion = engineVersion;
    }
    /**
     * 
     * The version number of the database engine to which you want to upgrade. Changing this parameter results in an
     * outage. The change is applied during the next maintenance window unless ApplyImmediately is enabled.
     * 
* To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     * aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     * 
ApplyImmediately is enabled.
     *         * To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     *         aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     */
    public String getEngineVersion() {
        return this.engineVersion;
    }
    /**
     * 
     * The version number of the database engine to which you want to upgrade. Changing this parameter results in an
     * outage. The change is applied during the next maintenance window unless ApplyImmediately is enabled.
     * 
* To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     * aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     * 
ApplyImmediately
     *        is enabled.
     *        * To list all of the available engine versions for Amazon DocumentDB use the following command: *
*
     *        aws docdb describe-db-engine-versions --engine docdb --query "DBEngineVersions[].EngineVersion"
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withEngineVersion(String engineVersion) {
        setEngineVersion(engineVersion);
        return this;
    }
    /**
     * 
* A value that indicates whether major version upgrades are allowed. *
*
     * Constraints: You must allow major version upgrades when specifying a value for the EngineVersion
     * parameter that is a different major version than the DB cluster's current version.
     * 
     *        Constraints: You must allow major version upgrades when specifying a value for the
     *        EngineVersion parameter that is a different major version than the DB cluster's current
     *        version.
     */
    public void setAllowMajorVersionUpgrade(Boolean allowMajorVersionUpgrade) {
        this.allowMajorVersionUpgrade = allowMajorVersionUpgrade;
    }
    /**
     * 
* A value that indicates whether major version upgrades are allowed. *
*
     * Constraints: You must allow major version upgrades when specifying a value for the EngineVersion
     * parameter that is a different major version than the DB cluster's current version.
     * 
     *         Constraints: You must allow major version upgrades when specifying a value for the
     *         EngineVersion parameter that is a different major version than the DB cluster's current
     *         version.
     */
    public Boolean getAllowMajorVersionUpgrade() {
        return this.allowMajorVersionUpgrade;
    }
    /**
     * 
* A value that indicates whether major version upgrades are allowed. *
*
     * Constraints: You must allow major version upgrades when specifying a value for the EngineVersion
     * parameter that is a different major version than the DB cluster's current version.
     * 
     *        Constraints: You must allow major version upgrades when specifying a value for the
     *        EngineVersion parameter that is a different major version than the DB cluster's current
     *        version.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withAllowMajorVersionUpgrade(Boolean allowMajorVersionUpgrade) {
        setAllowMajorVersionUpgrade(allowMajorVersionUpgrade);
        return this;
    }
    /**
     * 
* A value that indicates whether major version upgrades are allowed. *
*
     * Constraints: You must allow major version upgrades when specifying a value for the EngineVersion
     * parameter that is a different major version than the DB cluster's current version.
     * 
     *         Constraints: You must allow major version upgrades when specifying a value for the
     *         EngineVersion parameter that is a different major version than the DB cluster's current
     *         version.
     */
    public Boolean isAllowMajorVersionUpgrade() {
        return this.allowMajorVersionUpgrade;
    }
    /**
     * 
     * Specifies whether this cluster can be deleted. If DeletionProtection is enabled, the cluster cannot
     * be deleted unless it is modified and DeletionProtection is disabled. DeletionProtection
     * protects clusters from being accidentally deleted.
     * 
DeletionProtection is enabled, the cluster
     *        cannot be deleted unless it is modified and DeletionProtection is disabled.
     *        DeletionProtection protects clusters from being accidentally deleted.
     */
    public void setDeletionProtection(Boolean deletionProtection) {
        this.deletionProtection = deletionProtection;
    }
    /**
     * 
     * Specifies whether this cluster can be deleted. If DeletionProtection is enabled, the cluster cannot
     * be deleted unless it is modified and DeletionProtection is disabled. DeletionProtection
     * protects clusters from being accidentally deleted.
     * 
DeletionProtection is enabled, the cluster
     *         cannot be deleted unless it is modified and DeletionProtection is disabled.
     *         DeletionProtection protects clusters from being accidentally deleted.
     */
    public Boolean getDeletionProtection() {
        return this.deletionProtection;
    }
    /**
     * 
     * Specifies whether this cluster can be deleted. If DeletionProtection is enabled, the cluster cannot
     * be deleted unless it is modified and DeletionProtection is disabled. DeletionProtection
     * protects clusters from being accidentally deleted.
     * 
DeletionProtection is enabled, the cluster
     *        cannot be deleted unless it is modified and DeletionProtection is disabled.
     *        DeletionProtection protects clusters from being accidentally deleted.
     * @return Returns a reference to this object so that method calls can be chained together.
     */
    public ModifyDBClusterRequest withDeletionProtection(Boolean deletionProtection) {
        setDeletionProtection(deletionProtection);
        return this;
    }
    /**
     * 
     * Specifies whether this cluster can be deleted. If DeletionProtection is enabled, the cluster cannot
     * be deleted unless it is modified and DeletionProtection is disabled. DeletionProtection
     * protects clusters from being accidentally deleted.
     * 
DeletionProtection is enabled, the cluster
     *         cannot be deleted unless it is modified and DeletionProtection is disabled.
     *         DeletionProtection protects clusters from being accidentally deleted.
     */
    public Boolean isDeletionProtection() {
        return this.deletionProtection;
    }
    /**
     * 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 (getDBClusterIdentifier() != null)
            sb.append("DBClusterIdentifier: ").append(getDBClusterIdentifier()).append(",");
        if (getNewDBClusterIdentifier() != null)
            sb.append("NewDBClusterIdentifier: ").append(getNewDBClusterIdentifier()).append(",");
        if (getApplyImmediately() != null)
            sb.append("ApplyImmediately: ").append(getApplyImmediately()).append(",");
        if (getBackupRetentionPeriod() != null)
            sb.append("BackupRetentionPeriod: ").append(getBackupRetentionPeriod()).append(",");
        if (getDBClusterParameterGroupName() != null)
            sb.append("DBClusterParameterGroupName: ").append(getDBClusterParameterGroupName()).append(",");
        if (getVpcSecurityGroupIds() != null)
            sb.append("VpcSecurityGroupIds: ").append(getVpcSecurityGroupIds()).append(",");
        if (getPort() != null)
            sb.append("Port: ").append(getPort()).append(",");
        if (getMasterUserPassword() != null)
            sb.append("MasterUserPassword: ").append(getMasterUserPassword()).append(",");
        if (getPreferredBackupWindow() != null)
            sb.append("PreferredBackupWindow: ").append(getPreferredBackupWindow()).append(",");
        if (getPreferredMaintenanceWindow() != null)
            sb.append("PreferredMaintenanceWindow: ").append(getPreferredMaintenanceWindow()).append(",");
        if (getCloudwatchLogsExportConfiguration() != null)
            sb.append("CloudwatchLogsExportConfiguration: ").append(getCloudwatchLogsExportConfiguration()).append(",");
        if (getEngineVersion() != null)
            sb.append("EngineVersion: ").append(getEngineVersion()).append(",");
        if (getAllowMajorVersionUpgrade() != null)
            sb.append("AllowMajorVersionUpgrade: ").append(getAllowMajorVersionUpgrade()).append(",");
        if (getDeletionProtection() != null)
            sb.append("DeletionProtection: ").append(getDeletionProtection());
        sb.append("}");
        return sb.toString();
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (obj instanceof ModifyDBClusterRequest == false)
            return false;
        ModifyDBClusterRequest other = (ModifyDBClusterRequest) obj;
        if (other.getDBClusterIdentifier() == null ^ this.getDBClusterIdentifier() == null)
            return false;
        if (other.getDBClusterIdentifier() != null && other.getDBClusterIdentifier().equals(this.getDBClusterIdentifier()) == false)
            return false;
        if (other.getNewDBClusterIdentifier() == null ^ this.getNewDBClusterIdentifier() == null)
            return false;
        if (other.getNewDBClusterIdentifier() != null && other.getNewDBClusterIdentifier().equals(this.getNewDBClusterIdentifier()) == false)
            return false;
        if (other.getApplyImmediately() == null ^ this.getApplyImmediately() == null)
            return false;
        if (other.getApplyImmediately() != null && other.getApplyImmediately().equals(this.getApplyImmediately()) == false)
            return false;
        if (other.getBackupRetentionPeriod() == null ^ this.getBackupRetentionPeriod() == null)
            return false;
        if (other.getBackupRetentionPeriod() != null && other.getBackupRetentionPeriod().equals(this.getBackupRetentionPeriod()) == false)
            return false;
        if (other.getDBClusterParameterGroupName() == null ^ this.getDBClusterParameterGroupName() == null)
            return false;
        if (other.getDBClusterParameterGroupName() != null && other.getDBClusterParameterGroupName().equals(this.getDBClusterParameterGroupName()) == false)
            return false;
        if (other.getVpcSecurityGroupIds() == null ^ this.getVpcSecurityGroupIds() == null)
            return false;
        if (other.getVpcSecurityGroupIds() != null && other.getVpcSecurityGroupIds().equals(this.getVpcSecurityGroupIds()) == false)
            return false;
        if (other.getPort() == null ^ this.getPort() == null)
            return false;
        if (other.getPort() != null && other.getPort().equals(this.getPort()) == false)
            return false;
        if (other.getMasterUserPassword() == null ^ this.getMasterUserPassword() == null)
            return false;
        if (other.getMasterUserPassword() != null && other.getMasterUserPassword().equals(this.getMasterUserPassword()) == false)
            return false;
        if (other.getPreferredBackupWindow() == null ^ this.getPreferredBackupWindow() == null)
            return false;
        if (other.getPreferredBackupWindow() != null && other.getPreferredBackupWindow().equals(this.getPreferredBackupWindow()) == false)
            return false;
        if (other.getPreferredMaintenanceWindow() == null ^ this.getPreferredMaintenanceWindow() == null)
            return false;
        if (other.getPreferredMaintenanceWindow() != null && other.getPreferredMaintenanceWindow().equals(this.getPreferredMaintenanceWindow()) == false)
            return false;
        if (other.getCloudwatchLogsExportConfiguration() == null ^ this.getCloudwatchLogsExportConfiguration() == null)
            return false;
        if (other.getCloudwatchLogsExportConfiguration() != null
                && other.getCloudwatchLogsExportConfiguration().equals(this.getCloudwatchLogsExportConfiguration()) == false)
            return false;
        if (other.getEngineVersion() == null ^ this.getEngineVersion() == null)
            return false;
        if (other.getEngineVersion() != null && other.getEngineVersion().equals(this.getEngineVersion()) == false)
            return false;
        if (other.getAllowMajorVersionUpgrade() == null ^ this.getAllowMajorVersionUpgrade() == null)
            return false;
        if (other.getAllowMajorVersionUpgrade() != null && other.getAllowMajorVersionUpgrade().equals(this.getAllowMajorVersionUpgrade()) == false)
            return false;
        if (other.getDeletionProtection() == null ^ this.getDeletionProtection() == null)
            return false;
        if (other.getDeletionProtection() != null && other.getDeletionProtection().equals(this.getDeletionProtection()) == false)
            return false;
        return true;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;
        hashCode = prime * hashCode + ((getDBClusterIdentifier() == null) ? 0 : getDBClusterIdentifier().hashCode());
        hashCode = prime * hashCode + ((getNewDBClusterIdentifier() == null) ? 0 : getNewDBClusterIdentifier().hashCode());
        hashCode = prime * hashCode + ((getApplyImmediately() == null) ? 0 : getApplyImmediately().hashCode());
        hashCode = prime * hashCode + ((getBackupRetentionPeriod() == null) ? 0 : getBackupRetentionPeriod().hashCode());
        hashCode = prime * hashCode + ((getDBClusterParameterGroupName() == null) ? 0 : getDBClusterParameterGroupName().hashCode());
        hashCode = prime * hashCode + ((getVpcSecurityGroupIds() == null) ? 0 : getVpcSecurityGroupIds().hashCode());
        hashCode = prime * hashCode + ((getPort() == null) ? 0 : getPort().hashCode());
        hashCode = prime * hashCode + ((getMasterUserPassword() == null) ? 0 : getMasterUserPassword().hashCode());
        hashCode = prime * hashCode + ((getPreferredBackupWindow() == null) ? 0 : getPreferredBackupWindow().hashCode());
        hashCode = prime * hashCode + ((getPreferredMaintenanceWindow() == null) ? 0 : getPreferredMaintenanceWindow().hashCode());
        hashCode = prime * hashCode + ((getCloudwatchLogsExportConfiguration() == null) ? 0 : getCloudwatchLogsExportConfiguration().hashCode());
        hashCode = prime * hashCode + ((getEngineVersion() == null) ? 0 : getEngineVersion().hashCode());
        hashCode = prime * hashCode + ((getAllowMajorVersionUpgrade() == null) ? 0 : getAllowMajorVersionUpgrade().hashCode());
        hashCode = prime * hashCode + ((getDeletionProtection() == null) ? 0 : getDeletionProtection().hashCode());
        return hashCode;
    }
    @Override
    public ModifyDBClusterRequest clone() {
        return (ModifyDBClusterRequest) super.clone();
    }
}