package foundation.data.meta.field; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import foundation.persist.IMetaDataLoader; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.persist.source.NamedDataSource; public class TableFieldLoader implements IMetaDataLoader { private NamedDataSource dataSource; private String tableName; private FieldsRuntime fieldsRuntime; public TableFieldLoader(NamedDataSource dataSource, String tableName) { this.dataSource = dataSource; this.tableName = tableName; } public FieldsRuntime getFieldsByTableResult() throws Exception { String sql = "select * from " + tableName + " where 1 <> 1"; NamedSQL namedSQL = new NamedSQL("getMeta", sql); SQLRunner.getFieldsBySQL(dataSource, this, namedSQL); return this.fieldsRuntime; } public FieldsRuntime getFieldsByTableMeta() throws Exception { SQLRunner.getFieldsByMeta(dataSource, this, tableName); return this.fieldsRuntime; } public FieldsRuntime getMetaByNamedSQL(NamedSQL namedSQL) throws Exception { this.tableName = namedSQL.getName(); SQLRunner.getTableMetaData(dataSource, this, namedSQL); return this.fieldsRuntime; } public void load(ResultSetMetaData metaData) throws Exception { ResultMetaFieldReader fieldReader = new ResultMetaFieldReader(metaData); this.fieldsRuntime = FieldRuntimeCreator.create(fieldReader); } public void load(ResultSet resultSet) throws Exception { ResultSetFieldReader fieldReader = new ResultSetFieldReader(resultSet); this.fieldsRuntime = FieldRuntimeCreator.create(fieldReader); } }