org.test4j.module.database.environment.TableMeta Maven / Gradle / Ivy
package org.test4j.module.database.environment;
import java.sql.ResultSetMetaData;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class TableMeta {
/**
* 表名
*/
String tableName;
Map columns;
public TableMeta(String table, ResultSetMetaData meta, DBEnvironment dbEnvironment) throws Exception {
this.tableName = table;
this.columns = new HashMap();
int count = meta.getColumnCount();
for (int index = 1; index <= count; index++) {
ColumnMeta columnMeta = new ColumnMeta();
columnMeta.columnName = meta.getColumnName(index);
columnMeta.size = meta.getColumnDisplaySize(index);
columnMeta.typeName = meta.getColumnTypeName(index);
columnMeta.isNullable = meta.isNullable(index) == 1;
columnMeta.javaType = meta.getColumnClassName(index);// dbEnvironment.getJavaClass(columnMeta.typeName);
this.columns.put(columnMeta.columnName, columnMeta);
}
}
public Map getColumns() {
return columns;
}
/**
* 将string转换为对应的java对象
*
* @param input
* @param type
* @return
*/
public String getColumnType(String column) {
ColumnMeta meta = this.getColumns().get(column);
if (meta == null) {
throw new RuntimeException("can't find column[" + column + "] field in table[" + tableName + "].");
}
return meta.javaType;
}
/**
* 返回字段的长度
*
* @param column
* @return
*/
public int getCloumnSize(String column) {
ColumnMeta meta = this.getColumns().get(column);
if (meta == null) {
throw new RuntimeException("can't find column[" + column + "] field in table[" + tableName + "].");
}
return meta.size;
}
/**
* 根据数据库字段的最大长度,截断插入的值
*
* @param column
* @param input
* @return
*/
public String truncateString(String column, String input) {
if (input == null) {
return null;
}
int size = this.getCloumnSize(column);
if (size > input.length()) {
return input;
} else {
return input.substring(0, size);
}
}
/**
* 填充在data中未指定字段的默认值
*
* @param data
*/
public void fillData(Map data, DBEnvironment dbEnvironment) {
Set keys = data.keySet();
for (String key : this.columns.keySet()) {
if (keys.contains(key)) {
continue;
}
ColumnMeta column = this.columns.get(key);
Object value = column.getDefaultValue(dbEnvironment);
data.put(key, value);
}
}
public static class ColumnMeta {
/**
* 字段名称
*/
String columnName;
/**
* 字段大小
*/
int size;
/**
* 字段类型名称
*/
String typeName;
/**
* 是否允许null?
*/
boolean isNullable;
/**
* 默认值
*/
Object defaultValue;
/**
* 对应的java类型
*/
String javaType;
@Override
public String toString() {
return "[columnName=" + columnName + ", size=" + size + ", typeName=" + typeName + ", isNullable="
+ isNullable + ", defaultValue=" + defaultValue + "]";
}
public Object getDefaultValue(DBEnvironment dbEnvironment) {
if (this.isNullable()) {
return null;
}
if ("java.lang.String".equals(javaType)) {
return "test4j".subSequence(0, size > 6 ? 6 : size);
} else {
Object value = dbEnvironment.getDefaultValue(javaType);
return value;
}
}
public String getColumnName() {
return columnName;
}
public int getSize() {
return size;
}
public String getTypeName() {
return typeName;
}
public boolean isNullable() {
return isNullable;
}
public Object getDefaultValue() {
return defaultValue;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy