com.alibaba.druid.stat.TableStat Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of druid Show documentation
Show all versions of druid Show documentation
An JDBC datasource implementation.
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.druid.stat;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr;
import com.alibaba.druid.support.json.JSONUtils;
import com.alibaba.druid.util.FnvHash;
import com.alibaba.druid.util.JdbcConstants;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TableStat {
int selectCount = 0;
int updateCount = 0;
int deleteCount = 0;
int insertCount = 0;
int dropCount = 0;
int mergeCount = 0;
int createCount = 0;
int alterCount = 0;
int createIndexCount = 0;
int dropIndexCount = 0;
int referencedCount = 0;
public int getReferencedCount() {
return referencedCount;
}
public void incrementReferencedCount() {
referencedCount++;
}
public int getDropIndexCount() {
return dropIndexCount;
}
public void incrementDropIndexCount() {
this.dropIndexCount++;
}
public int getCreateIndexCount() {
return createIndexCount;
}
public void incrementCreateIndexCount() {
createIndexCount++;
}
public int getAlterCount() {
return alterCount;
}
public void incrementAlterCount() {
this.alterCount++;
}
public int getCreateCount() {
return createCount;
}
public void incrementCreateCount() {
this.createCount++;
}
public int getMergeCount() {
return mergeCount;
}
public void incrementMergeCount() {
this.mergeCount++;
}
public int getDropCount() {
return dropCount;
}
public void incrementDropCount() {
dropCount++;
}
public void setDropCount(int dropCount) {
this.dropCount = dropCount;
}
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 (mergeCount > 0) {
buf.append("Merge");
}
if (insertCount > 0) {
buf.append("Insert");
}
if (updateCount > 0) {
buf.append("Update");
}
if (selectCount > 0) {
buf.append("Select");
}
if (deleteCount > 0) {
buf.append("Delete");
}
if (dropCount > 0) {
buf.append("Drop");
}
if (createCount > 0) {
buf.append("Create");
}
if (alterCount > 0) {
buf.append("Alter");
}
if (createIndexCount > 0) {
buf.append("CreateIndex");
}
if (dropIndexCount > 0) {
buf.append("DropIndex");
}
return buf.toString();
}
public static class Name {
private final String name;
private final long hashCode64;
public Name(String name){
this(name, FnvHash.hashCode64(name));
}
public Name(String name, long hashCode64){
this.name = name;
this.hashCode64 = hashCode64;
}
public String getName() {
return this.name;
}
public int hashCode() {
long value = hashCode64();
return (int)(value ^ (value >>> 32));
}
public long hashCode64() {
return hashCode64;
}
public boolean equals(Object o) {
if (!(o instanceof Name)) {
return false;
}
Name other = (Name) o;
return this.hashCode64 == other.hashCode64;
}
public String toString() {
return SQLUtils.normalize(this.name);
}
}
public static class Relationship {
private Column left;
private Column right;
private String operator;
public Relationship(Column left, Column right, String operator) {
this.left = left;
this.right = right;
this.operator = operator;
}
public Column getLeft() {
return left;
}
public Column getRight() {
return right;
}
public String getOperator() {
return operator;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((left == null) ? 0 : left.hashCode());
result = prime * result + ((operator == null) ? 0 : operator.hashCode());
result = prime * result + ((right == null) ? 0 : right.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Relationship other = (Relationship) obj;
if (left == null) {
if (other.left != null) {
return false;
}
} else if (!left.equals(other.left)) {
return false;
}
if (operator == null) {
if (other.operator != null) {
return false;
}
} else if (!operator.equals(other.operator)) {
return false;
}
if (right == null) {
if (other.right != null) {
return false;
}
} else if (!right.equals(other.right)) {
return false;
}
return true;
}
@Override
public String toString() {
return left + " " + operator + " " + right;
}
}
public static class Condition {
private final Column column;
private final String operator;
private final List