package cn.org.rapid_framework.jdbc.sqlgenerator.metadata;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* table为metadata类,根据该类的数据生成增删改查sql
* @author badqiu
*
*/
public class Table {
private String tableName;
private List<Column> columns;
public Table(String tableName, Column... columns) {
this(tableName,Arrays.asList(columns));
}
public Table(String tableName, List<Column> columns) {
this.setTableName(tableName);
this.setColumns(columns);
}
public void setColumns(List<Column> columns) {
this.columns = columns;
this.primaryKeyColumns = null;
}
public List<Column> getColumns() {
return Collections.unmodifiableList(columns);
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getTableName() {
return tableName;
}
List<Column> primaryKeyColumns = null;
public List<Column> getPrimaryKeyColumns() {
if(primaryKeyColumns == null) {
primaryKeyColumns = getPrimaryKeyColumns0();
}
return primaryKeyColumns;
}
public int getPrimaryKeyCount() {
return getPrimaryKeyColumns().size();
}
public Column getColumnBySqlName(String sqlName) {
for(Column c : columns) {
if(c.getSqlName().equals(sqlName)) {
return c;
}
}
return null;
}
public Column getColumnByPropertyName(String propertyName) {
for(Column c : columns) {
if(c.getPropertyName().equals(propertyName)) {
return c;
}
}
return null;
}
private List<Column> getPrimaryKeyColumns0() {
List result = new ArrayList();
for(Column c : getColumns()) {
if(c.isPrimaryKey())
result.add(c);
}
return result;
}
public String toString() {
return "tableName:"+getTableName()+" columns:"+getColumns();
}
}