/*
 * Copyright 2015-2018 OpenEstate.org.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.openestate.io.examples;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.bind.JAXBException;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.PropertyConfigurator;
import org.openestate.io.trovit.TrovitDocument;
import org.openestate.io.trovit.TrovitUtils;
import org.openestate.io.trovit.xml.AdType;
import org.openestate.io.trovit.xml.Trovit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;

/**
 * Example for reading Trovit XML feeds.
 * <p>
 * This example illustrates how to read Trovit XML feeds.
 *
 * @author Andreas Rudolph
 * @since 1.0
 */
public class TrovitReadingExample {
    @SuppressWarnings("unused")
    private final static Logger LOGGER = LoggerFactory.getLogger(TrovitReadingExample.class);
    private final static String PACKAGE = "/org/openestate/io/examples";

    /**
     * Start the example application.
     *
     * @param args command line arguments
     */
    @SuppressWarnings("Duplicates")
    public static void main(String[] args) {
        // init logging
        PropertyConfigurator.configure(
                TrovitReadingExample.class.getResource(PACKAGE + "/log4j.properties"));

        // read example files, if no files were specified as command line arguments
        if (args.length < 1) {
            try {
                read(TrovitReadingExample.class.getResourceAsStream(PACKAGE + "/trovit.xml"));
            } catch (Exception ex) {
                LOGGER.error("Can't read example file!");
                LOGGER.error("> " + ex.getLocalizedMessage(), ex);
                System.exit(2);
            }
        }

        // read files, that were specified as command line arguments
        else {
            for (String arg : args) {
                try {
                    read(new File(arg));
                } catch (Exception ex) {
                    LOGGER.error("Can't read file '" + arg + "'!");
                    LOGGER.error("> " + ex.getLocalizedMessage(), ex);
                    System.exit(2);
                }
            }
        }
    }

    /**
     * Read a {@link File} into a {@link TrovitDocument} and print some of its
     * content to console.
     *
     * @param xmlFile the file to read
     * @throws SAXException                 if the file is not readable by the XML parser
     * @throws IOException                  if the file is not readable
     * @throws ParserConfigurationException if the XML parser is improperly configured
     * @throws JAXBException                if XML conversion into Java objects failed
     */
    protected static void read(File xmlFile) throws SAXException, IOException, ParserConfigurationException, JAXBException {
        LOGGER.info("process file: " + xmlFile.getAbsolutePath());
        if (!xmlFile.isFile()) {
            LOGGER.warn("> provided file is invalid");
            return;
        }
        TrovitDocument doc = TrovitUtils.createDocument(xmlFile);
        if (doc == null) {
            LOGGER.warn("> provided XML is not supported");
        } else {
            printToConsole(doc);
        }
    }

    /**
     * Read a {@link InputStream} into a {@link TrovitDocument} and print some of
     * its content to console.
     *
     * @param xmlInputStream the input stream to read
     * @throws SAXException                 if the file is not readable by the XML parser
     * @throws IOException                  if the file is not readable
     * @throws ParserConfigurationException if the XML parser is improperly configured
     * @throws JAXBException                if XML conversion into Java objects failed
     */
    protected static void read(InputStream xmlInputStream) throws SAXException, IOException, ParserConfigurationException, JAXBException {
        LOGGER.info("process example file");
        TrovitDocument doc = TrovitUtils.createDocument(xmlInputStream);
        if (doc == null) {
            LOGGER.warn("> provided XML is not supported");
        } else {
            printToConsole(doc);
        }
    }

    /**
     * Print some content of a {@link TrovitDocument} to console.
     *
     * @param doc the document to process
     * @throws JAXBException if XML conversion into Java objects failed
     */
    protected static void printToConsole(TrovitDocument doc) throws JAXBException {
        Trovit trovit = doc.toObject();

        // process ads
        for (AdType ad : trovit.getAd()) {
            // get object nr
            String objectNr = StringUtils.trimToNull(ad.getId());
            if (objectNr == null) objectNr = "???";

            // get object title
            String objectTitle = StringUtils.trimToNull(ad.getTitle());
            if (objectTitle == null) objectTitle = "???";

            // print object information to console
            LOGGER.info("> found object '" + objectNr + "' "
                    + "with title '" + objectTitle + "'");
        }
    }
}


package org.openestate.io.openimmo.xml;

import java.io.Serializable;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <haus> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "haus")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
public class Haus implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlAttribute(name = "haustyp")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Haus.Haustyp haustyp;

    /**
     * Gets the value of the haustyp property.
     *
     * @return
     *     possible object is
     *     {@link Haus.Haustyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Haus.Haustyp getHaustyp() {
        return haustyp;
    }

    /**
     * Sets the value of the haustyp property.
     *
     * @param value
     *     allowed object is
     *     {@link Haus.Haustyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setHaustyp(Haus.Haustyp value) {
        this.haustyp = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            Haus.Haustyp theHaustyp;
            theHaustyp = this.getHaustyp();
            strategy.appendField(locator, this, "haustyp", buffer, theHaustyp, (this.haustyp!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof Haus) {
            final Haus copy = ((Haus) draftCopy);
            {
                Boolean haustypShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.haustyp!= null));
                if (haustypShouldBeCopiedAndSet == Boolean.TRUE) {
                    Haus.Haustyp sourceHaustyp;
                    sourceHaustyp = this.getHaustyp();
                    Haus.Haustyp copyHaustyp = ((Haus.Haustyp) strategy.copy(LocatorUtils.property(locator, "haustyp", sourceHaustyp), sourceHaustyp, (this.haustyp!= null)));
                    copy.setHaustyp(copyHaustyp);
                } else {
                    if (haustypShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.haustyp = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new Haus();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final Haus that = ((Haus) object);
        {
            Haus.Haustyp lhsHaustyp;
            lhsHaustyp = this.getHaustyp();
            Haus.Haustyp rhsHaustyp;
            rhsHaustyp = that.getHaustyp();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "haustyp", lhsHaustyp), LocatorUtils.property(thatLocator, "haustyp", rhsHaustyp), lhsHaustyp, rhsHaustyp, (this.haustyp!= null), (that.haustyp!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
     *                     Java enum for haustyp attribute in <haus> elements.
     *
     *
Java class for null.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *

     *

     * <simpleType>
     *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *     <enumeration value="REIHENHAUS"/>
     *     <enumeration value="REIHENEND"/>
     *     <enumeration value="REIHENMITTEL"/>
     *     <enumeration value="REIHENECK"/>
     *     <enumeration value="DOPPELHAUSHAELFTE"/>
     *     <enumeration value="EINFAMILIENHAUS"/>
     *     <enumeration value="STADTHAUS"/>
     *     <enumeration value="BUNGALOW"/>
     *     <enumeration value="VILLA"/>
     *     <enumeration value="RESTHOF"/>
     *     <enumeration value="BAUERNHAUS"/>
     *     <enumeration value="LANDHAUS"/>
     *     <enumeration value="SCHLOSS"/>
     *     <enumeration value="ZWEIFAMILIENHAUS"/>
     *     <enumeration value="MEHRFAMILIENHAUS"/>
     *     <enumeration value="FERIENHAUS"/>
     *     <enumeration value="BERGHUETTE"/>
     *     <enumeration value="CHALET"/>
     *     <enumeration value="STRANDHAUS"/>
     *     <enumeration value="LAUBE-DATSCHE-GARTENHAUS"/>
     *     <enumeration value="APARTMENTHAUS"/>
     *     <enumeration value="BURG"/>
     *     <enumeration value="HERRENHAUS"/>
     *     <enumeration value="FINCA"/>
     *     <enumeration value="RUSTICO"/>
     *     <enumeration value="FERTIGHAUS"/>
     *     <enumeration value="KEINE_ANGABE"/>
     *   </restriction>
     * </simpleType>
     *

     *
     */
    @XmlType(name = "")
    @XmlEnum
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public enum Haustyp {

        REIHENHAUS("REIHENHAUS"),
        REIHENEND("REIHENEND"),
        REIHENMITTEL("REIHENMITTEL"),
        REIHENECK("REIHENECK"),
        DOPPELHAUSHAELFTE("DOPPELHAUSHAELFTE"),
        EINFAMILIENHAUS("EINFAMILIENHAUS"),
        STADTHAUS("STADTHAUS"),
        BUNGALOW("BUNGALOW"),
        VILLA("VILLA"),
        RESTHOF("RESTHOF"),
        BAUERNHAUS("BAUERNHAUS"),
        LANDHAUS("LANDHAUS"),
        SCHLOSS("SCHLOSS"),
        ZWEIFAMILIENHAUS("ZWEIFAMILIENHAUS"),
        MEHRFAMILIENHAUS("MEHRFAMILIENHAUS"),
        FERIENHAUS("FERIENHAUS"),
        BERGHUETTE("BERGHUETTE"),
        CHALET("CHALET"),
        STRANDHAUS("STRANDHAUS"),
        @XmlEnumValue("LAUBE-DATSCHE-GARTENHAUS")
        LAUBE_DATSCHE_GARTENHAUS("LAUBE-DATSCHE-GARTENHAUS"),
        APARTMENTHAUS("APARTMENTHAUS"),
        BURG("BURG"),
        HERRENHAUS("HERRENHAUS"),
        FINCA("FINCA"),
        RUSTICO("RUSTICO"),
        FERTIGHAUS("FERTIGHAUS"),
        KEINE_ANGABE("KEINE_ANGABE");
        private final String value;

        Haustyp(String v) {
            value = v;
        }

        public String value() {
            return value;
        }

        public static Haus.Haustyp fromValue(String v) {
            for (Haus.Haustyp c: Haus.Haustyp.values()) {
                if (c.value.equals(v)) {
                    return c;
                }
            }
            throw new IllegalArgumentException(v);
        }

    }

}


/*
 * Copyright 2015-2018 OpenEstate.org.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.openestate.io.examples;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.bind.JAXBException;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.PropertyConfigurator;
import org.openestate.io.kyero.KyeroDocument;
import org.openestate.io.kyero.KyeroUtils;
import org.openestate.io.kyero.xml.PropertyType;
import org.openestate.io.kyero.xml.Root;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.SAXException;

/**
 * Example for reading Kyero XML feeds.
 * <p>
 * This example illustrates how to read Kyero XML feeds.
 *
 * @author Andreas Rudolph
 * @since 1.0
 */
public class KyeroReadingExample {
    @SuppressWarnings("unused")
    private final static Logger LOGGER = LoggerFactory.getLogger(KyeroReadingExample.class);
    private final static String PACKAGE = "/org/openestate/io/examples";

    /**
     * Start the example application.
     *
     * @param args command line arguments
     */
    @SuppressWarnings("Duplicates")
    public static void main(String[] args) {
        // init logging
        PropertyConfigurator.configure(
                KyeroReadingExample.class.getResource(PACKAGE + "/log4j.properties"));

        // read example files, if no files were specified as command line arguments
        if (args.length < 1) {
            try {
                read(KyeroReadingExample.class.getResourceAsStream(PACKAGE + "/kyero.xml"));
            } catch (Exception ex) {
                LOGGER.error("Can't read example file!");
                LOGGER.error("> " + ex.getLocalizedMessage(), ex);
                System.exit(2);
            }
        }

        // read files, that were specified as command line arguments
        else {
            for (String arg : args) {
                try {
                    read(new File(arg));
                } catch (Exception ex) {
                    LOGGER.error("Can't read file '" + arg + "'!");
                    LOGGER.error("> " + ex.getLocalizedMessage(), ex);
                    System.exit(2);
                }
            }
        }
    }

    /**
     * Read a {@link File} into a {@link KyeroDocument} and print some of its
     * content to console.
     *
     * @param xmlFile the file to read
     * @throws SAXException                 if the file is not readable by the XML parser
     * @throws IOException                  if the file is not readable
     * @throws ParserConfigurationException if the XML parser is improperly configured
     * @throws JAXBException                if XML conversion into Java objects failed
     */
    protected static void read(File xmlFile) throws SAXException, IOException, ParserConfigurationException, JAXBException {
        LOGGER.info("process file: " + xmlFile.getAbsolutePath());
        if (!xmlFile.isFile()) {
            LOGGER.warn("> provided file is invalid");
            return;
        }
        KyeroDocument doc = KyeroUtils.createDocument(xmlFile);
        if (doc == null) {
            LOGGER.warn("> provided XML is not supported");
        } else {
            printToConsole(doc);
        }
    }

    /**
     * Read a {@link InputStream} into a {@link KyeroDocument} and print some of
     * its content to console.
     *
     * @param xmlInputStream the input stream to read
     * @throws SAXException                 if the file is not readable by the XML parser
     * @throws IOException                  if the file is not readable
     * @throws ParserConfigurationException if the XML parser is improperly configured
     * @throws JAXBException                if XML conversion into Java objects failed
     */
    protected static void read(InputStream xmlInputStream) throws SAXException, IOException, ParserConfigurationException, JAXBException {
        LOGGER.info("process example file");
        KyeroDocument doc = KyeroUtils.createDocument(xmlInputStream);
        if (doc == null) {
            LOGGER.warn("> provided XML is not supported");
        } else {
            printToConsole(doc);
        }
    }

    /**
     * Print some content of a {@link KyeroDocument} to console.
     *
     * @param doc the document to process
     * @throws JAXBException if XML conversion into Java objects failed
     */
    protected static void printToConsole(KyeroDocument doc) throws JAXBException {
        Root root = doc.toObject();

        // process properties in the document
        for (PropertyType obj : root.getProperty()) {
            // get object nr
            String objectNr = (obj.getId() != null) ?
                    obj.getId() : "???";

            // get object description
            String objectInfo = null;
            if (obj.getDesc() != null) {
                objectInfo = StringUtils.trimToNull(obj.getDesc().getEn());
                if (objectInfo == null)
                    objectInfo = StringUtils.trimToNull(obj.getDesc().getDe());
                if (objectInfo == null)
                    objectInfo = StringUtils.trimToNull(obj.getDesc().getEs());
            }

            // print object information to console
            LOGGER.info("> found object '" + objectNr + "' "
                    + "with title '" + objectInfo + "'");
        }
    }
}


package org.openestate.io.openimmo.xml;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <zustand_angaben> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "baujahr",
    "letztemodernisierung",
    "zustand",
    "alter",
    "bebaubarNach",
    "erschliessung",
    "erschliessungUmfang",
    "bauzone",
    "altlasten",
    "energiepass",
    "verkaufstatus",
    "userDefinedSimplefield",
    "userDefinedAnyfield",
    "userDefinedExtend"
})
@XmlRootElement(name = "zustand_angaben")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
public class ZustandAngaben implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected String baujahr;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected String letztemodernisierung;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Zustand zustand;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Alter alter;
    @XmlElement(name = "bebaubar_nach")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected BebaubarNach bebaubarNach;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Erschliessung erschliessung;
    @XmlElement(name = "erschliessung_umfang")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected ErschliessungUmfang erschliessungUmfang;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected String bauzone;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected String altlasten;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<Energiepass> energiepass;
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Verkaufstatus verkaufstatus;
    @XmlElement(name = "user_defined_simplefield")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<UserDefinedSimplefield> userDefinedSimplefield;
    @XmlElement(name = "user_defined_anyfield")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<UserDefinedAnyfield> userDefinedAnyfield;
    @XmlElement(name = "user_defined_extend")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected List<UserDefinedExtend> userDefinedExtend;

    /**
     * Gets the value of the baujahr property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String getBaujahr() {
        return baujahr;
    }

    /**
     * Sets the value of the baujahr property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setBaujahr(String value) {
        this.baujahr = value;
    }

    /**
     * Gets the value of the letztemodernisierung property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String getLetztemodernisierung() {
        return letztemodernisierung;
    }

    /**
     * Sets the value of the letztemodernisierung property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setLetztemodernisierung(String value) {
        this.letztemodernisierung = value;
    }

    /**
     * Gets the value of the zustand property.
     *
     * @return
     *     possible object is
     *     {@link Zustand }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Zustand getZustand() {
        return zustand;
    }

    /**
     * Sets the value of the zustand property.
     *
     * @param value
     *     allowed object is
     *     {@link Zustand }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setZustand(Zustand value) {
        this.zustand = value;
    }

    /**
     * Gets the value of the alter property.
     *
     * @return
     *     possible object is
     *     {@link Alter }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Alter getAlter() {
        return alter;
    }

    /**
     * Sets the value of the alter property.
     *
     * @param value
     *     allowed object is
     *     {@link Alter }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setAlter(Alter value) {
        this.alter = value;
    }

    /**
     * Gets the value of the bebaubarNach property.
     *
     * @return
     *     possible object is
     *     {@link BebaubarNach }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public BebaubarNach getBebaubarNach() {
        return bebaubarNach;
    }

    /**
     * Sets the value of the bebaubarNach property.
     *
     * @param value
     *     allowed object is
     *     {@link BebaubarNach }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setBebaubarNach(BebaubarNach value) {
        this.bebaubarNach = value;
    }

    /**
     * Gets the value of the erschliessung property.
     *
     * @return
     *     possible object is
     *     {@link Erschliessung }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Erschliessung getErschliessung() {
        return erschliessung;
    }

    /**
     * Sets the value of the erschliessung property.
     *
     * @param value
     *     allowed object is
     *     {@link Erschliessung }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setErschliessung(Erschliessung value) {
        this.erschliessung = value;
    }

    /**
     * Gets the value of the erschliessungUmfang property.
     *
     * @return
     *     possible object is
     *     {@link ErschliessungUmfang }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public ErschliessungUmfang getErschliessungUmfang() {
        return erschliessungUmfang;
    }

    /**
     * Sets the value of the erschliessungUmfang property.
     *
     * @param value
     *     allowed object is
     *     {@link ErschliessungUmfang }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setErschliessungUmfang(ErschliessungUmfang value) {
        this.erschliessungUmfang = value;
    }

    /**
     * Gets the value of the bauzone property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String getBauzone() {
        return bauzone;
    }

    /**
     * Sets the value of the bauzone property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setBauzone(String value) {
        this.bauzone = value;
    }

    /**
     * Gets the value of the altlasten property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String getAltlasten() {
        return altlasten;
    }

    /**
     * Sets the value of the altlasten property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setAltlasten(String value) {
        this.altlasten = value;
    }

    /**
     * Gets the value of the energiepass property.
     *
     *

     * 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 set method for the energiepass property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getEnergiepass().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link Energiepass }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<Energiepass> getEnergiepass() {
        if (energiepass == null) {
            energiepass = new ArrayList<Energiepass>();
        }
        return this.energiepass;
    }

    /**
     * Gets the value of the verkaufstatus property.
     *
     * @return
     *     possible object is
     *     {@link Verkaufstatus }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Verkaufstatus getVerkaufstatus() {
        return verkaufstatus;
    }

    /**
     * Sets the value of the verkaufstatus property.
     *
     * @param value
     *     allowed object is
     *     {@link Verkaufstatus }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setVerkaufstatus(Verkaufstatus value) {
        this.verkaufstatus = value;
    }

    /**
     * Gets the value of the userDefinedSimplefield property.
     *
     *

     * 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 set method for the userDefinedSimplefield property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getUserDefinedSimplefield().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link UserDefinedSimplefield }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<UserDefinedSimplefield> getUserDefinedSimplefield() {
        if (userDefinedSimplefield == null) {
            userDefinedSimplefield = new ArrayList<UserDefinedSimplefield>();
        }
        return this.userDefinedSimplefield;
    }

    /**
     * Gets the value of the userDefinedAnyfield property.
     *
     *

     * 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 set method for the userDefinedAnyfield property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getUserDefinedAnyfield().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link UserDefinedAnyfield }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<UserDefinedAnyfield> getUserDefinedAnyfield() {
        if (userDefinedAnyfield == null) {
            userDefinedAnyfield = new ArrayList<UserDefinedAnyfield>();
        }
        return this.userDefinedAnyfield;
    }

    /**
     * Gets the value of the userDefinedExtend property.
     *
     *

     * 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 set method for the userDefinedExtend property.
     *
     *

     * For example, to add a new item, do as follows:
     *

     *    getUserDefinedExtend().add(newItem);
     *

     *
     *
     *

     * Objects of the following type(s) are allowed in the list
     * {@link UserDefinedExtend }
     *
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public List<UserDefinedExtend> getUserDefinedExtend() {
        if (userDefinedExtend == null) {
            userDefinedExtend = new ArrayList<UserDefinedExtend>();
        }
        return this.userDefinedExtend;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            String theBaujahr;
            theBaujahr = this.getBaujahr();
            strategy.appendField(locator, this, "baujahr", buffer, theBaujahr, (this.baujahr!= null));
        }
        {
            String theLetztemodernisierung;
            theLetztemodernisierung = this.getLetztemodernisierung();
            strategy.appendField(locator, this, "letztemodernisierung", buffer, theLetztemodernisierung, (this.letztemodernisierung!= null));
        }
        {
            Zustand theZustand;
            theZustand = this.getZustand();
            strategy.appendField(locator, this, "zustand", buffer, theZustand, (this.zustand!= null));
        }
        {
            Alter theAlter;
            theAlter = this.getAlter();
            strategy.appendField(locator, this, "alter", buffer, theAlter, (this.alter!= null));
        }
        {
            BebaubarNach theBebaubarNach;
            theBebaubarNach = this.getBebaubarNach();
            strategy.appendField(locator, this, "bebaubarNach", buffer, theBebaubarNach, (this.bebaubarNach!= null));
        }
        {
            Erschliessung theErschliessung;
            theErschliessung = this.getErschliessung();
            strategy.appendField(locator, this, "erschliessung", buffer, theErschliessung, (this.erschliessung!= null));
        }
        {
            ErschliessungUmfang theErschliessungUmfang;
            theErschliessungUmfang = this.getErschliessungUmfang();
            strategy.appendField(locator, this, "erschliessungUmfang", buffer, theErschliessungUmfang, (this.erschliessungUmfang!= null));
        }
        {
            String theBauzone;
            theBauzone = this.getBauzone();
            strategy.appendField(locator, this, "bauzone", buffer, theBauzone, (this.bauzone!= null));
        }
        {
            String theAltlasten;
            theAltlasten = this.getAltlasten();
            strategy.appendField(locator, this, "altlasten", buffer, theAltlasten, (this.altlasten!= null));
        }
        {
            List<Energiepass> theEnergiepass;
            theEnergiepass = (((this.energiepass!= null)&&(!this.energiepass.isEmpty()))?this.getEnergiepass():null);
            strategy.appendField(locator, this, "energiepass", buffer, theEnergiepass, ((this.energiepass!= null)&&(!this.energiepass.isEmpty())));
        }
        {
            Verkaufstatus theVerkaufstatus;
            theVerkaufstatus = this.getVerkaufstatus();
            strategy.appendField(locator, this, "verkaufstatus", buffer, theVerkaufstatus, (this.verkaufstatus!= null));
        }
        {
            List<UserDefinedSimplefield> theUserDefinedSimplefield;
            theUserDefinedSimplefield = (((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty()))?this.getUserDefinedSimplefield():null);
            strategy.appendField(locator, this, "userDefinedSimplefield", buffer, theUserDefinedSimplefield, ((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty())));
        }
        {
            List<UserDefinedAnyfield> theUserDefinedAnyfield;
            theUserDefinedAnyfield = (((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty()))?this.getUserDefinedAnyfield():null);
            strategy.appendField(locator, this, "userDefinedAnyfield", buffer, theUserDefinedAnyfield, ((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty())));
        }
        {
            List<UserDefinedExtend> theUserDefinedExtend;
            theUserDefinedExtend = (((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty()))?this.getUserDefinedExtend():null);
            strategy.appendField(locator, this, "userDefinedExtend", buffer, theUserDefinedExtend, ((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty())));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof ZustandAngaben) {
            final ZustandAngaben copy = ((ZustandAngaben) draftCopy);
            {
                Boolean baujahrShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.baujahr!= null));
                if (baujahrShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceBaujahr;
                    sourceBaujahr = this.getBaujahr();
                    String copyBaujahr = ((String) strategy.copy(LocatorUtils.property(locator, "baujahr", sourceBaujahr), sourceBaujahr, (this.baujahr!= null)));
                    copy.setBaujahr(copyBaujahr);
                } else {
                    if (baujahrShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.baujahr = null;
                    }
                }
            }
            {
                Boolean letztemodernisierungShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.letztemodernisierung!= null));
                if (letztemodernisierungShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceLetztemodernisierung;
                    sourceLetztemodernisierung = this.getLetztemodernisierung();
                    String copyLetztemodernisierung = ((String) strategy.copy(LocatorUtils.property(locator, "letztemodernisierung", sourceLetztemodernisierung), sourceLetztemodernisierung, (this.letztemodernisierung!= null)));
                    copy.setLetztemodernisierung(copyLetztemodernisierung);
                } else {
                    if (letztemodernisierungShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.letztemodernisierung = null;
                    }
                }
            }
            {
                Boolean zustandShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.zustand!= null));
                if (zustandShouldBeCopiedAndSet == Boolean.TRUE) {
                    Zustand sourceZustand;
                    sourceZustand = this.getZustand();
                    Zustand copyZustand = ((Zustand) strategy.copy(LocatorUtils.property(locator, "zustand", sourceZustand), sourceZustand, (this.zustand!= null)));
                    copy.setZustand(copyZustand);
                } else {
                    if (zustandShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.zustand = null;
                    }
                }
            }
            {
                Boolean alterShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.alter!= null));
                if (alterShouldBeCopiedAndSet == Boolean.TRUE) {
                    Alter sourceAlter;
                    sourceAlter = this.getAlter();
                    Alter copyAlter = ((Alter) strategy.copy(LocatorUtils.property(locator, "alter", sourceAlter), sourceAlter, (this.alter!= null)));
                    copy.setAlter(copyAlter);
                } else {
                    if (alterShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.alter = null;
                    }
                }
            }
            {
                Boolean bebaubarNachShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.bebaubarNach!= null));
                if (bebaubarNachShouldBeCopiedAndSet == Boolean.TRUE) {
                    BebaubarNach sourceBebaubarNach;
                    sourceBebaubarNach = this.getBebaubarNach();
                    BebaubarNach copyBebaubarNach = ((BebaubarNach) strategy.copy(LocatorUtils.property(locator, "bebaubarNach", sourceBebaubarNach), sourceBebaubarNach, (this.bebaubarNach!= null)));
                    copy.setBebaubarNach(copyBebaubarNach);
                } else {
                    if (bebaubarNachShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.bebaubarNach = null;
                    }
                }
            }
            {
                Boolean erschliessungShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.erschliessung!= null));
                if (erschliessungShouldBeCopiedAndSet == Boolean.TRUE) {
                    Erschliessung sourceErschliessung;
                    sourceErschliessung = this.getErschliessung();
                    Erschliessung copyErschliessung = ((Erschliessung) strategy.copy(LocatorUtils.property(locator, "erschliessung", sourceErschliessung), sourceErschliessung, (this.erschliessung!= null)));
                    copy.setErschliessung(copyErschliessung);
                } else {
                    if (erschliessungShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.erschliessung = null;
                    }
                }
            }
            {
                Boolean erschliessungUmfangShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.erschliessungUmfang!= null));
                if (erschliessungUmfangShouldBeCopiedAndSet == Boolean.TRUE) {
                    ErschliessungUmfang sourceErschliessungUmfang;
                    sourceErschliessungUmfang = this.getErschliessungUmfang();
                    ErschliessungUmfang copyErschliessungUmfang = ((ErschliessungUmfang) strategy.copy(LocatorUtils.property(locator, "erschliessungUmfang", sourceErschliessungUmfang), sourceErschliessungUmfang, (this.erschliessungUmfang!= null)));
                    copy.setErschliessungUmfang(copyErschliessungUmfang);
                } else {
                    if (erschliessungUmfangShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.erschliessungUmfang = null;
                    }
                }
            }
            {
                Boolean bauzoneShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.bauzone!= null));
                if (bauzoneShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceBauzone;
                    sourceBauzone = this.getBauzone();
                    String copyBauzone = ((String) strategy.copy(LocatorUtils.property(locator, "bauzone", sourceBauzone), sourceBauzone, (this.bauzone!= null)));
                    copy.setBauzone(copyBauzone);
                } else {
                    if (bauzoneShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.bauzone = null;
                    }
                }
            }
            {
                Boolean altlastenShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.altlasten!= null));
                if (altlastenShouldBeCopiedAndSet == Boolean.TRUE) {
                    String sourceAltlasten;
                    sourceAltlasten = this.getAltlasten();
                    String copyAltlasten = ((String) strategy.copy(LocatorUtils.property(locator, "altlasten", sourceAltlasten), sourceAltlasten, (this.altlasten!= null)));
                    copy.setAltlasten(copyAltlasten);
                } else {
                    if (altlastenShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.altlasten = null;
                    }
                }
            }
            {
                Boolean energiepassShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.energiepass!= null)&&(!this.energiepass.isEmpty())));
                if (energiepassShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<Energiepass> sourceEnergiepass;
                    sourceEnergiepass = (((this.energiepass!= null)&&(!this.energiepass.isEmpty()))?this.getEnergiepass():null);
                    @SuppressWarnings("unchecked")
                    List<Energiepass> copyEnergiepass = ((List<Energiepass> ) strategy.copy(LocatorUtils.property(locator, "energiepass", sourceEnergiepass), sourceEnergiepass, ((this.energiepass!= null)&&(!this.energiepass.isEmpty()))));
                    copy.energiepass = null;
                    if (copyEnergiepass!= null) {
                        List<Energiepass> uniqueEnergiepassl = copy.getEnergiepass();
                        uniqueEnergiepassl.addAll(copyEnergiepass);
                    }
                } else {
                    if (energiepassShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.energiepass = null;
                    }
                }
            }
            {
                Boolean verkaufstatusShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.verkaufstatus!= null));
                if (verkaufstatusShouldBeCopiedAndSet == Boolean.TRUE) {
                    Verkaufstatus sourceVerkaufstatus;
                    sourceVerkaufstatus = this.getVerkaufstatus();
                    Verkaufstatus copyVerkaufstatus = ((Verkaufstatus) strategy.copy(LocatorUtils.property(locator, "verkaufstatus", sourceVerkaufstatus), sourceVerkaufstatus, (this.verkaufstatus!= null)));
                    copy.setVerkaufstatus(copyVerkaufstatus);
                } else {
                    if (verkaufstatusShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.verkaufstatus = null;
                    }
                }
            }
            {
                Boolean userDefinedSimplefieldShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty())));
                if (userDefinedSimplefieldShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<UserDefinedSimplefield> sourceUserDefinedSimplefield;
                    sourceUserDefinedSimplefield = (((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty()))?this.getUserDefinedSimplefield():null);
                    @SuppressWarnings("unchecked")
                    List<UserDefinedSimplefield> copyUserDefinedSimplefield = ((List<UserDefinedSimplefield> ) strategy.copy(LocatorUtils.property(locator, "userDefinedSimplefield", sourceUserDefinedSimplefield), sourceUserDefinedSimplefield, ((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty()))));
                    copy.userDefinedSimplefield = null;
                    if (copyUserDefinedSimplefield!= null) {
                        List<UserDefinedSimplefield> uniqueUserDefinedSimplefieldl = copy.getUserDefinedSimplefield();
                        uniqueUserDefinedSimplefieldl.addAll(copyUserDefinedSimplefield);
                    }
                } else {
                    if (userDefinedSimplefieldShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.userDefinedSimplefield = null;
                    }
                }
            }
            {
                Boolean userDefinedAnyfieldShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty())));
                if (userDefinedAnyfieldShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<UserDefinedAnyfield> sourceUserDefinedAnyfield;
                    sourceUserDefinedAnyfield = (((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty()))?this.getUserDefinedAnyfield():null);
                    @SuppressWarnings("unchecked")
                    List<UserDefinedAnyfield> copyUserDefinedAnyfield = ((List<UserDefinedAnyfield> ) strategy.copy(LocatorUtils.property(locator, "userDefinedAnyfield", sourceUserDefinedAnyfield), sourceUserDefinedAnyfield, ((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty()))));
                    copy.userDefinedAnyfield = null;
                    if (copyUserDefinedAnyfield!= null) {
                        List<UserDefinedAnyfield> uniqueUserDefinedAnyfieldl = copy.getUserDefinedAnyfield();
                        uniqueUserDefinedAnyfieldl.addAll(copyUserDefinedAnyfield);
                    }
                } else {
                    if (userDefinedAnyfieldShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.userDefinedAnyfield = null;
                    }
                }
            }
            {
                Boolean userDefinedExtendShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, ((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty())));
                if (userDefinedExtendShouldBeCopiedAndSet == Boolean.TRUE) {
                    List<UserDefinedExtend> sourceUserDefinedExtend;
                    sourceUserDefinedExtend = (((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty()))?this.getUserDefinedExtend():null);
                    @SuppressWarnings("unchecked")
                    List<UserDefinedExtend> copyUserDefinedExtend = ((List<UserDefinedExtend> ) strategy.copy(LocatorUtils.property(locator, "userDefinedExtend", sourceUserDefinedExtend), sourceUserDefinedExtend, ((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty()))));
                    copy.userDefinedExtend = null;
                    if (copyUserDefinedExtend!= null) {
                        List<UserDefinedExtend> uniqueUserDefinedExtendl = copy.getUserDefinedExtend();
                        uniqueUserDefinedExtendl.addAll(copyUserDefinedExtend);
                    }
                } else {
                    if (userDefinedExtendShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.userDefinedExtend = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new ZustandAngaben();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final ZustandAngaben that = ((ZustandAngaben) object);
        {
            String lhsBaujahr;
            lhsBaujahr = this.getBaujahr();
            String rhsBaujahr;
            rhsBaujahr = that.getBaujahr();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "baujahr", lhsBaujahr), LocatorUtils.property(thatLocator, "baujahr", rhsBaujahr), lhsBaujahr, rhsBaujahr, (this.baujahr!= null), (that.baujahr!= null))) {
                return false;
            }
        }
        {
            String lhsLetztemodernisierung;
            lhsLetztemodernisierung = this.getLetztemodernisierung();
            String rhsLetztemodernisierung;
            rhsLetztemodernisierung = that.getLetztemodernisierung();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "letztemodernisierung", lhsLetztemodernisierung), LocatorUtils.property(thatLocator, "letztemodernisierung", rhsLetztemodernisierung), lhsLetztemodernisierung, rhsLetztemodernisierung, (this.letztemodernisierung!= null), (that.letztemodernisierung!= null))) {
                return false;
            }
        }
        {
            Zustand lhsZustand;
            lhsZustand = this.getZustand();
            Zustand rhsZustand;
            rhsZustand = that.getZustand();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "zustand", lhsZustand), LocatorUtils.property(thatLocator, "zustand", rhsZustand), lhsZustand, rhsZustand, (this.zustand!= null), (that.zustand!= null))) {
                return false;
            }
        }
        {
            Alter lhsAlter;
            lhsAlter = this.getAlter();
            Alter rhsAlter;
            rhsAlter = that.getAlter();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "alter", lhsAlter), LocatorUtils.property(thatLocator, "alter", rhsAlter), lhsAlter, rhsAlter, (this.alter!= null), (that.alter!= null))) {
                return false;
            }
        }
        {
            BebaubarNach lhsBebaubarNach;
            lhsBebaubarNach = this.getBebaubarNach();
            BebaubarNach rhsBebaubarNach;
            rhsBebaubarNach = that.getBebaubarNach();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "bebaubarNach", lhsBebaubarNach), LocatorUtils.property(thatLocator, "bebaubarNach", rhsBebaubarNach), lhsBebaubarNach, rhsBebaubarNach, (this.bebaubarNach!= null), (that.bebaubarNach!= null))) {
                return false;
            }
        }
        {
            Erschliessung lhsErschliessung;
            lhsErschliessung = this.getErschliessung();
            Erschliessung rhsErschliessung;
            rhsErschliessung = that.getErschliessung();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "erschliessung", lhsErschliessung), LocatorUtils.property(thatLocator, "erschliessung", rhsErschliessung), lhsErschliessung, rhsErschliessung, (this.erschliessung!= null), (that.erschliessung!= null))) {
                return false;
            }
        }
        {
            ErschliessungUmfang lhsErschliessungUmfang;
            lhsErschliessungUmfang = this.getErschliessungUmfang();
            ErschliessungUmfang rhsErschliessungUmfang;
            rhsErschliessungUmfang = that.getErschliessungUmfang();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "erschliessungUmfang", lhsErschliessungUmfang), LocatorUtils.property(thatLocator, "erschliessungUmfang", rhsErschliessungUmfang), lhsErschliessungUmfang, rhsErschliessungUmfang, (this.erschliessungUmfang!= null), (that.erschliessungUmfang!= null))) {
                return false;
            }
        }
        {
            String lhsBauzone;
            lhsBauzone = this.getBauzone();
            String rhsBauzone;
            rhsBauzone = that.getBauzone();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "bauzone", lhsBauzone), LocatorUtils.property(thatLocator, "bauzone", rhsBauzone), lhsBauzone, rhsBauzone, (this.bauzone!= null), (that.bauzone!= null))) {
                return false;
            }
        }
        {
            String lhsAltlasten;
            lhsAltlasten = this.getAltlasten();
            String rhsAltlasten;
            rhsAltlasten = that.getAltlasten();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "altlasten", lhsAltlasten), LocatorUtils.property(thatLocator, "altlasten", rhsAltlasten), lhsAltlasten, rhsAltlasten, (this.altlasten!= null), (that.altlasten!= null))) {
                return false;
            }
        }
        {
            List<Energiepass> lhsEnergiepass;
            lhsEnergiepass = (((this.energiepass!= null)&&(!this.energiepass.isEmpty()))?this.getEnergiepass():null);
            List<Energiepass> rhsEnergiepass;
            rhsEnergiepass = (((that.energiepass!= null)&&(!that.energiepass.isEmpty()))?that.getEnergiepass():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "energiepass", lhsEnergiepass), LocatorUtils.property(thatLocator, "energiepass", rhsEnergiepass), lhsEnergiepass, rhsEnergiepass, ((this.energiepass!= null)&&(!this.energiepass.isEmpty())), ((that.energiepass!= null)&&(!that.energiepass.isEmpty())))) {
                return false;
            }
        }
        {
            Verkaufstatus lhsVerkaufstatus;
            lhsVerkaufstatus = this.getVerkaufstatus();
            Verkaufstatus rhsVerkaufstatus;
            rhsVerkaufstatus = that.getVerkaufstatus();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "verkaufstatus", lhsVerkaufstatus), LocatorUtils.property(thatLocator, "verkaufstatus", rhsVerkaufstatus), lhsVerkaufstatus, rhsVerkaufstatus, (this.verkaufstatus!= null), (that.verkaufstatus!= null))) {
                return false;
            }
        }
        {
            List<UserDefinedSimplefield> lhsUserDefinedSimplefield;
            lhsUserDefinedSimplefield = (((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty()))?this.getUserDefinedSimplefield():null);
            List<UserDefinedSimplefield> rhsUserDefinedSimplefield;
            rhsUserDefinedSimplefield = (((that.userDefinedSimplefield!= null)&&(!that.userDefinedSimplefield.isEmpty()))?that.getUserDefinedSimplefield():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "userDefinedSimplefield", lhsUserDefinedSimplefield), LocatorUtils.property(thatLocator, "userDefinedSimplefield", rhsUserDefinedSimplefield), lhsUserDefinedSimplefield, rhsUserDefinedSimplefield, ((this.userDefinedSimplefield!= null)&&(!this.userDefinedSimplefield.isEmpty())), ((that.userDefinedSimplefield!= null)&&(!that.userDefinedSimplefield.isEmpty())))) {
                return false;
            }
        }
        {
            List<UserDefinedAnyfield> lhsUserDefinedAnyfield;
            lhsUserDefinedAnyfield = (((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty()))?this.getUserDefinedAnyfield():null);
            List<UserDefinedAnyfield> rhsUserDefinedAnyfield;
            rhsUserDefinedAnyfield = (((that.userDefinedAnyfield!= null)&&(!that.userDefinedAnyfield.isEmpty()))?that.getUserDefinedAnyfield():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "userDefinedAnyfield", lhsUserDefinedAnyfield), LocatorUtils.property(thatLocator, "userDefinedAnyfield", rhsUserDefinedAnyfield), lhsUserDefinedAnyfield, rhsUserDefinedAnyfield, ((this.userDefinedAnyfield!= null)&&(!this.userDefinedAnyfield.isEmpty())), ((that.userDefinedAnyfield!= null)&&(!that.userDefinedAnyfield.isEmpty())))) {
                return false;
            }
        }
        {
            List<UserDefinedExtend> lhsUserDefinedExtend;
            lhsUserDefinedExtend = (((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty()))?this.getUserDefinedExtend():null);
            List<UserDefinedExtend> rhsUserDefinedExtend;
            rhsUserDefinedExtend = (((that.userDefinedExtend!= null)&&(!that.userDefinedExtend.isEmpty()))?that.getUserDefinedExtend():null);
            if (!strategy.equals(LocatorUtils.property(thisLocator, "userDefinedExtend", lhsUserDefinedExtend), LocatorUtils.property(thatLocator, "userDefinedExtend", rhsUserDefinedExtend), lhsUserDefinedExtend, rhsUserDefinedExtend, ((this.userDefinedExtend!= null)&&(!this.userDefinedExtend.isEmpty())), ((that.userDefinedExtend!= null)&&(!that.userDefinedExtend.isEmpty())))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

}


package org.openestate.io.openimmo.xml;

import java.io.Serializable;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <unterkellert> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "unterkellert")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
public class Unterkellert implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlAttribute(name = "keller")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    protected Unterkellert.Keller keller;

    /**
     * Gets the value of the keller property.
     *
     * @return
     *     possible object is
     *     {@link Unterkellert.Keller }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Unterkellert.Keller getKeller() {
        return keller;
    }

    /**
     * Sets the value of the keller property.
     *
     * @param value
     *     allowed object is
     *     {@link Unterkellert.Keller }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public void setKeller(Unterkellert.Keller value) {
        this.keller = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            Unterkellert.Keller theKeller;
            theKeller = this.getKeller();
            strategy.appendField(locator, this, "keller", buffer, theKeller, (this.keller!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof Unterkellert) {
            final Unterkellert copy = ((Unterkellert) draftCopy);
            {
                Boolean kellerShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.keller!= null));
                if (kellerShouldBeCopiedAndSet == Boolean.TRUE) {
                    Unterkellert.Keller sourceKeller;
                    sourceKeller = this.getKeller();
                    Unterkellert.Keller copyKeller = ((Unterkellert.Keller) strategy.copy(LocatorUtils.property(locator, "keller", sourceKeller), sourceKeller, (this.keller!= null)));
                    copy.setKeller(copyKeller);
                } else {
                    if (kellerShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.keller = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new Unterkellert();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final Unterkellert that = ((Unterkellert) object);
        {
            Unterkellert.Keller lhsKeller;
            lhsKeller = this.getKeller();
            Unterkellert.Keller rhsKeller;
            rhsKeller = that.getKeller();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "keller", lhsKeller), LocatorUtils.property(thatLocator, "keller", rhsKeller), lhsKeller, rhsKeller, (this.keller!= null), (that.keller!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
     *                     Java enum for keller attribute in <unterkellert> elements.
     *
     *
Java class for null.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *

     *

     * <simpleType>
     *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *     <enumeration value="JA"/>
     *     <enumeration value="NEIN"/>
     *     <enumeration value="TEIL"/>
     *   </restriction>
     * </simpleType>
     *

     *
     */
    @XmlType(name = "")
    @XmlEnum
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:54:50+02:00", comments = "JAXB RI v2.2.11")
    public enum Keller {

        JA,
        NEIN,
        TEIL;

        public String value() {
            return name();
        }

        public static Unterkellert.Keller fromValue(String v) {
            return valueOf(v);
        }

    }

}


package org.openestate.io.immoxml.xml;

import java.io.Serializable;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <grundstueck> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "grundstueck")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
public class Grundstueck implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlAttribute(name = "grundst_typ")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    protected Grundstueck.GrundstTyp grundstTyp;

    /**
     * Gets the value of the grundstTyp property.
     *
     * @return
     *     possible object is
     *     {@link Grundstueck.GrundstTyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Grundstueck.GrundstTyp getGrundstTyp() {
        return grundstTyp;
    }

    /**
     * Sets the value of the grundstTyp property.
     *
     * @param value
     *     allowed object is
     *     {@link Grundstueck.GrundstTyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public void setGrundstTyp(Grundstueck.GrundstTyp value) {
        this.grundstTyp = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            Grundstueck.GrundstTyp theGrundstTyp;
            theGrundstTyp = this.getGrundstTyp();
            strategy.appendField(locator, this, "grundstTyp", buffer, theGrundstTyp, (this.grundstTyp!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof Grundstueck) {
            final Grundstueck copy = ((Grundstueck) draftCopy);
            {
                Boolean grundstTypShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.grundstTyp!= null));
                if (grundstTypShouldBeCopiedAndSet == Boolean.TRUE) {
                    Grundstueck.GrundstTyp sourceGrundstTyp;
                    sourceGrundstTyp = this.getGrundstTyp();
                    Grundstueck.GrundstTyp copyGrundstTyp = ((Grundstueck.GrundstTyp) strategy.copy(LocatorUtils.property(locator, "grundstTyp", sourceGrundstTyp), sourceGrundstTyp, (this.grundstTyp!= null)));
                    copy.setGrundstTyp(copyGrundstTyp);
                } else {
                    if (grundstTypShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.grundstTyp = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new Grundstueck();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final Grundstueck that = ((Grundstueck) object);
        {
            Grundstueck.GrundstTyp lhsGrundstTyp;
            lhsGrundstTyp = this.getGrundstTyp();
            Grundstueck.GrundstTyp rhsGrundstTyp;
            rhsGrundstTyp = that.getGrundstTyp();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "grundstTyp", lhsGrundstTyp), LocatorUtils.property(thatLocator, "grundstTyp", rhsGrundstTyp), lhsGrundstTyp, rhsGrundstTyp, (this.grundstTyp!= null), (that.grundstTyp!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
     *                     Java enum for grundst_typ attribute in <grundstueck> elements.
     *
     *
Java class for null.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *

     *

     * <simpleType>
     *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *     <enumeration value="WOHNEN"/>
     *     <enumeration value="GEWERBE"/>
     *     <enumeration value="INDUSTRIE"/>
     *     <enumeration value="LAND_FORSTWIRSCHAFT"/>
     *     <enumeration value="FREIZEIT"/>
     *     <enumeration value="GEMISCHT"/>
     *     <enumeration value="SONDERNUTZUNG"/>
     *   </restriction>
     * </simpleType>
     *

     *
     */
    @XmlType(name = "")
    @XmlEnum
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public enum GrundstTyp {

        WOHNEN,
        GEWERBE,
        INDUSTRIE,
        LAND_FORSTWIRSCHAFT,
        FREIZEIT,
        GEMISCHT,
        SONDERNUTZUNG;

        public String value() {
            return name();
        }

        public static Grundstueck.GrundstTyp fromValue(String v) {
            return valueOf(v);
        }

    }

}


package org.openestate.io.immoxml.xml;

import java.io.Serializable;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <geschlecht> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "geschlecht")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
public class Geschlecht implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlAttribute(name = "geschl_attr")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    protected Geschlecht.GeschlAttr geschlAttr;

    /**
     * Gets the value of the geschlAttr property.
     *
     * @return
     *     possible object is
     *     {@link Geschlecht.GeschlAttr }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Geschlecht.GeschlAttr getGeschlAttr() {
        return geschlAttr;
    }

    /**
     * Sets the value of the geschlAttr property.
     *
     * @param value
     *     allowed object is
     *     {@link Geschlecht.GeschlAttr }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public void setGeschlAttr(Geschlecht.GeschlAttr value) {
        this.geschlAttr = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            Geschlecht.GeschlAttr theGeschlAttr;
            theGeschlAttr = this.getGeschlAttr();
            strategy.appendField(locator, this, "geschlAttr", buffer, theGeschlAttr, (this.geschlAttr!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof Geschlecht) {
            final Geschlecht copy = ((Geschlecht) draftCopy);
            {
                Boolean geschlAttrShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.geschlAttr!= null));
                if (geschlAttrShouldBeCopiedAndSet == Boolean.TRUE) {
                    Geschlecht.GeschlAttr sourceGeschlAttr;
                    sourceGeschlAttr = this.getGeschlAttr();
                    Geschlecht.GeschlAttr copyGeschlAttr = ((Geschlecht.GeschlAttr) strategy.copy(LocatorUtils.property(locator, "geschlAttr", sourceGeschlAttr), sourceGeschlAttr, (this.geschlAttr!= null)));
                    copy.setGeschlAttr(copyGeschlAttr);
                } else {
                    if (geschlAttrShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.geschlAttr = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new Geschlecht();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final Geschlecht that = ((Geschlecht) object);
        {
            Geschlecht.GeschlAttr lhsGeschlAttr;
            lhsGeschlAttr = this.getGeschlAttr();
            Geschlecht.GeschlAttr rhsGeschlAttr;
            rhsGeschlAttr = that.getGeschlAttr();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "geschlAttr", lhsGeschlAttr), LocatorUtils.property(thatLocator, "geschlAttr", rhsGeschlAttr), lhsGeschlAttr, rhsGeschlAttr, (this.geschlAttr!= null), (that.geschlAttr!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
     *                     Java enum for geschl_attr attribute in <geschlecht> elements.
     *
     *
Java class for null.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *

     *

     * <simpleType>
     *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *     <enumeration value="EGAL"/>
     *     <enumeration value="NUR_MANN"/>
     *     <enumeration value="NUR_FRAU"/>
     *   </restriction>
     * </simpleType>
     *

     *
     */
    @XmlType(name = "")
    @XmlEnum
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public enum GeschlAttr {

        EGAL,
        NUR_MANN,
        NUR_FRAU;

        public String value() {
            return name();
        }

        public static Geschlecht.GeschlAttr fromValue(String v) {
            return valueOf(v);
        }

    }

}


package org.openestate.io.immoxml.xml;

import java.io.Serializable;
import javax.annotation.Generated;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.jvnet.jaxb2_commons.lang.CopyStrategy2;
import org.jvnet.jaxb2_commons.lang.CopyTo2;
import org.jvnet.jaxb2_commons.lang.Equals2;
import org.jvnet.jaxb2_commons.lang.EqualsStrategy2;
import org.jvnet.jaxb2_commons.lang.JAXBCopyStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBEqualsStrategy;
import org.jvnet.jaxb2_commons.lang.JAXBToStringStrategy;
import org.jvnet.jaxb2_commons.lang.ToString2;
import org.jvnet.jaxb2_commons.lang.ToStringStrategy2;
import org.jvnet.jaxb2_commons.locator.ObjectLocator;
import org.jvnet.jaxb2_commons.locator.util.LocatorUtils;

/**
 * Java class for <hallen_lager_prod> element.
 *
 *
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "hallen_lager_prod")
@Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
public class HallenLagerProd implements Serializable, Cloneable, CopyTo2, Equals2, ToString2
{

    @XmlAttribute(name = "hallen_typ")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    protected HallenLagerProd.HallenTyp hallenTyp;

    /**
     * Gets the value of the hallenTyp property.
     *
     * @return
     *     possible object is
     *     {@link HallenLagerProd.HallenTyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public HallenLagerProd.HallenTyp getHallenTyp() {
        return hallenTyp;
    }

    /**
     * Sets the value of the hallenTyp property.
     *
     * @param value
     *     allowed object is
     *     {@link HallenLagerProd.HallenTyp }
     *
     */
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public void setHallenTyp(HallenLagerProd.HallenTyp value) {
        this.hallenTyp = value;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public String toString() {
        final ToStringStrategy2 strategy = JAXBToStringStrategy.INSTANCE;
        final StringBuilder buffer = new StringBuilder();
        append(null, buffer, strategy);
        return buffer.toString();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder append(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        strategy.appendStart(locator, this, buffer);
        appendFields(locator, buffer, strategy);
        strategy.appendEnd(locator, this, buffer);
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public StringBuilder appendFields(ObjectLocator locator, StringBuilder buffer, ToStringStrategy2 strategy) {
        {
            HallenLagerProd.HallenTyp theHallenTyp;
            theHallenTyp = this.getHallenTyp();
            strategy.appendField(locator, this, "hallenTyp", buffer, theHallenTyp, (this.hallenTyp!= null));
        }
        return buffer;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object clone() {
        return copyTo(createNewInstance());
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(Object target) {
        final CopyStrategy2 strategy = JAXBCopyStrategy.INSTANCE;
        return copyTo(null, target, strategy);
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object copyTo(ObjectLocator locator, Object target, CopyStrategy2 strategy) {
        final Object draftCopy = ((target == null)?createNewInstance():target);
        if (draftCopy instanceof HallenLagerProd) {
            final HallenLagerProd copy = ((HallenLagerProd) draftCopy);
            {
                Boolean hallenTypShouldBeCopiedAndSet = strategy.shouldBeCopiedAndSet(locator, (this.hallenTyp!= null));
                if (hallenTypShouldBeCopiedAndSet == Boolean.TRUE) {
                    HallenLagerProd.HallenTyp sourceHallenTyp;
                    sourceHallenTyp = this.getHallenTyp();
                    HallenLagerProd.HallenTyp copyHallenTyp = ((HallenLagerProd.HallenTyp) strategy.copy(LocatorUtils.property(locator, "hallenTyp", sourceHallenTyp), sourceHallenTyp, (this.hallenTyp!= null)));
                    copy.setHallenTyp(copyHallenTyp);
                } else {
                    if (hallenTypShouldBeCopiedAndSet == Boolean.FALSE) {
                        copy.hallenTyp = null;
                    }
                }
            }
        }
        return draftCopy;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public Object createNewInstance() {
        return new HallenLagerProd();
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(ObjectLocator thisLocator, ObjectLocator thatLocator, Object object, EqualsStrategy2 strategy) {
        if ((object == null)||(this.getClass()!= object.getClass())) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final HallenLagerProd that = ((HallenLagerProd) object);
        {
            HallenLagerProd.HallenTyp lhsHallenTyp;
            lhsHallenTyp = this.getHallenTyp();
            HallenLagerProd.HallenTyp rhsHallenTyp;
            rhsHallenTyp = that.getHallenTyp();
            if (!strategy.equals(LocatorUtils.property(thisLocator, "hallenTyp", lhsHallenTyp), LocatorUtils.property(thatLocator, "hallenTyp", rhsHallenTyp), lhsHallenTyp, rhsHallenTyp, (this.hallenTyp!= null), (that.hallenTyp!= null))) {
                return false;
            }
        }
        return true;
    }

    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public boolean equals(Object object) {
        final EqualsStrategy2 strategy = JAXBEqualsStrategy.INSTANCE;
        return equals(null, null, object, strategy);
    }

    /**
     *
     *                     Java enum for hallen_typ attribute in <hallen_lager_prod> elements.
     *
     *
Java class for null.
     *
     *
The following schema fragment specifies the expected content contained within this class.
     *

     *

     * <simpleType>
     *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
     *     <enumeration value="HALLE"/>
     *     <enumeration value="LAGER"/>
     *     <enumeration value="PRODUKTION"/>
     *     <enumeration value="WERKSTATT"/>
     *     <enumeration value="WERKSTATT"/>
     *     <enumeration value="HOCHREGALLAGER"/>
     *     <enumeration value="SERVICE"/>
     *     <enumeration value="FREIFLAECHEN"/>
     *   </restriction>
     * </simpleType>
     *

     *
     */
    @XmlType(name = "")
    @XmlEnum
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2018-10-12T02:50:55+02:00", comments = "JAXB RI v2.2.11")
    public enum HallenTyp {

        HALLE,
        LAGER,
        PRODUKTION,
        WERKSTATT,
        HOCHREGALLAGER,
        SERVICE,
        FREIFLAECHEN;

        public String value() {
            return name();
        }

        public static HallenLagerProd.HallenTyp fromValue(String v) {
            return valueOf(v);
        }

    }

}