Автоматически генерировать классы Java из файла csv

Я пытаюсь автоматически генерировать классы Java POJO из файлов csv, где первая строка содержит заголовки, а другие содержат данные. Я нашел в сети много примеров и инструментов, показывающих, как анализировать файлы csv и помещать данные в объекты Java, но во всех них классы Java POJO уже созданы вручную, и я ищу инструмент, который генерирует их автоматически. В противном случае мне нужен инструмент, похожий на инструменты обратного проектирования Hibernate, но вместо баз данных у меня есть файлы csv.

Например, вот мой входной CSV-файл:

username, password,   date,        zip,  town

Klaus,    qwexyKiks,  17/1/2007,1111, New York

Oufu1,     bobilops,    10/10/2007,4555, New York

И вот что мне нужно сгенерировать автоматически:

package test;

import java.util.Date;

public class UserBean {
    String username;
    String password;
    Date date;
    int zip;
    String town;


    public Date getDate() {
        return date;
    }
    public String getPassword() {
        return password;
    }
    public String getTown() {
        return town;
    }
    public String getUsername() {
        return username;
    }
    public int getZip() {
        return zip;
    }
    public void setDate(final Date date) {
        this.date = date;
    }
    public void setPassword(final String password) {
        this.password = password;
    }

    public void setTown(final String town) {
        this.town = town;
    }
    public void setUsername(final String username) {
        this.username = username;
    }
    public void setZip(final int zip) {
        this.zip = zip;
    }
}

person claude88    schedule 14.05.2012    source источник
comment
Что вы сделали для достижения этого?   -  person Bhavik Ambani    schedule 14.05.2012
comment
Я думаю, что он ищет инструмент, который уже написан.   -  person Tim Bender    schedule 14.05.2012


Ответы (1)


Я думаю, что то, что вы хотите сделать, будет довольно медленным и не отказоустойчивым.

Основное различие между таблицами в системах управления реляционными базами данных и CSV-файлами заключается в том, что CSV-файлы не содержат информации о типе данных. Таким образом, программное обеспечение, которое вы хотели бы иметь, должно применять вывод типов для столбцов, и это может быть очень медленным и подверженным ошибкам. Если вы собираетесь анализировать большие файлы, которые могут содержать ошибки, у вас не будет функции проверки, а время выполнения может стать узким местом для всей системы.

person Vitaly Olegovitch    schedule 14.05.2012
comment
Мне нужно преобразовать файлы csv в классы POJO, потому что в моем приложении много разных источников данных (базы данных, csv, xml...), поэтому мой бизнес-уровень должен быть независимым от типа источника данных и использовать только классы POJO, поэтому я Я создаю классы POJO с помощью Hibernate Tools из баз данных, и теперь я ищу инструмент для выполнения той же работы, что и Hibernate с файлами csv. Я согласен с вами в отношении проблемы с типом данных, но ее можно решить, создав только объекты String на уровне доступа и выполнив некоторое преобразование типов на бизнес-уровне. - person claude88; 14.05.2012
comment
Вы имеете в виду, что хотите реализовать шаблон объект передачи данных (также известный как объект значения) ? Это может быть идеей, но вам придется выполнять проверку ввода внутри бизнес-уровня. Пробовали ли вы драйверы CSV JDBC? - person Vitaly Olegovitch; 14.05.2012
comment
Спасибо за упоминание шаблона Data Transfer Object, на самом деле я почти реализую то же самое, было бы неплохо, если бы я включил его в свой проект. Для драйверов CSV JDBC я не знаю, могу ли я использовать Hibernate или другой инструмент для создания классов POJO из баз данных, представляющих файлы csv, я думаю, что это усложняет ситуацию, поэтому я ищу инструмент прямого преобразования (без использования баз данных ), а если нет существующего, мне придется разработать свой собственный конвертер. - person claude88; 15.05.2012