// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.datamigration.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Types of validations to run after the migration. */
@Fluent
public final class MigrationValidationOptions {
    /*
     * Allows to compare the schema information between source and target.
     */
    @JsonProperty(value = "enableSchemaValidation")
    private Boolean enableSchemaValidation;

    /*
     * Allows to perform a checksum based data integrity validation between source and target for the selected database
     * / tables .
     */
    @JsonProperty(value = "enableDataIntegrityValidation")
    private Boolean enableDataIntegrityValidation;

    /*
     * Allows to perform a quick and intelligent query analysis by retrieving queries from the source database and
     * executes them in the target. The result will have execution statistics for executions in source and target
     * databases for the extracted queries.
     */
    @JsonProperty(value = "enableQueryAnalysisValidation")
    private Boolean enableQueryAnalysisValidation;

    /** Creates an instance of MigrationValidationOptions class. */
    public MigrationValidationOptions() {
    }

    /**
     * Get the enableSchemaValidation property: Allows to compare the schema information between source and target.
     *
     * @return the enableSchemaValidation value.
     */
    public Boolean enableSchemaValidation() {
        return this.enableSchemaValidation;
    }

    /**
     * Set the enableSchemaValidation property: Allows to compare the schema information between source and target.
     *
     * @param enableSchemaValidation the enableSchemaValidation value to set.
     * @return the MigrationValidationOptions object itself.
     */
    public MigrationValidationOptions withEnableSchemaValidation(Boolean enableSchemaValidation) {
        this.enableSchemaValidation = enableSchemaValidation;
        return this;
    }

    /**
     * Get the enableDataIntegrityValidation property: Allows to perform a checksum based data integrity validation
     * between source and target for the selected database / tables .
     *
     * @return the enableDataIntegrityValidation value.
     */
    public Boolean enableDataIntegrityValidation() {
        return this.enableDataIntegrityValidation;
    }

    /**
     * Set the enableDataIntegrityValidation property: Allows to perform a checksum based data integrity validation
     * between source and target for the selected database / tables .
     *
     * @param enableDataIntegrityValidation the enableDataIntegrityValidation value to set.
     * @return the MigrationValidationOptions object itself.
     */
    public MigrationValidationOptions withEnableDataIntegrityValidation(Boolean enableDataIntegrityValidation) {
        this.enableDataIntegrityValidation = enableDataIntegrityValidation;
        return this;
    }

    /**
     * Get the enableQueryAnalysisValidation property: Allows to perform a quick and intelligent query analysis by
     * retrieving queries from the source database and executes them in the target. The result will have execution
     * statistics for executions in source and target databases for the extracted queries.
     *
     * @return the enableQueryAnalysisValidation value.
     */
    public Boolean enableQueryAnalysisValidation() {
        return this.enableQueryAnalysisValidation;
    }

    /**
     * Set the enableQueryAnalysisValidation property: Allows to perform a quick and intelligent query analysis by
     * retrieving queries from the source database and executes them in the target. The result will have execution
     * statistics for executions in source and target databases for the extracted queries.
     *
     * @param enableQueryAnalysisValidation the enableQueryAnalysisValidation value to set.
     * @return the MigrationValidationOptions object itself.
     */
    public MigrationValidationOptions withEnableQueryAnalysisValidation(Boolean enableQueryAnalysisValidation) {
        this.enableQueryAnalysisValidation = enableQueryAnalysisValidation;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
