IS24-CSV/src/main/java/org/openestate/io/is24_csv/Is24CsvParser.java
public static Is24CsvRecord createRecord(CSVRecord record) {
        Immobilienart art = Is24CsvRecord.getImmobilienart(record);

        if (Immobilienart.ANLAGE.equals(art))
            return Anlageobjekt.newRecord(record);

        else if (Immobilienart.GEWERBE_BUERO_PRAXEN.equals(art))
            return GewerbeBueroPraxis.newRecord(record);

        else if (Immobilienart.GEWERBE_EINZELHANDEL.equals(art))
            return GewerbeEinzelhandel.newRecord(record);

        else if (Immobilienart.GEWERBE_GASTRONOMIE_HOTEL.equals(art))
            return GewerbeGastronomieHotel.newRecord(record);

        else if (Immobilienart.GEWERBE_HALLE_PRODUKTION.equals(art))
            return GewerbeHalleProduktion.newRecord(record);

        else if (Immobilienart.GEWERBE_SONSTIGES.equals(art))
            return GewerbeSonstiges.newRecord(record);

        else if (Immobilienart.HAUS_KAUF.equals(art))
            return HausKauf.newRecord(record);

        else if (Immobilienart.HAUS_MIETE.equals(art))
            return HausMiete.newRecord(record);

        else if (Immobilienart.STELLPLATZ_KAUF.equals(art))
            return StellplatzKauf.newRecord(record);

        else if (Immobilienart.STELLPLATZ_MIETE.equals(art))
            return StellplatzMiete.newRecord(record);

        else if (Immobilienart.WOHNEN_AUF_ZEIT.equals(art))
            return WohnenAufZeit.newRecord(record);

        else if (Immobilienart.WOHNUNG_KAUF.equals(art))
            return WohnungKauf.newRecord(record);

        else if (Immobilienart.WOHNUNG_MIETE.equals(art))
            return WohnungMiete.newRecord(record);

        // Immobilienart für Grundstücke wird abhängig zur Objektkategorie erzeugt
        else if (Immobilienart.GRUNDSTUECKE.equals(art)) {
            ObjektkategorieGrundstueck cat = Grundstueck.getObjektkategorie(record);
            if (ObjektkategorieGrundstueck.WOHNEN.equals(cat))
                return GrundstueckWohnen.newRecord(record);
            else
                return GrundstueckGewerbe.newRecord(record);
        }

        LOGGER.warn("Unsupported 'Immobilienart' value: " + record.get(Is24CsvRecord.FIELD_IMMOBILIENART));
        return null;
    }
public static Is24CsvRecord createRecord(CSVRecord record) {
        Immobilienart art = Is24CsvRecord.getImmobilienart(record);

        if (Immobilienart.ANLAGE.equals(art))
            return Anlageobjekt.newRecord(record);

        else if (Immobilienart.GEWERBE_BUERO_PRAXEN.equals(art))
            return GewerbeBueroPraxis.newRecord(record);

        else if (Immobilienart.GEWERBE_EINZELHANDEL.equals(art))
            return GewerbeEinzelhandel.newRecord(record);

        else if (Immobilienart.GEWERBE_GASTRONOMIE_HOTEL.equals(art))
            return GewerbeGastronomieHotel.newRecord(record);

        else if (Immobilienart.GEWERBE_HALLE_PRODUKTION.equals(art))
            return GewerbeHalleProduktion.newRecord(record);

        else if (Immobilienart.GEWERBE_SONSTIGES.equals(art))
            return GewerbeSonstiges.newRecord(record);

        else if (Immobilienart.HAUS_KAUF.equals(art))
            return HausKauf.newRecord(record);

        else if (Immobilienart.HAUS_MIETE.equals(art))
            return HausMiete.newRecord(record);

        else if (Immobilienart.STELLPLATZ_KAUF.equals(art))
            return StellplatzKauf.newRecord(record);

        else if (Immobilienart.STELLPLATZ_MIETE.equals(art))
            return StellplatzMiete.newRecord(record);

        else if (Immobilienart.WOHNEN_AUF_ZEIT.equals(art))
            return WohnenAufZeit.newRecord(record);

        else if (Immobilienart.WOHNUNG_KAUF.equals(art))
            return WohnungKauf.newRecord(record);

        else if (Immobilienart.WOHNUNG_MIETE.equals(art))
            return WohnungMiete.newRecord(record);

        // Immobilienart für Grundstücke wird abhängig zur Objektkategorie erzeugt
        else if (Immobilienart.GRUNDSTUECKE.equals(art)) {
            ObjektkategorieGrundstueck cat = Grundstueck.getObjektkategorie(record);
            if (ObjektkategorieGrundstueck.WOHNEN.equals(cat))
                return GrundstueckWohnen.newRecord(record);
            else
                return GrundstueckGewerbe.newRecord(record);
        }

        LOGGER.warn("Unsupported 'Immobilienart' value: " + record.get(Is24CsvRecord.FIELD_IMMOBILIENART));
        return null;
    }
Creates a record, according to the object category, that is provided in
a {@link CSVRecord}.

@param record the record to process
@return created record or null, if no matching record was found