@Override
public List<DataTableFields> initByTableName(String tableName) {
Connection conn = null;
try {
conn = dataSource.getConnection();
DatabaseMetaData metaData = conn.getMetaData();
ResultSet tableRs = metaData.getTables(CATALOG, SCHEMA_PATTERN,
tableName, new String[] { "TABLE" });
if (tableRs.next()) {
List<DataTableFields> dataTableFields = new ArrayList<DataTableFields>();
Forms form = new Forms();
FormTables formTable = new FormTables();
DataTables dataTable = initDataTables(tableRs);
ResultSet columnRs = metaData.getColumns(CATALOG,
SCHEMA_PATTERN, tableName, null);
formTable.setTableName(tableRs
.getString(ColumnLabel.TABLE_NAME));
formTable.setGetType(Constants.GET_TYPE_TABLE); // TODO
formTable.setTableType(Constants.TABLE_TYPE_REGULAR);
formTable.setAuditType(Constants.AUDIT_TYPE_NONE);
form.setFormName(tableRs.getString(ColumnLabel.REMARKS));
form.setFilePath(DEFAULT_FORM_FILE_PATH);
form.setFormDesc(tableRs.getString(ColumnLabel.REMARKS));
form.setFormProp(Constants.FORM_PROP_AUTO);
form.setFormType(Constants.FORM_TYPE_FLOW); // TODO need update
form.setState(Constants.FORM_STATE_ACTIVE);
form.setAuditType(Constants.AUDIT_TYPE_NONE);
dataTable.setFormTable(formTable);
formTable.setForm(form);
while (columnRs.next()) {
DataTableFields dataTableField = new DataTableFields();
FormElement formElement = new FormElement();
FormElementBind formElementBind = new FormElementBind();
dataTableField.setTableName(tableRs
.getString(ColumnLabel.TABLE_NAME));
dataTableField.setFieldName(columnRs
.getString(ColumnLabel.COLUMN_NAME));
dataTableField.setFieldNameCn(columnRs
.getString(ColumnLabel.REMARKS));
dataTableField.setFieldType(columnRs
.getString(ColumnLabel.TYPE_NAME));
dataTableField.setAuditType(Constants.AUDIT_TYPE_NONE);
if (columnRs.getInt("DATA_TYPE") == Types.DATE) {
dataTableField.setFieldFormat("yyyy-mm-dd hh24:mi:ss");
}
dataTableField.setFieldLength(columnRs
.getInt(ColumnLabel.COLUMN_SIZE));
dataTableField.setFieldScale(columnRs
.getInt(ColumnLabel.DECIMAL_DIGITS));
dataTableField.setIsNullable(columnRs
.getInt(ColumnLabel.NULLABLE) == 0 ? "F" : "T");
formElement.setElementName(columnRs
.getString(ColumnLabel.COLUMN_NAME));
formElement.setElementNameCn(columnRs
.getString(ColumnLabel.REMARKS));
formElement.setElementType(ElementType.INPUT.getCode());
if (formElement.isFlowIdElement()) {
formElement.setDefaultValue("FLOW_ID");
formElement
.setDefaultValueType(DefaultValueType.URL_VAR
.getCode());
} else if (formElement.isRequestIdElement()) {
formElement.setDefaultValue("REQUEST_ID_SEQ");
formElement
.setDefaultValueType(DefaultValueType.GLOBAL_VAR
.getCode());
}
formElement.setIsEmpty(Constants.EMPTY_TRUE);
formElement.setRemark(tableRs
.getString(ColumnLabel.REMARKS)
+ "-"
+ columnRs.getString(ColumnLabel.REMARKS));
formElementBind.setElementName(columnRs
.getString(ColumnLabel.COLUMN_NAME));
formElementBind.setElementNameCn(columnRs
.getString(ColumnLabel.REMARKS));
formElementBind.setIsEmpty(Constants.EMPTY_TRUE);
formElementBind.setFormElement(formElement);
dataTableField.setFormElementBind(formElementBind);
dataTableFields.add(dataTableField);
}
dataTable.setDataTableFields(dataTableFields);
return dataTableFields;
}
} catch (SQLException e) {
LOGGER.error("获取表元数据出错!", e);
} finally {
JdbcUtils.closeConnection(conn);
}
大家看看,上面这段代码,有什么什么好的重构思路?