package jef.tools; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.util.Collection; import java.util.List; import jef.database.DbClient; import jef.database.QB; import jef.database.dialect.type.ColumnMapping; import jef.database.meta.ITableMetadata; import jef.database.meta.MetaHolder; import jef.database.query.Query; import jef.tools.csvreader.Codecs; import jef.tools.csvreader.CsvWriter; import jef.tools.reflect.Property; public class InitDataExporter { private DbClient session; private boolean deleteEmpty; private File rootPath; public InitDataExporter(DbClient session) { this.session = session; this.rootPath = new File(System.getProperty("user.dir")); } public InitDataExporter(DbClient session, File sourcePath) { this.session = session; this.rootPath = sourcePath; } public void export(@SuppressWarnings("rawtypes") Class clz){ try { export0(clz); }catch(SQLException e) { throw new RuntimeException(e); }catch(IOException e){ throw new RuntimeException(e); } } public void export0(@SuppressWarnings("rawtypes") Class clz) throws SQLException, IOException { ITableMetadata meta = MetaHolder.getMeta(clz); if (meta == null) return; File file = new File(rootPath, meta.getThisType().getName()+ ".csv"); @SuppressWarnings("unchecked") Query<?> query = QB.create(clz); query.setCascade(false); List<?> o = session.select(query); if (o.isEmpty()) { if (deleteEmpty && file.exists()) { file.delete(); } return; } CsvWriter cw=new CsvWriter(file,',',"UTF-8"); Collection<ColumnMapping> columns=meta.getColumns(); for(ColumnMapping column:columns){ cw.write(column.fieldName()); } cw.endRecord(); for(Object obj: o) { for(ColumnMapping column:columns){ Property accessor=column.getFieldAccessor(); String data=Codecs.toString(accessor.get(obj), accessor.getGenericType()); cw.write(data); } cw.endRecord(); } cw.close(); System.out.println(file.getAbsolutePath() + " was updated."); } }