/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.jdbc.relational.impl;
import java.util.HashMap;
import java.util.Map;
import org.teiid.designer.jdbc.relational.util.JdbcRelationalUtil;
/**
* Table statistics value object
* @since 8.0
*/
public class TableStatistics {
private static final String DATABASE_OBJECT_NAME_SEPARATOR = "."; //$NON-NLS-1$
private String catalog;
private String schema;
private String name;
private String fullyQualifiedName;
private int cardinality;
private Map columnStatistics;
public TableStatistics(String fullName) {
parseTableName(fullName);
initialize();
}
public TableStatistics(String catalog, String schema, String fullName) {
this(fullName);
if (catalog != null) {
this.catalog = catalog;
}
if (schema != null) {
this.schema = schema;
}
}
private void parseTableName(String fullName) {
String[] qualifiedParts = fullName.split("\\" + DATABASE_OBJECT_NAME_SEPARATOR); //$NON-NLS-1$
int numParts = qualifiedParts.length;
if (numParts > 0) {
this.name = qualifiedParts[--numParts];
if (numParts > 0) {
this.schema = qualifiedParts[--numParts];
if (numParts > 0) {
this.catalog = qualifiedParts[--numParts];
}
}
} else {
this.name = fullName;
}
}
private void initialize() {
this.columnStatistics = new HashMap();
}
public Map getColumnStats() {
return this.columnStatistics;
}
public void setColumnStats(Map columnStats) {
this.columnStatistics = columnStats;
}
public int getCardinality() {
return this.cardinality;
}
public void setCardinality(int cardinality) {
this.cardinality = cardinality;
}
public String getCatalog() {
return this.catalog;
}
public void setCatalog(String catalog) {
this.catalog = catalog;
resetFullyQualifiedName();
}
public String getSchema() {
return this.schema;
}
public void setSchema(String schema) {
this.schema = schema;
resetFullyQualifiedName();
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
resetFullyQualifiedName();
}
// build the fully qualified, escaped database object name
// for this table
public String getFullyQualifiedEscapedName() {
if (this.fullyQualifiedName == null) {
String temp = ""; //$NON-NLS-1$
if (getCatalog() != null) {
temp += JdbcRelationalUtil.escapeDatabaseObjectName(getCatalog()) + DATABASE_OBJECT_NAME_SEPARATOR;
}
if (getSchema() != null) {
temp += JdbcRelationalUtil.escapeDatabaseObjectName(getSchema()) + DATABASE_OBJECT_NAME_SEPARATOR;
}
temp += JdbcRelationalUtil.escapeDatabaseObjectName(getName());
this.fullyQualifiedName = temp;
}
return this.fullyQualifiedName;
}
private void resetFullyQualifiedName() {
this.fullyQualifiedName = null;
}
}