public Boolean visitCreateTable()

in fastmodel-core/src/main/java/com/aliyun/fastmodel/core/formatter/FastModelVisitor.java [410:472]


    public Boolean visitCreateTable(CreateTable node, Integer indent) {
        builder.append("CREATE");
        if (node.getCreateOrReplace() != null && node.getCreateOrReplace()) {
            builder.append(" OR REPLACE");
        }
        ITableDetailType tableDetailType = null;
        if (node.getTableDetailType() != null) {
            tableDetailType = node.getTableDetailType();
            boolean isNormalOrTransaction = tableDetailType == TableDetailType.NORMAL_DIM
                || tableDetailType == TableDetailType.TRANSACTION_FACT;
            if (!isNormalOrTransaction && !tableDetailType.isSingle()) {
                builder.append(" ").append(tableDetailType.getCode());
            }
            builder.append(" ").append(tableDetailType.getParent());
        }
        builder.append(" TABLE ");
        if (node.isNotExists()) {
            builder.append("IF NOT EXISTS ");
        }
        String tableName = getCode(node.getQualifiedName());
        builder.append(tableName);
        builder.append(formatAliasedName(node.getAliasedName()));
        int newIndent = indent + 1;
        if (!node.isColumnEmpty()) {
            builder.append(" \n(\n");
            String elementIndent = indentString(newIndent);
            builder.append(formatColumnList(node.getColumnDefines(), elementIndent));
            if (!node.isConstraintEmpty()) {
                Iterator<BaseConstraint> iterator = node.getConstraintStatements().stream()
                    .iterator();
                while (iterator.hasNext()) {
                    builder.append(",\n");
                    process(iterator.next(), newIndent);
                }
            }
            if (!node.isIndexEmpty()) {
                Iterator<TableIndex> iterator = node.getTableIndexList().iterator();
                while (iterator.hasNext()) {
                    builder.append(",\n");
                    process(iterator.next(), newIndent);
                }
            }
            builder.append(newLine(")"));
        } else {
            if (!node.isCommentElementEmpty()) {
                builder.append(newLine("/*("));
                String elementIndent = indentString(newIndent);
                builder.append(formatCommentElement(node.getColumnCommentElements(), elementIndent));
                builder.append(newLine(")*/"));
            }
        }
        builder.append(formatComment(node.getComment(), isEndNewLine(builder.toString())));
        if (!node.isPartitionEmpty()) {
            PartitionedBy partitionedBy = node.getPartitionedBy();
            List<ColumnDefinition> columnDefinitions = partitionedBy.getColumnDefinitions();
            builder.append(
                formatPartitions(columnDefinitions, isEndNewLine(builder.toString()), indentString(newIndent)));
        }
        List<Property> properties = node.getProperties();
        builder.append(formatWith(properties, isEndNewLine(builder.toString())));
        removeNewLine(builder);
        return true;
    }