public List toRuleDefinition()

in fastmodel-converter/fastmodel-converter-dqc/src/main/java/com/aliyun/fastmodel/conveter/dqc/BaseDqcStatementConverter.java [84:136]


    public List<RuleDefinition> toRuleDefinition(CreateTable source, boolean enable, ConvertContext context) {
        List<RuleDefinition> ruleDefinitions = new ArrayList<>();
        /**
         * 列上的约束,主要根据是否主键,以及数据字典的约束
         * 默认都是弱规则,用于提醒,未来需要支持传入context参数处理
         */
        Map<Identifier, ColumnDefinition> map = new HashMap<>(10);
        if (!source.isColumnEmpty()) {
            List<ColumnDefinition> columnDefines = source.getColumnDefines();
            for (ColumnDefinition c : columnDefines) {
                map.put(c.getColName(), c);
            }
            List<RuleDefinition> list = toRuleDefinition(columnDefines, enable, context);
            if (list != null) {
                ruleDefinitions.addAll(list);
            }
        }
        if (!source.isPartitionEmpty()) {
            List<ColumnDefinition> columnDefinitions = source.getPartitionedBy().getColumnDefinitions();
            for (ColumnDefinition c : columnDefinitions) {
                map.put(c.getColName(), c);
            }
            List<RuleDefinition> list = toRuleDefinition(columnDefinitions, enable, context);
            if (list != null) {
                ruleDefinitions.addAll(list);
            }
        }
        if (!source.isConstraintEmpty()) {
            List<BaseConstraint> constraintStatements = source.getConstraintStatements();
            for (BaseConstraint constraint : constraintStatements) {
                if (!(constraint instanceof PrimaryConstraint)) {
                    continue;
                }
                PrimaryConstraint c = (PrimaryConstraint)constraint;
                if (c.getColNames().size() == 1) {
                    ColumnDefinition columnDefinition = map.get(c.getColNames().get(0));
                    List<RuleDefinition> list = toPrimaryRule(columnDefinition, enable);
                    ruleDefinitions.addAll(list);
                } else {
                    RuleDefinition ruleDefinition = toUniqueRule(source.getQualifiedName().getSuffix(), c.getColNames(),
                        enable);
                    ruleDefinitions.add(ruleDefinition);
                    List<RuleDefinition> notNullRule = c.getColNames().stream().map(x -> {
                        ColumnDefinition columnDefinition = ColumnDefinition.builder().colName(x).notNull(true).build();
                        return toNotNullRule(columnDefinition, enable);
                    }).collect(Collectors.toList());
                    ruleDefinitions.addAll(notNullRule);
                }
            }
        }

        return ruleDefinitions;
    }