//
// 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: 2023.09.11 at 09:59:46 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.JAXBElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlElementRefs;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
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 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 ref="{urn:oasis:names:tc:evs:schema:eml}ReportingUnitIdentifier"/&gt;
 *         &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}CountMetric" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;group ref="{urn:oasis:names:tc:evs:schema:eml}VoteGroup"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "reportingUnitIdentifier",
    "countMetric",
    "selection",
    "cast",
    "read",
    "totalCounted",
    "provisionals",
    "abstentions",
    "rejectedVotes",
    "uncountedVotes"
})
@XmlRootElement(name = "ReportingUnitVotes")
public class ReportingUnitVotes {

    @XmlElement(name = "ReportingUnitIdentifier", required = true)
    protected ReportingUnitIdentifierStructure reportingUnitIdentifier;
    @XmlElement(name = "CountMetric")
    protected List<CountMetricStructure> countMetric;
    @XmlElement(name = "Selection", required = true)
    protected List<ReportingUnitVotes.Selection> selection;
    @XmlElement(name = "Cast")
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger cast;
    @XmlElement(name = "Read")
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger read;
    @XmlElement(name = "TotalCounted")
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger totalCounted;
    @XmlElement(name = "Provisionals")
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger provisionals;
    @XmlElement(name = "Abstentions")
    @XmlSchemaType(name = "nonNegativeInteger")
    protected BigInteger abstentions;
    @XmlElement(name = "RejectedVotes")
    protected List<ReportingUnitVotes.RejectedVotes> rejectedVotes;
    @XmlElement(name = "UncountedVotes")
    protected List<ReportingUnitVotes.UncountedVotes> uncountedVotes;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    public void setCountMetric(List<CountMetricStructure> value) {
        this.countMetric = null;
        if (value!= null) {
            List<CountMetricStructure> draftl = this.getCountMetric();
            draftl.addAll(value);
        }
    }

    public void setSelection(List<ReportingUnitVotes.Selection> value) {
        this.selection = null;
        if (value!= null) {
            List<ReportingUnitVotes.Selection> draftl = this.getSelection();
            draftl.addAll(value);
        }
    }

    public void setRejectedVotes(List<ReportingUnitVotes.RejectedVotes> value) {
        this.rejectedVotes = null;
        if (value!= null) {
            List<ReportingUnitVotes.RejectedVotes> draftl = this.getRejectedVotes();
            draftl.addAll(value);
        }
    }

    public void setUncountedVotes(List<ReportingUnitVotes.UncountedVotes> value) {
        this.uncountedVotes = null;
        if (value!= null) {
            List<ReportingUnitVotes.UncountedVotes> draftl = this.getUncountedVotes();
            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;nonNegativeInteger"&gt;
     *       &lt;attribute name="Reason" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *       &lt;attribute name="ReasonCode" use="required" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *       &lt;attribute name="VoteType" 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 RejectedVotes {

        @XmlValue
        @XmlSchemaType(name = "nonNegativeInteger")
        protected BigInteger value;
        @XmlAttribute(name = "Reason")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String reason;
        @XmlAttribute(name = "ReasonCode", required = true)
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String reasonCode;
        @XmlAttribute(name = "VoteType")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String voteType;

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

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

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

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

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

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

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

        /**
         * Sets the value of the voteType property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setVoteType(String value) {
            this.voteType = 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;choice&gt;
     *           &lt;sequence&gt;
     *             &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}Candidate"/&gt;
     *             &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}AffiliationIdentifier" minOccurs="0"/&gt;
     *           &lt;/sequence&gt;
     *           &lt;sequence&gt;
     *             &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}AffiliationIdentifier"/&gt;
     *             &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}Candidate" minOccurs="0"/&gt;
     *           &lt;/sequence&gt;
     *           &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}ReferendumOptionIdentifier"/&gt;
     *         &lt;/choice&gt;
     *         &lt;element name="ValidVotes" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/&gt;
     *         &lt;element ref="{urn:oasis:names:tc:evs:schema:eml}CountMetric" maxOccurs="unbounded" minOccurs="0"/&gt;
     *       &lt;/sequence&gt;
     *       &lt;attribute name="Value" type="{urn:oasis:names:tc:evs:schema:eml}VotingValueType" /&gt;
     *       &lt;attribute name="Category" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "content"
    })
    public static class Selection {

        @XmlElementRefs({
            @XmlElementRef(name = "Candidate", namespace = "urn:oasis:names:tc:evs:schema:eml", type = JAXBElement.class, required = false),
            @XmlElementRef(name = "AffiliationIdentifier", namespace = "urn:oasis:names:tc:evs:schema:eml", type = JAXBElement.class, required = false),
            @XmlElementRef(name = "ReferendumOptionIdentifier", namespace = "urn:oasis:names:tc:evs:schema:eml", type = JAXBElement.class, required = false),
            @XmlElementRef(name = "ValidVotes", namespace = "urn:oasis:names:tc:evs:schema:eml", type = JAXBElement.class, required = false),
            @XmlElementRef(name = "CountMetric", namespace = "urn:oasis:names:tc:evs:schema:eml", type = JAXBElement.class, required = false)
        })
        protected List<JAXBElement<?>> content;
        @XmlAttribute(name = "Value")
        protected BigInteger value;
        @XmlAttribute(name = "Category")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String category;

        /**
         * Gets the rest of the content model. 
         * 
         * <p>
         * You are getting this "catch-all" property because of the following reason: 
         * The field name "AffiliationIdentifier" is used by two different parts of a schema. See: 
         * line 333 of file:/home/jenkins/agent/workspace/_nl-interfaces-eml_release_1.0.9/src/main/xsd/EML-v5.0-msc/110a-210-230-510-520-combined-v5-0.xsd
         * line 330 of file:/home/jenkins/agent/workspace/_nl-interfaces-eml_release_1.0.9/src/main/xsd/EML-v5.0-msc/110a-210-230-510-520-combined-v5-0.xsd
         * <p>
         * To get rid of this property, apply a property customization to one 
         * of both of the following declarations to change their names: 
         * Gets the value of the content 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 content property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getContent().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link JAXBElement }{@code <}{@link CandidateStructure }{@code >}
         * {@link JAXBElement }{@code <}{@link AffiliationIdentifierStructure }{@code >}
         * {@link JAXBElement }{@code <}{@link ReferendumOptionIdentifierStructure }{@code >}
         * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
         * {@link JAXBElement }{@code <}{@link CountMetricStructure }{@code >}
         * 
         * 
         */
        public List<JAXBElement<?>> getContent() {
            if (content == null) {
                content = new ArrayList<JAXBElement<?>>();
            }
            return this.content;
        }

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

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

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

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

        public void setContent(List<JAXBElement<?>> value) {
            this.content = null;
            if (value!= null) {
                List<JAXBElement<?>> draftl = this.getContent();
                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;nonNegativeInteger"&gt;
     *       &lt;attribute name="Reason" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *       &lt;attribute name="ReasonCode" use="required" type="{http://www.w3.org/2001/XMLSchema}token" /&gt;
     *       &lt;attribute name="VoteType" 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 UncountedVotes {

        @XmlValue
        @XmlSchemaType(name = "nonNegativeInteger")
        protected BigInteger value;
        @XmlAttribute(name = "Reason")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String reason;
        @XmlAttribute(name = "ReasonCode", required = true)
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String reasonCode;
        @XmlAttribute(name = "VoteType")
        @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
        @XmlSchemaType(name = "token")
        protected String voteType;

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

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

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

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

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

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

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

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

    }

}
