private List changeProperties()

in fastmodel-compare/src/main/java/com/aliyun/fastmodel/compare/impl/table/ColumnCompare.java [375:419]


    private List<Property> changeProperties(ColumnDefinition beforeDefine, ColumnDefinition afterDefine) {
        List<Property> properties = beforeDefine.getColumnProperties();
        List<Property> afterProperties = afterDefine.getColumnProperties();
        boolean isBeforeEmpty = beforeDefine.isPropertyEmpty();
        boolean isAfterEmpty = afterDefine.isPropertyEmpty();
        if (isBeforeEmpty && isAfterEmpty) {
            return ImmutableList.of();
        }
        //如果原来为空,目标不是空,那么直接设置
        if (isBeforeEmpty && !isAfterEmpty) {
            return afterProperties;
        }
        if (isAfterEmpty) {
            return properties.stream().map(x -> {
                return new Property(x.getName(), StringUtils.EMPTY);
            }).collect(Collectors.toList());
        } else {
            List<Property> unSet = new ArrayList<>();
            for (Property b : properties) {
                String name = b.getName();
                if (!contains(name, afterProperties)) {
                    unSet.add(b);
                }
            }
            List<Property> setProp = new ArrayList<>();
            for (Property ap : afterProperties) {
                if (properties.contains(ap)) {
                    continue;
                } else {
                    setProp.add(ap);
                }
            }
            List<Property> list = new ArrayList<>();
            if (!unSet.isEmpty()) {
                list.addAll(unSet.stream().map(x -> {
                    return new Property(x.getName(), StringUtils.EMPTY);
                }).collect(Collectors.toList()));
            }

            if (!setProp.isEmpty()) {
                list.addAll(setProp);
            }
            return list;
        }
    }