|
12 | 12 | */ |
13 | 13 | package org.qstd; |
14 | 14 |
|
15 | | -import net.sf.jsqlparser.expression.BinaryExpression; |
16 | | -import net.sf.jsqlparser.expression.Expression; |
17 | | -import net.sf.jsqlparser.expression.ExpressionVisitorAdapter; |
18 | | -import net.sf.jsqlparser.schema.Column; |
19 | | - |
20 | 15 | import java.util.ArrayList; |
21 | 16 | import java.util.Collection; |
22 | 17 | import java.util.HashSet; |
23 | 18 | import java.util.Set; |
| 19 | +import net.sf.jsqlparser.expression.BinaryExpression; |
| 20 | +import net.sf.jsqlparser.expression.Expression; |
| 21 | +import net.sf.jsqlparser.expression.ExpressionVisitorAdapter; |
| 22 | +import net.sf.jsqlparser.schema.Column; |
24 | 23 |
|
25 | 24 | class ColumnNamesExtractor { |
26 | 25 |
|
27 | | - static final ColumnNamesExtractor INSTANCE = new ColumnNamesExtractor(); |
28 | | - |
29 | | - private ColumnNamesExtractor() { |
30 | | - } |
31 | | - |
32 | | - private static class ColumnExpressionVisitor extends ExpressionVisitorAdapter { |
| 26 | + static final ColumnNamesExtractor INSTANCE = new ColumnNamesExtractor(); |
33 | 27 |
|
34 | | - private String visitedColumnName; |
| 28 | + private ColumnNamesExtractor() {} |
35 | 29 |
|
36 | | - @Override |
37 | | - public void visit(Column column) { |
38 | | - this.visitedColumnName = column.getColumnName(); |
39 | | - } |
| 30 | + private static class ColumnExpressionVisitor extends ExpressionVisitorAdapter { |
40 | 31 |
|
41 | | - String getVisitedColumnName() { |
42 | | - return visitedColumnName; |
43 | | - } |
| 32 | + private String visitedColumnName; |
44 | 33 |
|
| 34 | + @Override |
| 35 | + public void visit(Column column) { |
| 36 | + this.visitedColumnName = column.getColumnName(); |
45 | 37 | } |
46 | 38 |
|
47 | | - Set<String> findColumnNamesOf(Expression expression) { |
48 | | - Set<String> columnNames = new HashSet<>(); |
49 | | - if (expression instanceof BinaryExpression) { |
50 | | - // AndExpression, OrExpression, LikeExpression, ... |
51 | | - BinaryExpression binaryExpression = (BinaryExpression) expression; |
52 | | - Collection<String> leftRightColumnNames = extractColumnNamesOf(binaryExpression); |
53 | | - columnNames.addAll(leftRightColumnNames); |
54 | | - } else if (expression != null) { |
55 | | - // Column names |
56 | | - ColumnExpressionVisitor columnExpressionVisitor = new ColumnExpressionVisitor(); |
57 | | - expression.accept(columnExpressionVisitor); |
58 | | - String visitedColumnName = columnExpressionVisitor.getVisitedColumnName(); |
59 | | - if(visitedColumnName != null) { |
60 | | - columnNames.add(visitedColumnName); |
61 | | - } |
62 | | - } |
63 | | - return columnNames; |
| 39 | + String getVisitedColumnName() { |
| 40 | + return visitedColumnName; |
64 | 41 | } |
| 42 | + } |
65 | 43 |
|
66 | | - private Collection<String> extractColumnNamesOf(BinaryExpression binaryExpression) { |
67 | | - Collection<String> leftRightColumnNames = new ArrayList<>(); |
68 | | - Collection<String> leftColumnNames = findColumnNamesOf(binaryExpression.getLeftExpression()); |
69 | | - Collection<String> rightColumnNames = findColumnNamesOf(binaryExpression.getRightExpression()); |
70 | | - leftRightColumnNames.addAll(leftColumnNames); |
71 | | - leftRightColumnNames.addAll(rightColumnNames); |
72 | | - return leftRightColumnNames; |
| 44 | + Set<String> findColumnNamesOf(Expression expression) { |
| 45 | + Set<String> columnNames = new HashSet<>(); |
| 46 | + if (expression instanceof BinaryExpression) { |
| 47 | + // AndExpression, OrExpression, LikeExpression, ... |
| 48 | + BinaryExpression binaryExpression = (BinaryExpression) expression; |
| 49 | + Collection<String> leftRightColumnNames = extractColumnNamesOf(binaryExpression); |
| 50 | + columnNames.addAll(leftRightColumnNames); |
| 51 | + } else if (expression != null) { |
| 52 | + // Column names |
| 53 | + ColumnExpressionVisitor columnExpressionVisitor = new ColumnExpressionVisitor(); |
| 54 | + expression.accept(columnExpressionVisitor); |
| 55 | + String visitedColumnName = columnExpressionVisitor.getVisitedColumnName(); |
| 56 | + if (visitedColumnName != null) { |
| 57 | + columnNames.add(visitedColumnName); |
| 58 | + } |
73 | 59 | } |
| 60 | + return columnNames; |
| 61 | + } |
74 | 62 |
|
| 63 | + private Collection<String> extractColumnNamesOf(BinaryExpression binaryExpression) { |
| 64 | + Collection<String> leftRightColumnNames = new ArrayList<>(); |
| 65 | + Collection<String> leftColumnNames = findColumnNamesOf(binaryExpression.getLeftExpression()); |
| 66 | + Collection<String> rightColumnNames = findColumnNamesOf(binaryExpression.getRightExpression()); |
| 67 | + leftRightColumnNames.addAll(leftColumnNames); |
| 68 | + leftRightColumnNames.addAll(rightColumnNames); |
| 69 | + return leftRightColumnNames; |
| 70 | + } |
75 | 71 | } |
0 commit comments