//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.7 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2017.07.24 at 05:36:05 PM EEST 
//


package lt.registrucentras.esaskaita.service.invoice.ubl.cbc;

import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import com.google.common.base.Objects;
import lt.registrucentras.esaskaita.service.invoice.ubl.udt.CodeType;


/**
 * <p>Java class for ItemClassificationCodeType complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="ItemClassificationCodeType">
 *   &lt;simpleContent>
 *     &lt;extension base="&lt;urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2>CodeType">
 *     &lt;/extension>
 *   &lt;/simpleContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ItemClassificationCodeType")
public class ItemClassificationCodeType
    extends CodeType
    implements Serializable
{

    private final static long serialVersionUID = 1L;

    /**
     * Default no-arg constructor
     * 
     */
    public ItemClassificationCodeType() {
        super();
    }

    /**
     * Fully-initialising value constructor
     * 
     */
    public ItemClassificationCodeType(final String value, final String listID, final String listAgencyID, final String listAgencyName, final String listName, final String listVersionID, final String name, final String languageID, final String listURI, final String listSchemeURI) {
        super(value, listID, listAgencyID, listAgencyName, listName, listVersionID, name, languageID, listURI, listSchemeURI);
    }

    @Override
    public ItemClassificationCodeType withValue(String value) {
        setValue(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListID(String value) {
        setListID(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListAgencyID(String value) {
        setListAgencyID(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListAgencyName(String value) {
        setListAgencyName(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListName(String value) {
        setListName(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListVersionID(String value) {
        setListVersionID(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withName(String value) {
        setName(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withLanguageID(String value) {
        setLanguageID(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListURI(String value) {
        setListURI(value);
        return this;
    }

    @Override
    public ItemClassificationCodeType withListSchemeURI(String value) {
        setListSchemeURI(value);
        return this;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this).add("value", value).add("listID", listID).add("listAgencyID", listAgencyID).add("listAgencyName", listAgencyName).add("listName", listName).add("listVersionID", listVersionID).add("name", name).add("languageID", languageID).add("listURI", listURI).add("listSchemeURI", listSchemeURI).toString();
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(value, listID, listAgencyID, listAgencyName, listName, listVersionID, name, languageID, listURI, listSchemeURI);
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (other == null) {
            return false;
        }
        if (getClass()!= other.getClass()) {
            return false;
        }
        final ItemClassificationCodeType o = ((ItemClassificationCodeType) other);
        return (((((((((Objects.equal(value, o.value)&&Objects.equal(listID, o.listID))&&Objects.equal(listAgencyID, o.listAgencyID))&&Objects.equal(listAgencyName, o.listAgencyName))&&Objects.equal(listName, o.listName))&&Objects.equal(listVersionID, o.listVersionID))&&Objects.equal(name, o.name))&&Objects.equal(languageID, o.languageID))&&Objects.equal(listURI, o.listURI))&&Objects.equal(listSchemeURI, o.listSchemeURI));
    }

}
