解析配置修改

This commit is contained in:
mcy
2019-01-25 17:51:38 +08:00
parent 197ca67c8b
commit 8f76b33214
3 changed files with 24 additions and 7 deletions

View File

@@ -57,6 +57,11 @@ public class SchemaItem {
this.selectFields = selectFields; this.selectFields = selectFields;
} }
public String toSql() {
// todo
return null;
}
public Map<String, List<TableItem>> getTableItemAliases() { public Map<String, List<TableItem>> getTableItemAliases() {
if (tableItemAliases == null) { if (tableItemAliases == null) {
synchronized (SchemaItem.class) { synchronized (SchemaItem.class) {
@@ -316,6 +321,7 @@ public class SchemaItem {
public static class FieldItem { public static class FieldItem {
private String fieldName; private String fieldName;
private String expr;
private List<ColumnItem> columnItems = new ArrayList<>(); private List<ColumnItem> columnItems = new ArrayList<>();
private List<String> owners = new ArrayList<>(); private List<String> owners = new ArrayList<>();
@@ -330,6 +336,14 @@ public class SchemaItem {
this.fieldName = fieldName; this.fieldName = fieldName;
} }
public String getExpr() {
return expr;
}
public void setExpr(String expr) {
this.expr = expr;
}
public List<ColumnItem> getColumnItems() { public List<ColumnItem> getColumnItems() {
return columnItems; return columnItems;
} }

View File

@@ -74,6 +74,7 @@ public class SqlParser {
return sqlSelectQueryBlock.getSelectList().stream().map(selectItem -> { return sqlSelectQueryBlock.getSelectList().stream().map(selectItem -> {
FieldItem fieldItem = new FieldItem(); FieldItem fieldItem = new FieldItem();
fieldItem.setFieldName(selectItem.getAlias()); fieldItem.setFieldName(selectItem.getAlias());
fieldItem.setExpr(selectItem.toString());
visitColumn(selectItem.getExpr(), fieldItem); visitColumn(selectItem.getExpr(), fieldItem);
return fieldItem; return fieldItem;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
@@ -91,6 +92,7 @@ public class SqlParser {
SQLIdentifierExpr identifierExpr = (SQLIdentifierExpr) expr; SQLIdentifierExpr identifierExpr = (SQLIdentifierExpr) expr;
if (fieldItem.getFieldName() == null) { if (fieldItem.getFieldName() == null) {
fieldItem.setFieldName(identifierExpr.getName()); fieldItem.setFieldName(identifierExpr.getName());
fieldItem.setExpr(identifierExpr.toString());
} }
ColumnItem columnItem = new ColumnItem(); ColumnItem columnItem = new ColumnItem();
columnItem.setColumnName(identifierExpr.getName()); columnItem.setColumnName(identifierExpr.getName());
@@ -101,6 +103,7 @@ public class SqlParser {
SQLPropertyExpr sqlPropertyExpr = (SQLPropertyExpr) expr; SQLPropertyExpr sqlPropertyExpr = (SQLPropertyExpr) expr;
if (fieldItem.getFieldName() == null) { if (fieldItem.getFieldName() == null) {
fieldItem.setFieldName(sqlPropertyExpr.getName()); fieldItem.setFieldName(sqlPropertyExpr.getName());
fieldItem.setExpr(sqlPropertyExpr.toString());
} }
fieldItem.getOwners().add(sqlPropertyExpr.getOwnernName()); fieldItem.getOwners().add(sqlPropertyExpr.getOwnernName());
ColumnItem columnItem = new ColumnItem(); ColumnItem columnItem = new ColumnItem();

View File

@@ -29,7 +29,7 @@ public class SqlParseTest {
Assert.assertFalse(tableItem.isMain()); Assert.assertFalse(tableItem.isMain());
Assert.assertTrue(tableItem.isSubQuery()); Assert.assertTrue(tableItem.isSubQuery());
// 通过字段名找 FieldItem // 通过字段名找 FieldItem
List<FieldItem> fieldItems = schemaItem.getColumnFields().get(tableItem.getAlias() + ".label".toLowerCase()); List<FieldItem> fieldItems = schemaItem.getColumnFields().get(tableItem.getAlias() + ".labels".toLowerCase());
fieldItems.forEach( fieldItems.forEach(
fieldItem -> Assert.assertEquals("c.labels", fieldItem.getOwner() + "." + fieldItem.getFieldName())); fieldItem -> Assert.assertEquals("c.labels", fieldItem.getOwner() + "." + fieldItem.getFieldName()));