package frame.data.meta;
|
|
import java.sql.Connection;
|
import java.sql.ResultSetMetaData;
|
import java.sql.SQLException;
|
|
import frame.persist.SQLRunner;
|
import frame.persist.loader.ResultMetaFieldReader;
|
import frame.persist.IMetaDataLoader;
|
|
|
public class MetaDataLoader implements IMetaDataLoader {
|
|
private String tableName;
|
private EntityMeta entityMeta;
|
private String schema;
|
|
|
public MetaDataLoader(String table) {
|
tableName = table;
|
}
|
|
public String getTableName() {
|
if (schema != null) {
|
return schema + "." + tableName;
|
}
|
|
return tableName;
|
}
|
|
public void load(ResultSetMetaData metaData) throws Exception {
|
ResultMetaFieldReader fieldReader = new ResultMetaFieldReader(metaData);
|
entityMeta = new EntityMeta(tableName, fieldReader);
|
}
|
|
public EntityMeta getEntityMeta() throws Exception {
|
return getCoreTable(null);
|
}
|
|
public EntityMeta getCoreTable(Connection conn) throws Exception {
|
if (entityMeta == null) {
|
synchronized (this) {
|
if (entityMeta == null) {
|
SQLRunner.getTableMetaData(conn, this);
|
}
|
}
|
}
|
|
return entityMeta;
|
}
|
|
public void setSchema(String schema) {
|
this.schema = schema;
|
}
|
|
public static int[] getFieldIndex(ResultSetMetaData metaData, String[] fieldnames) throws SQLException {
|
ResultMetaFieldReader fieldReader = new ResultMetaFieldReader(metaData);
|
EntityMeta tableMeta = new EntityMeta("anymous", fieldReader);
|
|
int[] result = new int[fieldnames.length];
|
|
for (int i = 0; i < fieldnames.length; i++) {
|
String fieldname = fieldnames[i];
|
result[i] = tableMeta.getIndex(fieldname) + 1;
|
}
|
|
return result;
|
}
|
|
public static int getFieldIndex(ResultSetMetaData metaData, String fieldname) throws SQLException {
|
ResultMetaFieldReader fieldReader = new ResultMetaFieldReader(metaData);
|
EntityMeta tableMeta = new EntityMeta("anymous", fieldReader);
|
|
return tableMeta.getIndex(fieldname) + 1;
|
}
|
|
}
|