package frame.persist.loader; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import frame.object.meta.EntityMeta; import frame.persist.ILoadable; public abstract class DataLoader implements ILoadable { protected String tableName; protected EntityMeta entityMeta; protected DataLoader() { } public DataLoader(String tableName) { this.tableName = tableName; } public void load(ResultSet rslt, Object... args) throws Exception { ResultSetMetaData metaData = rslt.getMetaData(); loadTableMeta(metaData); loadData(rslt); } private void loadTableMeta(ResultSetMetaData metaData) throws SQLException { if (entityMeta == null) { ResultMetaFieldReader fieldReader = new ResultMetaFieldReader(metaData); entityMeta = new EntityMeta(tableName, fieldReader); } } protected abstract void loadData(ResultSet rslt) throws Exception; public void setTableMeta(EntityMeta entityMeta) { this.entityMeta = entityMeta; } }