org.openestate.io.is24_csv.records.GrundstueckGewerbe.java Source code

Java tutorial

Introduction

Here is the source code for org.openestate.io.is24_csv.records.GrundstueckGewerbe.java

Source

/*
 * Copyright 2015-2016 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.is24_csv.records;

import java.math.BigDecimal;
import org.apache.commons.csv.CSVRecord;
import org.openestate.io.is24_csv.Is24CsvFormat;
import org.openestate.io.is24_csv.types.BebaubarNach;
import org.openestate.io.is24_csv.types.Erschliessung;
import org.openestate.io.is24_csv.types.Immobilienart;
import org.openestate.io.is24_csv.types.NutzungGrundstueckGewerbe;
import org.openestate.io.is24_csv.types.ObjektkategorieGrundstueck;
import org.openestate.io.is24_csv.types.Vermarktungsart;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Record from the IS24-CSV format for plots with commercial use.
 *
 * @since 1.0
 * @author Andreas Rudolph
 */
public class GrundstueckGewerbe extends Grundstueck {
    private final static Logger LOGGER = LoggerFactory.getLogger(GrundstueckGewerbe.class);

    /** Grundstcksflche, Zahl 10,2 */
    protected final static int FIELD_GRUNDSTUECKSFLAECHE = 62;

    /** Flche teilbar ab (in m), Zahl 8 */
    protected final static int FIELD_FLAECHE_TEILBAR_AB = 63;

    /** Empfohlene Nutzung, Zahl 2 (Mehrfachauswahl mglich, wenn Eingaben durch Semikolon getrennt werden. Jeder mgliche Wert darf max. einmal erscheinen.) */
    protected final static int FIELD_EMPFOHLENE_NUTZUNG = 64;

    /** bebaubar nach, Text 1 */
    protected final static int FIELD_BEBAUBAR_NACH = 65;

    /** Erbpachtdauer in Jahren (Heimfall nach), Zahl 3 */
    protected final static int FIELD_ERBPACHTDAUER = 66;

    /** Baugenehmigung vorhanden, Text 1 */
    protected final static int FIELD_BAUGENEHMIGUNG_VORHANDEN = 67;

    /** Abriss erforderlich, Text 1 */
    protected final static int FIELD_ABRISS_ERFORDERLICH = 68;

    /** Grundflchenzahl (GRZ), Zahl 3,2 */
    protected final static int FIELD_GRUNDFLAECHENZAHL = 69;

    /** Geschoflchenzahl (GFZ), Zahl 3,2 */
    protected final static int FIELD_GESCHOSSFLAECHENZAHL = 70;

    /** Erschlieung, Text 1 */
    protected final static int FIELD_ERSCHLIESSUNG = 71;

    /** kurzfristig bebaubar, Text 1 */
    protected final static int FIELD_KURZFRISTIG_BEBAUBAR = 72;

    /** Frei ab/Verfgbar ab/Antrittstermin, Text 50 */
    protected final static int FIELD_VERFUEGBAR_AB = 73;

    /** Kaufpreis / Erbpacht pro Jahr / Miete / Pacht, Zahl 15,2 */
    protected final static int FIELD_PREIS = 90;

    public GrundstueckGewerbe() {
        super();
        this.setImmobilienart(Immobilienart.GRUNDSTUECKE);
        this.setObjektkategorie(ObjektkategorieGrundstueck.GEWERBE);
    }

    public Boolean getAbrissErforderlich() {
        return Is24CsvFormat.parseBoolean(this.get(FIELD_ABRISS_ERFORDERLICH));
    }

    public Boolean getBaugenehmigungVorhanden() {
        return Is24CsvFormat.parseBoolean(this.get(FIELD_BAUGENEHMIGUNG_VORHANDEN));
    }

    public BebaubarNach getBebaubarNach() {
        return BebaubarNach.parse(this.get(FIELD_BEBAUBAR_NACH));
    }

    public NutzungGrundstueckGewerbe[] getEmpfohleneNutzung() {
        return NutzungGrundstueckGewerbe.parseMultiple(this.get(FIELD_EMPFOHLENE_NUTZUNG));
    }

    public Integer getErbpachtdauer() {
        try {
            return Is24CsvFormat.parseInteger(this.get(FIELD_ERBPACHTDAUER));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Erbpachtdauer'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public Erschliessung getErschliessung() {
        return Erschliessung.parse(this.get(FIELD_ERSCHLIESSUNG));
    }

    public Long getFlaecheTeilbarAb() {
        try {
            return Is24CsvFormat.parseLong(this.get(FIELD_FLAECHE_TEILBAR_AB));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Flaeche teilbar ab'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public BigDecimal getGeschossflaechenzahl() {
        try {
            return Is24CsvFormat.parseDecimal(this.get(FIELD_GESCHOSSFLAECHENZAHL));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Geschossflaechenzahl'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public BigDecimal getGrundflaechenzahl() {
        try {
            return Is24CsvFormat.parseDecimal(this.get(FIELD_GRUNDFLAECHENZAHL));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Grundflaechenzahl'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public BigDecimal getGrundstuecksflaeche() {
        try {
            return Is24CsvFormat.parseDecimal(this.get(FIELD_GRUNDSTUECKSFLAECHE));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Grundstuecksflaeche'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public Boolean getKurzfristigBebaubar() {
        return Is24CsvFormat.parseBoolean(this.get(FIELD_KURZFRISTIG_BEBAUBAR));
    }

    public BigDecimal getPreis() {
        try {
            return Is24CsvFormat.parseDecimal(this.get(FIELD_PREIS));
        } catch (NumberFormatException ex) {
            LOGGER.warn("Can't read 'Preis'!");
            LOGGER.warn("> " + ex.getLocalizedMessage(), ex);
            return null;
        }
    }

    public String getVerfuegbarAb() {
        return this.get(FIELD_VERFUEGBAR_AB);
    }

    public static GrundstueckGewerbe newRecord(CSVRecord record) {
        GrundstueckGewerbe is24Record = new GrundstueckGewerbe();
        is24Record.parse(record);
        return is24Record;
    }

    @Override
    protected Iterable<String> print() {
        this.setImmobilienart(Immobilienart.GRUNDSTUECKE);

        ObjektkategorieGrundstueck kat = this.getObjektkategorie();
        if (kat == null)
            this.setObjektkategorie(ObjektkategorieGrundstueck.GEWERBE);

        Vermarktungsart art = this.getVermarktungsart();
        if (!Vermarktungsart.ERBPACHT.equals(art))
            this.setErbpachtdauer(null);

        return super.print();
    }

    public void setAbrissErforderlich(Boolean value) {
        this.set(FIELD_ABRISS_ERFORDERLICH, Is24CsvFormat.printBoolean(value));
    }

    public void setBaugenehmigungVorhanden(Boolean value) {
        this.set(FIELD_BAUGENEHMIGUNG_VORHANDEN, Is24CsvFormat.printBoolean(value));
    }

    public void setBebaubarNach(BebaubarNach value) {
        this.set(FIELD_BEBAUBAR_NACH, (value != null) ? value.print() : null);
    }

    public void setEmpfohleneNutzung(NutzungGrundstueckGewerbe value) {
        this.set(FIELD_EMPFOHLENE_NUTZUNG, (value != null) ? value.print() : null);
    }

    public void setEmpfohleneNutzung(Iterable<NutzungGrundstueckGewerbe> values) {
        this.set(FIELD_EMPFOHLENE_NUTZUNG, NutzungGrundstueckGewerbe.printMultiple(values));
    }

    public void setErbpachtdauer(Number value) {
        this.set(FIELD_ERBPACHTDAUER, Is24CsvFormat.printNumber(value, 3));
    }

    public void setErschliessung(Erschliessung value) {
        this.set(FIELD_ERSCHLIESSUNG, (value != null) ? value.print() : null);
    }

    public void setFlaecheTeilbarAb(Number value) {
        this.set(FIELD_FLAECHE_TEILBAR_AB, Is24CsvFormat.printNumber(value, 8));
    }

    public void setGeschossflaechenzahl(Number value) {
        this.set(FIELD_GESCHOSSFLAECHENZAHL, Is24CsvFormat.printNumber(value, 3, 2));
    }

    public void setGrundflaechenzahl(Number value) {
        this.set(FIELD_GRUNDFLAECHENZAHL, Is24CsvFormat.printNumber(value, 3, 2));
    }

    public void setGrundstuecksflaeche(Number value) {
        this.set(FIELD_GRUNDSTUECKSFLAECHE, Is24CsvFormat.printNumber(value, 10, 2));
    }

    public void setKurzfristigBebaubar(Boolean value) {
        this.set(FIELD_KURZFRISTIG_BEBAUBAR, Is24CsvFormat.printBoolean(value));
    }

    @Override
    public void setObjektkategorie(ObjektkategorieGrundstueck value) {
        if (ObjektkategorieGrundstueck.WOHNEN.equals(value))
            throw new IllegalArgumentException(
                    "The provided value (" + value + ") is not supported by this record.");

        super.setObjektkategorie((value != null) ? value : ObjektkategorieGrundstueck.GEWERBE);
    }

    public void setPreis(Number value) {
        this.set(FIELD_PREIS, Is24CsvFormat.printNumber(value, 15, 2));
    }

    public void setVerfuegbarAb(String value) {
        this.set(FIELD_VERFUEGBAR_AB, Is24CsvFormat.printString(value, 50));
    }
}