//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 
// See <a href="https://javaee.github.io/jaxb-v2/">https://javaee.github.io/jaxb-v2/</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2021.02.08 at 03:34:00 PM UTC 
//


package de.ivu.wahl.wus.oasis.eml;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;


/**
 * <p>Java class for EMLstructure complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="EMLstructure"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}TransactionId"/&gt;
 *         &lt;sequence minOccurs="0"&gt;
 *           &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}SequenceNumber"/&gt;
 *           &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}NumberInSequence"/&gt;
 *           &lt;element name="SequencedElementName" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN"/&gt;
 *         &lt;/sequence&gt;
 *         &lt;element name="AdditionalValidation" minOccurs="0"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="Location" type="{http://www.w3.org/2001/XMLSchema}anyURI"/&gt;
 *                   &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="MessageLanguage" type="{urn:oasis:names:tc:evs:schema:eml}LanguageType" minOccurs="0"/&gt;
 *         &lt;element name="RequestedResponseLanguage" type="{urn:oasis:names:tc:evs:schema:eml}LanguageType" minOccurs="0"/&gt;
 *         &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}ManagingAuthority" minOccurs="0"/&gt;
 *         &lt;element name="IssueDate" type="{urn:oasis:names:tc:evs:schema:eml}DateType" minOccurs="0"/&gt;
 *         &lt;element name="Display" maxOccurs="unbounded" minOccurs="0"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="Stylesheet" maxOccurs="unbounded"&gt;
 *                     &lt;complexType&gt;
 *                       &lt;simpleContent&gt;
 *                         &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema&gt;anyURI"&gt;
 *                           &lt;attribute name="Type" use="required" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
 *                         &lt;/extension&gt;
 *                       &lt;/simpleContent&gt;
 *                     &lt;/complexType&gt;
 *                   &lt;/element&gt;
 *                 &lt;/sequence&gt;
 *                 &lt;attribute name="Format" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" /&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *       &lt;attribute name="Id" use="required" type="{urn:oasis:names:tc:evs:schema:eml}MessageTypeType" /&gt;
 *       &lt;attribute name="SchemaVersion" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" /&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EMLstructure", propOrder = {
    "transactionId",
    "sequenceNumber",
    "numberInSequence",
    "sequencedElementName",
    "additionalValidation",
    "messageLanguage",
    "requestedResponseLanguage",
    "managingAuthority",
    "issueDate",
    "display",
    "any"
})
@XmlSeeAlso({
    EML.class
})
public class EMLstructure {

    @XmlElement(name = "TransactionId", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "token")
    protected String transactionId;
    @XmlElement(name = "SequenceNumber")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger sequenceNumber;
    @XmlElement(name = "NumberInSequence")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger numberInSequence;
    @XmlElement(name = "SequencedElementName")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String sequencedElementName;
    @XmlElement(name = "AdditionalValidation")
    protected EMLstructure.AdditionalValidation additionalValidation;
    @XmlElement(name = "MessageLanguage")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "language")
    protected String messageLanguage;
    @XmlElement(name = "RequestedResponseLanguage")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "language")
    protected String requestedResponseLanguage;
    @XmlElement(name = "ManagingAuthority")
    protected ManagingAuthorityStructure managingAuthority;
    @XmlElement(name = "IssueDate")
    protected String issueDate;
    @XmlElement(name = "Display")
    protected List<EMLstructure.Display> display;
    @XmlAnyElement(lax = true)
    protected List<Object> any;
    @XmlAttribute(name = "Id", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    protected String id;
    @XmlAttribute(name = "SchemaVersion", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NMTOKEN")
    protected String schemaVersion;

    /**
     * Gets the value of the transactionId property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getTransactionId() {
        return transactionId;
    }

    /**
     * Sets the value of the transactionId property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setTransactionId(String value) {
        this.transactionId = value;
    }

    /**
     * Gets the value of the sequenceNumber property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getSequenceNumber() {
        return sequenceNumber;
    }

    /**
     * Sets the value of the sequenceNumber property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setSequenceNumber(BigInteger value) {
        this.sequenceNumber = value;
    }

    /**
     * Gets the value of the numberInSequence property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getNumberInSequence() {
        return numberInSequence;
    }

    /**
     * Sets the value of the numberInSequence property.
     * 
     * @param value
     *     allowed object is
     *     {@link BigInteger }
     *     
     */
    public void setNumberInSequence(BigInteger value) {
        this.numberInSequence = value;
    }

    /**
     * Gets the value of the sequencedElementName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSequencedElementName() {
        return sequencedElementName;
    }

    /**
     * Sets the value of the sequencedElementName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSequencedElementName(String value) {
        this.sequencedElementName = value;
    }

    /**
     * Gets the value of the additionalValidation property.
     * 
     * @return
     *     possible object is
     *     {@link EMLstructure.AdditionalValidation }
     *     
     */
    public EMLstructure.AdditionalValidation getAdditionalValidation() {
        return additionalValidation;
    }

    /**
     * Sets the value of the additionalValidation property.
     * 
     * @param value
     *     allowed object is
     *     {@link EMLstructure.AdditionalValidation }
     *     
     */
    public void setAdditionalValidation(EMLstructure.AdditionalValidation value) {
        this.additionalValidation = value;
    }

    /**
     * Gets the value of the messageLanguage property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getMessageLanguage() {
        return messageLanguage;
    }

    /**
     * Sets the value of the messageLanguage property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setMessageLanguage(String value) {
        this.messageLanguage = value;
    }

    /**
     * Gets the value of the requestedResponseLanguage property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getRequestedResponseLanguage() {
        return requestedResponseLanguage;
    }

    /**
     * Sets the value of the requestedResponseLanguage property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setRequestedResponseLanguage(String value) {
        this.requestedResponseLanguage = value;
    }

    /**
     * Gets the value of the managingAuthority property.
     * 
     * @return
     *     possible object is
     *     {@link ManagingAuthorityStructure }
     *     
     */
    public ManagingAuthorityStructure getManagingAuthority() {
        return managingAuthority;
    }

    /**
     * Sets the value of the managingAuthority property.
     * 
     * @param value
     *     allowed object is
     *     {@link ManagingAuthorityStructure }
     *     
     */
    public void setManagingAuthority(ManagingAuthorityStructure value) {
        this.managingAuthority = value;
    }

    /**
     * Gets the value of the issueDate property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getIssueDate() {
        return issueDate;
    }

    /**
     * Sets the value of the issueDate property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setIssueDate(String value) {
        this.issueDate = value;
    }

    /**
     * Gets the value of the display property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the display property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getDisplay().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link EMLstructure.Display }
     * 
     * 
     */
    public List<EMLstructure.Display> getDisplay() {
        if (display == null) {
            display = new ArrayList<EMLstructure.Display>();
        }
        return this.display;
    }

    /**
     * Gets the value of the any property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the any property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getAny().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link Object }
     * 
     * 
     */
    public List<Object> getAny() {
        if (any == null) {
            any = new ArrayList<Object>();
        }
        return this.any;
    }

    /**
     * Gets the value of the id property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getId() {
        return id;
    }

    /**
     * Sets the value of the id property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setId(String value) {
        this.id = value;
    }

    /**
     * Gets the value of the schemaVersion property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSchemaVersion() {
        return schemaVersion;
    }

    /**
     * Sets the value of the schemaVersion property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSchemaVersion(String value) {
        this.schemaVersion = value;
    }

    public void setDisplay(List<EMLstructure.Display> value) {
        this.display = null;
        if (value!= null) {
            List<EMLstructure.Display> draftl = this.getDisplay();
            draftl.addAll(value);
        }
    }

    public void setAny(List<Object> value) {
        this.any = null;
        if (value!= null) {
            List<Object> draftl = this.getAny();
            draftl.addAll(value);
        }
    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="Location" type="{http://www.w3.org/2001/XMLSchema}anyURI"/&gt;
     *         &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI"/&gt;
     *       &lt;/sequence&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "location",
        "type"
    })
    public static class AdditionalValidation {

        @XmlElement(name = "Location", required = true)
        @XmlSchemaType(name = "anyURI")
        protected String location;
        @XmlElement(name = "Type", required = true)
        @XmlSchemaType(name = "anyURI")
        protected String type;

        /**
         * Gets the value of the location property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getLocation() {
            return location;
        }

        /**
         * Sets the value of the location property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setLocation(String value) {
            this.location = value;
        }

        /**
         * Gets the value of the type property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getType() {
            return type;
        }

        /**
         * Sets the value of the type property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setType(String value) {
            this.type = value;
        }

    }


    /**
     * <p>Java class for anonymous complex type.
     * 
     * <p>The following schema fragment specifies the expected content contained within this class.
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="Stylesheet" maxOccurs="unbounded"&gt;
     *           &lt;complexType&gt;
     *             &lt;simpleContent&gt;
     *               &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema&gt;anyURI"&gt;
     *                 &lt;attribute name="Type" use="required" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *               &lt;/extension&gt;
     *             &lt;/simpleContent&gt;
     *           &lt;/complexType&gt;
     *         &lt;/element&gt;
     *       &lt;/sequence&gt;
     *       &lt;attribute name="Format" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" /&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "stylesheet"
    })
    public static class Display {

        @XmlElement(name = "Stylesheet", required = true)
        protected List<EMLstructure.Display.Stylesheet> stylesheet;
        @XmlAttribute(name = "Format")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "NMTOKEN")
        protected String format;

        /**
         * Gets the value of the stylesheet property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the stylesheet property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getStylesheet().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link EMLstructure.Display.Stylesheet }
         * 
         * 
         */
        public List<EMLstructure.Display.Stylesheet> getStylesheet() {
            if (stylesheet == null) {
                stylesheet = new ArrayList<EMLstructure.Display.Stylesheet>();
            }
            return this.stylesheet;
        }

        /**
         * Gets the value of the format property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getFormat() {
            return format;
        }

        /**
         * Sets the value of the format property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setFormat(String value) {
            this.format = value;
        }

        public void setStylesheet(List<EMLstructure.Display.Stylesheet> value) {
            this.stylesheet = null;
            if (value!= null) {
                List<EMLstructure.Display.Stylesheet> draftl = this.getStylesheet();
                draftl.addAll(value);
            }
        }


        /**
         * <p>Java class for anonymous complex type.
         * 
         * <p>The following schema fragment specifies the expected content contained within this class.
         * 
         * <pre>
         * &lt;complexType&gt;
         *   &lt;simpleContent&gt;
         *     &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema&gt;anyURI"&gt;
         *       &lt;attribute name="Type" use="required" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
         *     &lt;/extension&gt;
         *   &lt;/simpleContent&gt;
         * &lt;/complexType&gt;
         * </pre>
         * 
         * 
         */
        @XmlAccessorType(XmlAccessType.FIELD)
        @XmlType(name = "", propOrder = {
            "value"
        })
        public static class Stylesheet {

            @XmlValue
            @XmlSchemaType(name = "anyURI")
            protected String value;
            @XmlAttribute(name = "Type", required = true)
            @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
            @XmlSchemaType(name = "token")
            protected String type;

            /**
             * Gets the value of the value property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getValue() {
                return value;
            }

            /**
             * Sets the value of the value property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setValue(String value) {
                this.value = value;
            }

            /**
             * Gets the value of the type property.
             * 
             * @return
             *     possible object is
             *     {@link String }
             *     
             */
            public String getType() {
                return type;
            }

            /**
             * Sets the value of the type property.
             * 
             * @param value
             *     allowed object is
             *     {@link String }
             *     
             */
            public void setType(String value) {
                this.type = value;
            }

        }

    }

}
