代码重构相关


@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);
        }

大家看看,上面这段代码,有什么什么好的重构思路?

阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进