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

package com.azure.resourcemanager.logic.models;

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

/** The Edifact envelope override settings. */
@Fluent
public final class EdifactEnvelopeOverride {
    /*
     * The message id on which this envelope settings has to be applied.
     */
    @JsonProperty(value = "messageId")
    private String messageId;

    /*
     * The message version on which this envelope settings has to be applied.
     */
    @JsonProperty(value = "messageVersion")
    private String messageVersion;

    /*
     * The message release version on which this envelope settings has to be applied.
     */
    @JsonProperty(value = "messageRelease")
    private String messageRelease;

    /*
     * The message association assigned code.
     */
    @JsonProperty(value = "messageAssociationAssignedCode")
    private String messageAssociationAssignedCode;

    /*
     * The target namespace on which this envelope settings has to be applied.
     */
    @JsonProperty(value = "targetNamespace")
    private String targetNamespace;

    /*
     * The functional group id.
     */
    @JsonProperty(value = "functionalGroupId")
    private String functionalGroupId;

    /*
     * The sender application qualifier.
     */
    @JsonProperty(value = "senderApplicationQualifier")
    private String senderApplicationQualifier;

    /*
     * The sender application id.
     */
    @JsonProperty(value = "senderApplicationId")
    private String senderApplicationId;

    /*
     * The receiver application qualifier.
     */
    @JsonProperty(value = "receiverApplicationQualifier")
    private String receiverApplicationQualifier;

    /*
     * The receiver application id.
     */
    @JsonProperty(value = "receiverApplicationId")
    private String receiverApplicationId;

    /*
     * The controlling agency code.
     */
    @JsonProperty(value = "controllingAgencyCode")
    private String controllingAgencyCode;

    /*
     * The group header message version.
     */
    @JsonProperty(value = "groupHeaderMessageVersion")
    private String groupHeaderMessageVersion;

    /*
     * The group header message release.
     */
    @JsonProperty(value = "groupHeaderMessageRelease")
    private String groupHeaderMessageRelease;

    /*
     * The association assigned code.
     */
    @JsonProperty(value = "associationAssignedCode")
    private String associationAssignedCode;

    /*
     * The application password.
     */
    @JsonProperty(value = "applicationPassword")
    private String applicationPassword;

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

    /**
     * Get the messageId property: The message id on which this envelope settings has to be applied.
     *
     * @return the messageId value.
     */
    public String messageId() {
        return this.messageId;
    }

    /**
     * Set the messageId property: The message id on which this envelope settings has to be applied.
     *
     * @param messageId the messageId value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withMessageId(String messageId) {
        this.messageId = messageId;
        return this;
    }

    /**
     * Get the messageVersion property: The message version on which this envelope settings has to be applied.
     *
     * @return the messageVersion value.
     */
    public String messageVersion() {
        return this.messageVersion;
    }

    /**
     * Set the messageVersion property: The message version on which this envelope settings has to be applied.
     *
     * @param messageVersion the messageVersion value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withMessageVersion(String messageVersion) {
        this.messageVersion = messageVersion;
        return this;
    }

    /**
     * Get the messageRelease property: The message release version on which this envelope settings has to be applied.
     *
     * @return the messageRelease value.
     */
    public String messageRelease() {
        return this.messageRelease;
    }

    /**
     * Set the messageRelease property: The message release version on which this envelope settings has to be applied.
     *
     * @param messageRelease the messageRelease value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withMessageRelease(String messageRelease) {
        this.messageRelease = messageRelease;
        return this;
    }

    /**
     * Get the messageAssociationAssignedCode property: The message association assigned code.
     *
     * @return the messageAssociationAssignedCode value.
     */
    public String messageAssociationAssignedCode() {
        return this.messageAssociationAssignedCode;
    }

    /**
     * Set the messageAssociationAssignedCode property: The message association assigned code.
     *
     * @param messageAssociationAssignedCode the messageAssociationAssignedCode value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withMessageAssociationAssignedCode(String messageAssociationAssignedCode) {
        this.messageAssociationAssignedCode = messageAssociationAssignedCode;
        return this;
    }

    /**
     * Get the targetNamespace property: The target namespace on which this envelope settings has to be applied.
     *
     * @return the targetNamespace value.
     */
    public String targetNamespace() {
        return this.targetNamespace;
    }

    /**
     * Set the targetNamespace property: The target namespace on which this envelope settings has to be applied.
     *
     * @param targetNamespace the targetNamespace value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withTargetNamespace(String targetNamespace) {
        this.targetNamespace = targetNamespace;
        return this;
    }

    /**
     * Get the functionalGroupId property: The functional group id.
     *
     * @return the functionalGroupId value.
     */
    public String functionalGroupId() {
        return this.functionalGroupId;
    }

    /**
     * Set the functionalGroupId property: The functional group id.
     *
     * @param functionalGroupId the functionalGroupId value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withFunctionalGroupId(String functionalGroupId) {
        this.functionalGroupId = functionalGroupId;
        return this;
    }

    /**
     * Get the senderApplicationQualifier property: The sender application qualifier.
     *
     * @return the senderApplicationQualifier value.
     */
    public String senderApplicationQualifier() {
        return this.senderApplicationQualifier;
    }

    /**
     * Set the senderApplicationQualifier property: The sender application qualifier.
     *
     * @param senderApplicationQualifier the senderApplicationQualifier value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withSenderApplicationQualifier(String senderApplicationQualifier) {
        this.senderApplicationQualifier = senderApplicationQualifier;
        return this;
    }

    /**
     * Get the senderApplicationId property: The sender application id.
     *
     * @return the senderApplicationId value.
     */
    public String senderApplicationId() {
        return this.senderApplicationId;
    }

    /**
     * Set the senderApplicationId property: The sender application id.
     *
     * @param senderApplicationId the senderApplicationId value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withSenderApplicationId(String senderApplicationId) {
        this.senderApplicationId = senderApplicationId;
        return this;
    }

    /**
     * Get the receiverApplicationQualifier property: The receiver application qualifier.
     *
     * @return the receiverApplicationQualifier value.
     */
    public String receiverApplicationQualifier() {
        return this.receiverApplicationQualifier;
    }

    /**
     * Set the receiverApplicationQualifier property: The receiver application qualifier.
     *
     * @param receiverApplicationQualifier the receiverApplicationQualifier value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withReceiverApplicationQualifier(String receiverApplicationQualifier) {
        this.receiverApplicationQualifier = receiverApplicationQualifier;
        return this;
    }

    /**
     * Get the receiverApplicationId property: The receiver application id.
     *
     * @return the receiverApplicationId value.
     */
    public String receiverApplicationId() {
        return this.receiverApplicationId;
    }

    /**
     * Set the receiverApplicationId property: The receiver application id.
     *
     * @param receiverApplicationId the receiverApplicationId value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withReceiverApplicationId(String receiverApplicationId) {
        this.receiverApplicationId = receiverApplicationId;
        return this;
    }

    /**
     * Get the controllingAgencyCode property: The controlling agency code.
     *
     * @return the controllingAgencyCode value.
     */
    public String controllingAgencyCode() {
        return this.controllingAgencyCode;
    }

    /**
     * Set the controllingAgencyCode property: The controlling agency code.
     *
     * @param controllingAgencyCode the controllingAgencyCode value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withControllingAgencyCode(String controllingAgencyCode) {
        this.controllingAgencyCode = controllingAgencyCode;
        return this;
    }

    /**
     * Get the groupHeaderMessageVersion property: The group header message version.
     *
     * @return the groupHeaderMessageVersion value.
     */
    public String groupHeaderMessageVersion() {
        return this.groupHeaderMessageVersion;
    }

    /**
     * Set the groupHeaderMessageVersion property: The group header message version.
     *
     * @param groupHeaderMessageVersion the groupHeaderMessageVersion value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withGroupHeaderMessageVersion(String groupHeaderMessageVersion) {
        this.groupHeaderMessageVersion = groupHeaderMessageVersion;
        return this;
    }

    /**
     * Get the groupHeaderMessageRelease property: The group header message release.
     *
     * @return the groupHeaderMessageRelease value.
     */
    public String groupHeaderMessageRelease() {
        return this.groupHeaderMessageRelease;
    }

    /**
     * Set the groupHeaderMessageRelease property: The group header message release.
     *
     * @param groupHeaderMessageRelease the groupHeaderMessageRelease value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withGroupHeaderMessageRelease(String groupHeaderMessageRelease) {
        this.groupHeaderMessageRelease = groupHeaderMessageRelease;
        return this;
    }

    /**
     * Get the associationAssignedCode property: The association assigned code.
     *
     * @return the associationAssignedCode value.
     */
    public String associationAssignedCode() {
        return this.associationAssignedCode;
    }

    /**
     * Set the associationAssignedCode property: The association assigned code.
     *
     * @param associationAssignedCode the associationAssignedCode value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withAssociationAssignedCode(String associationAssignedCode) {
        this.associationAssignedCode = associationAssignedCode;
        return this;
    }

    /**
     * Get the applicationPassword property: The application password.
     *
     * @return the applicationPassword value.
     */
    public String applicationPassword() {
        return this.applicationPassword;
    }

    /**
     * Set the applicationPassword property: The application password.
     *
     * @param applicationPassword the applicationPassword value to set.
     * @return the EdifactEnvelopeOverride object itself.
     */
    public EdifactEnvelopeOverride withApplicationPassword(String applicationPassword) {
        this.applicationPassword = applicationPassword;
        return this;
    }

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