//
// 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.12.17 at 08:48:55 AM 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;


/**
 * <p>Java class for ContactDetailsStructure complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="ContactDetailsStructure"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="MailingAddress" type="{urn:oasis:names:tc:evs:schema:eml}MailingAddressStructure" minOccurs="0"/&gt;
 *         &lt;element name="Email" type="{urn:oasis:names:tc:evs:schema:eml}EmailStructure" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="Telephone" type="{urn:oasis:names:tc:evs:schema:eml}TelephoneStructure" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="Fax" type="{urn:oasis:names:tc:evs:schema:eml}TelephoneStructure" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="PreferredContact" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/&gt;
 *         &lt;any namespace='##other' maxOccurs="unbounded" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *       &lt;attribute name="DisplayOrder" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" /&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ContactDetailsStructure", propOrder = {
    "mailingAddress",
    "email",
    "telephone",
    "fax",
    "preferredContact",
    "any"
})
@XmlSeeAlso({
    de.ivu.wahl.wus.oasis.eml.VoterInformationStructure.Contact.class
})
public class ContactDetailsStructure {

    @XmlElement(name = "MailingAddress")
    protected MailingAddressStructure mailingAddress;
    @XmlElement(name = "Email")
    protected List<EmailStructure> email;
    @XmlElement(name = "Telephone")
    protected List<TelephoneStructure> telephone;
    @XmlElement(name = "Fax")
    protected List<TelephoneStructure> fax;
    @XmlElement(name = "PreferredContact")
    protected String preferredContact;
    @XmlAnyElement(lax = true)
    protected List<Object> any;
    @XmlAttribute(name = "DisplayOrder")
    @XmlSchemaType(name = "positiveInteger")
    protected BigInteger displayOrder;

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

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

    /**
     * Gets the value of the email 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 email property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getEmail().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link EmailStructure }
     * 
     * 
     */
    public List<EmailStructure> getEmail() {
        if (email == null) {
            email = new ArrayList<EmailStructure>();
        }
        return this.email;
    }

    /**
     * Gets the value of the telephone 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 telephone property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getTelephone().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TelephoneStructure }
     * 
     * 
     */
    public List<TelephoneStructure> getTelephone() {
        if (telephone == null) {
            telephone = new ArrayList<TelephoneStructure>();
        }
        return this.telephone;
    }

    /**
     * Gets the value of the fax 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 fax property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getFax().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link TelephoneStructure }
     * 
     * 
     */
    public List<TelephoneStructure> getFax() {
        if (fax == null) {
            fax = new ArrayList<TelephoneStructure>();
        }
        return this.fax;
    }

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

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

    /**
     * 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 displayOrder property.
     * 
     * @return
     *     possible object is
     *     {@link BigInteger }
     *     
     */
    public BigInteger getDisplayOrder() {
        return displayOrder;
    }

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

    public void setEmail(List<EmailStructure> value) {
        this.email = null;
        if (value!= null) {
            List<EmailStructure> draftl = this.getEmail();
            draftl.addAll(value);
        }
    }

    public void setTelephone(List<TelephoneStructure> value) {
        this.telephone = null;
        if (value!= null) {
            List<TelephoneStructure> draftl = this.getTelephone();
            draftl.addAll(value);
        }
    }

    public void setFax(List<TelephoneStructure> value) {
        this.fax = null;
        if (value!= null) {
            List<TelephoneStructure> draftl = this.getFax();
            draftl.addAll(value);
        }
    }

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

}
