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

package com.azure.resourcemanager.workloads.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import java.util.List;

/** Gets or sets the provider properties. */
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "providerType")
@JsonTypeName("SapNetWeaver")
@Fluent
public final class SapNetWeaverProviderInstanceProperties extends ProviderSpecificProperties {
    /*
     * Gets or sets the SAP System Identifier
     */
    @JsonProperty(value = "sapSid")
    private String sapSid;

    /*
     * Gets or sets the target virtual machine IP Address/FQDN.
     */
    @JsonProperty(value = "sapHostname")
    private String sapHostname;

    /*
     * Gets or sets the instance number of SAP NetWeaver.
     */
    @JsonProperty(value = "sapInstanceNr")
    private String sapInstanceNr;

    /*
     * Gets or sets the list of HostFile Entries
     */
    @JsonProperty(value = "sapHostFileEntries")
    private List<String> sapHostFileEntries;

    /*
     * Gets or sets the SAP user name.
     */
    @JsonProperty(value = "sapUsername")
    private String sapUsername;

    /*
     * Sets the SAP password.
     */
    @JsonProperty(value = "sapPassword")
    private String sapPassword;

    /*
     * Gets or sets the key vault URI to secret with the SAP password.
     */
    @JsonProperty(value = "sapPasswordUri")
    private String sapPasswordUri;

    /*
     * Gets or sets the SAP Client ID.
     */
    @JsonProperty(value = "sapClientId")
    private String sapClientId;

    /*
     * Gets or sets the SAP HTTP port number.
     */
    @JsonProperty(value = "sapPortNumber")
    private String sapPortNumber;

    /*
     * Gets or sets the blob URI to SSL certificate for the SAP system.
     */
    @JsonProperty(value = "sslCertificateUri")
    private String sslCertificateUri;

    /*
     * Gets or sets certificate preference if secure communication is enabled.
     */
    @JsonProperty(value = "sslPreference")
    private SslPreference sslPreference;

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

    /**
     * Get the sapSid property: Gets or sets the SAP System Identifier.
     *
     * @return the sapSid value.
     */
    public String sapSid() {
        return this.sapSid;
    }

    /**
     * Set the sapSid property: Gets or sets the SAP System Identifier.
     *
     * @param sapSid the sapSid value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapSid(String sapSid) {
        this.sapSid = sapSid;
        return this;
    }

    /**
     * Get the sapHostname property: Gets or sets the target virtual machine IP Address/FQDN.
     *
     * @return the sapHostname value.
     */
    public String sapHostname() {
        return this.sapHostname;
    }

    /**
     * Set the sapHostname property: Gets or sets the target virtual machine IP Address/FQDN.
     *
     * @param sapHostname the sapHostname value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapHostname(String sapHostname) {
        this.sapHostname = sapHostname;
        return this;
    }

    /**
     * Get the sapInstanceNr property: Gets or sets the instance number of SAP NetWeaver.
     *
     * @return the sapInstanceNr value.
     */
    public String sapInstanceNr() {
        return this.sapInstanceNr;
    }

    /**
     * Set the sapInstanceNr property: Gets or sets the instance number of SAP NetWeaver.
     *
     * @param sapInstanceNr the sapInstanceNr value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapInstanceNr(String sapInstanceNr) {
        this.sapInstanceNr = sapInstanceNr;
        return this;
    }

    /**
     * Get the sapHostFileEntries property: Gets or sets the list of HostFile Entries.
     *
     * @return the sapHostFileEntries value.
     */
    public List<String> sapHostFileEntries() {
        return this.sapHostFileEntries;
    }

    /**
     * Set the sapHostFileEntries property: Gets or sets the list of HostFile Entries.
     *
     * @param sapHostFileEntries the sapHostFileEntries value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapHostFileEntries(List<String> sapHostFileEntries) {
        this.sapHostFileEntries = sapHostFileEntries;
        return this;
    }

    /**
     * Get the sapUsername property: Gets or sets the SAP user name.
     *
     * @return the sapUsername value.
     */
    public String sapUsername() {
        return this.sapUsername;
    }

    /**
     * Set the sapUsername property: Gets or sets the SAP user name.
     *
     * @param sapUsername the sapUsername value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapUsername(String sapUsername) {
        this.sapUsername = sapUsername;
        return this;
    }

    /**
     * Get the sapPassword property: Sets the SAP password.
     *
     * @return the sapPassword value.
     */
    public String sapPassword() {
        return this.sapPassword;
    }

    /**
     * Set the sapPassword property: Sets the SAP password.
     *
     * @param sapPassword the sapPassword value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapPassword(String sapPassword) {
        this.sapPassword = sapPassword;
        return this;
    }

    /**
     * Get the sapPasswordUri property: Gets or sets the key vault URI to secret with the SAP password.
     *
     * @return the sapPasswordUri value.
     */
    public String sapPasswordUri() {
        return this.sapPasswordUri;
    }

    /**
     * Set the sapPasswordUri property: Gets or sets the key vault URI to secret with the SAP password.
     *
     * @param sapPasswordUri the sapPasswordUri value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapPasswordUri(String sapPasswordUri) {
        this.sapPasswordUri = sapPasswordUri;
        return this;
    }

    /**
     * Get the sapClientId property: Gets or sets the SAP Client ID.
     *
     * @return the sapClientId value.
     */
    public String sapClientId() {
        return this.sapClientId;
    }

    /**
     * Set the sapClientId property: Gets or sets the SAP Client ID.
     *
     * @param sapClientId the sapClientId value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapClientId(String sapClientId) {
        this.sapClientId = sapClientId;
        return this;
    }

    /**
     * Get the sapPortNumber property: Gets or sets the SAP HTTP port number.
     *
     * @return the sapPortNumber value.
     */
    public String sapPortNumber() {
        return this.sapPortNumber;
    }

    /**
     * Set the sapPortNumber property: Gets or sets the SAP HTTP port number.
     *
     * @param sapPortNumber the sapPortNumber value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSapPortNumber(String sapPortNumber) {
        this.sapPortNumber = sapPortNumber;
        return this;
    }

    /**
     * Get the sslCertificateUri property: Gets or sets the blob URI to SSL certificate for the SAP system.
     *
     * @return the sslCertificateUri value.
     */
    public String sslCertificateUri() {
        return this.sslCertificateUri;
    }

    /**
     * Set the sslCertificateUri property: Gets or sets the blob URI to SSL certificate for the SAP system.
     *
     * @param sslCertificateUri the sslCertificateUri value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSslCertificateUri(String sslCertificateUri) {
        this.sslCertificateUri = sslCertificateUri;
        return this;
    }

    /**
     * Get the sslPreference property: Gets or sets certificate preference if secure communication is enabled.
     *
     * @return the sslPreference value.
     */
    public SslPreference sslPreference() {
        return this.sslPreference;
    }

    /**
     * Set the sslPreference property: Gets or sets certificate preference if secure communication is enabled.
     *
     * @param sslPreference the sslPreference value to set.
     * @return the SapNetWeaverProviderInstanceProperties object itself.
     */
    public SapNetWeaverProviderInstanceProperties withSslPreference(SslPreference sslPreference) {
        this.sslPreference = sslPreference;
        return this;
    }

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