diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlSchemaStatVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlSchemaStatVisitor.java index 510c6d638b..3c782b0e97 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlSchemaStatVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/visitor/MySqlSchemaStatVisitor.java @@ -20,6 +20,9 @@ import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource; import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlDeleteStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlInsertStatement; +import com.alibaba.druid.stat.TableStat; +import com.alibaba.druid.stat.TableStat.Column; +import com.alibaba.druid.stat.TableStat.Mode; public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { @@ -52,16 +55,16 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { Mode mode = modeLocal.get(); switch (mode) { case Delete: - stat.deleteCount++; + stat.incrementDeleteCount(); break; case Insert: - stat.insertCount++; + stat.incrementInsertCount(); break; case Update: - stat.updateCount++; + stat.incrementUpdateCount(); break; case Select: - stat.selectCount++; + stat.incrementSelectCount(); break; default: break; @@ -97,7 +100,7 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { stat = new TableStat(); tableStats.put(ident, stat); } - stat.updateCount++; + stat.incrementUpdateCount(); Map aliasMap = aliasLocal.get(); aliasMap.put(ident, ident); @@ -132,7 +135,7 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { stat = new TableStat(); tableStats.put(ident, stat); } - stat.deleteCount++; + stat.incrementDeleteCount(); } accept(x.getWhere()); @@ -182,7 +185,7 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { stat = new TableStat(); tableStats.put(ident, stat); } - stat.insertCount++; + stat.incrementInsertCount(); Map aliasMap = aliasLocal.get(); if (aliasMap != null) { @@ -220,7 +223,7 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { stat = new TableStat(); tableStats.put(ident, stat); } - stat.insertCount++; + stat.incrementInsertCount(); Map aliasMap = aliasLocal.get(); if (aliasMap != null) { @@ -323,143 +326,5 @@ public class MySqlSchemaStatVisitor extends MySqlASTVisitorAdapter { return fields; } - public static class Column { - - private String table; - private String name; - - public Column(){ - - } - - public Column(String table, String name){ - this.table = table; - this.name = name; - } - - public String getTable() { - return table; - } - - public void setTable(String table) { - this.table = table; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int hashCode() { - int tableHashCode = table != null ? table.toLowerCase().hashCode() : 0; - int nameHashCode = name != null ? name.toLowerCase().hashCode() : 0; - - return tableHashCode + nameHashCode; - } - - public String toString() { - if (table != null) { - return table + "." + name; - } - - return name; - } - - public boolean equals(Object obj) { - Column column = (Column) obj; - - if (table == null) { - if (column.getTable() != null) { - return false; - } - } else { - if (!table.equalsIgnoreCase(column.getTable())) { - return false; - } - } - - if (name == null) { - if (column.getName() != null) { - return false; - } - } else { - if (!name.equalsIgnoreCase(column.getName())) { - return false; - } - } - - return true; - } - } - - public static enum Mode { - Insert(1), Update(2), Delete(4), Select(8); - - public final int mark; - - private Mode(int mark){ - this.mark = mark; - } - } - - public static class TableStat { - - private int selectCount = 0; - private int updateCount = 0; - private int deleteCount = 0; - private int insertCount = 0; - - public int getSelectCount() { - return selectCount; - } - - public void setSelectCount(int selectCount) { - this.selectCount = selectCount; - } - - public int getUpdateCount() { - return updateCount; - } - - public void setUpdateCount(int updateCount) { - this.updateCount = updateCount; - } - - public int getDeleteCount() { - return deleteCount; - } - - public void setDeleteCount(int deleteCount) { - this.deleteCount = deleteCount; - } - - public int getInsertCount() { - return insertCount; - } - - public void setInsertCount(int insertCount) { - this.insertCount = insertCount; - } - - public String toString() { - StringBuilder buf = new StringBuilder(4); - if (insertCount > 0) { - buf.append("C"); - } - if (updateCount > 0) { - buf.append("U"); - } - if (selectCount > 0) { - buf.append("R"); - } - if (deleteCount > 0) { - buf.append("D"); - } - - return buf.toString(); - } - } + } diff --git a/src/main/java/com/alibaba/druid/stat/TableStat.java b/src/main/java/com/alibaba/druid/stat/TableStat.java new file mode 100644 index 0000000000..78740ffb2e --- /dev/null +++ b/src/main/java/com/alibaba/druid/stat/TableStat.java @@ -0,0 +1,158 @@ +package com.alibaba.druid.stat; + +public class TableStat { + + int selectCount = 0; + int updateCount = 0; + int deleteCount = 0; + int insertCount = 0; + + public int getSelectCount() { + return selectCount; + } + + public void incrementSelectCount() { + selectCount++; + } + + public void setSelectCount(int selectCount) { + this.selectCount = selectCount; + } + + public int getUpdateCount() { + return updateCount; + } + + + public void incrementUpdateCount() { + updateCount++; + } + + public void setUpdateCount(int updateCount) { + this.updateCount = updateCount; + } + + public int getDeleteCount() { + return deleteCount; + } + + public void incrementDeleteCount() { + this.deleteCount++; + } + + public void setDeleteCount(int deleteCount) { + this.deleteCount = deleteCount; + } + + public void incrementInsertCount() { + this.insertCount++; + } + + public int getInsertCount() { + return insertCount; + } + + public void setInsertCount(int insertCount) { + this.insertCount = insertCount; + } + + public String toString() { + StringBuilder buf = new StringBuilder(4); + if (insertCount > 0) { + buf.append("C"); + } + if (updateCount > 0) { + buf.append("U"); + } + if (selectCount > 0) { + buf.append("R"); + } + if (deleteCount > 0) { + buf.append("D"); + } + + return buf.toString(); + } + + public static class Column { + + private String table; + private String name; + + public Column(){ + + } + + public Column(String table, String name){ + this.table = table; + this.name = name; + } + + public String getTable() { + return table; + } + + public void setTable(String table) { + this.table = table; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int hashCode() { + int tableHashCode = table != null ? table.toLowerCase().hashCode() : 0; + int nameHashCode = name != null ? name.toLowerCase().hashCode() : 0; + + return tableHashCode + nameHashCode; + } + + public String toString() { + if (table != null) { + return table + "." + name; + } + + return name; + } + + public boolean equals(Object obj) { + Column column = (Column) obj; + + if (table == null) { + if (column.getTable() != null) { + return false; + } + } else { + if (!table.equalsIgnoreCase(column.getTable())) { + return false; + } + } + + if (name == null) { + if (column.getName() != null) { + return false; + } + } else { + if (!name.equalsIgnoreCase(column.getName())) { + return false; + } + } + + return true; + } + } + + public static enum Mode { + Insert(1), Update(2), Delete(4), Select(8); + + public final int mark; + + private Mode(int mark){ + this.mark = mark; + } + } +} diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest1.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest1.java index 262fe00dbd..d28488d598 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest1.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest1.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest1 extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest2.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest2.java index 719443dddc..0056b1f0f8 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest2.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest2.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest2 extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest3.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest3.java index bf7ef82ee0..19e321d3f3 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest3.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest3.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest3 extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest4.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest4.java index a88a3c5a38..1024fb1f67 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest4.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest4.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest4 extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Delete.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Delete.java index 8696d45bb8..94ca569304 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Delete.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Delete.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest_Delete extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery.java index 773f66674a..c0ea8852de 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest_Subquery extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery2.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery2.java index de765b397d..23ab56fc67 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery2.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Subquery2.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest_Subquery2 extends TestCase { diff --git a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Update.java b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Update.java index 890cf3029e..53d6737cf3 100644 --- a/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Update.java +++ b/src/test/java/com/alibaba/druid/sql/mysql/bvt/visitor/MySqlSchemaStatVisitorTest_Update.java @@ -8,7 +8,7 @@ import junit.framework.TestCase; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor; -import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor.Column; +import com.alibaba.druid.stat.TableStat.Column; public class MySqlSchemaStatVisitorTest_Update extends TestCase {