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