package cn.org.rapid_framework.generator.provider.db.table.model; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; import cn.org.rapid_framework.generator.util.StringHelper; /** * 包含一组Column对象的容器类 * @author badqiu * */ public class ColumnSet implements java.io.Serializable{ private static final long serialVersionUID = -6500047411657968878L; private LinkedHashSet<Column> columns = new LinkedHashSet<Column>(); public ColumnSet(){ } public ColumnSet(Collection<? extends Column> columns) { super(); this.columns = new LinkedHashSet(columns); } public LinkedHashSet<Column> getColumns() { return columns; } public void setColumns(LinkedHashSet<Column> columns) { this.columns = columns; } public void addColumn(Column c) { columns.add(c); } public Column getBySqlName(String name,int sqlType) { for(Column c : columns) { if(name.equalsIgnoreCase(c.getSqlName()) && c.getSqlType() == sqlType) { return c; } } return null; } public Column getBySqlName(String name) { if(name == null) return null; for(Column c : columns) { if(name.equalsIgnoreCase(c.getSqlName())) { return c; } } return null; } public Column getByName(String name) { if(name == null) return null; Column c = getBySqlName(name); if(c == null) { c = getBySqlName(StringHelper.toUnderscoreName(name)); } return c; } public Column getByName(String name,int sqlType) { Column c = getBySqlName(name,sqlType); if(c == null) { c = getBySqlName(StringHelper.toUnderscoreName(name),sqlType); } return c; } public Column getByColumnName(String name) { if(name == null) return null; for(Column c : columns) { if(name.equals(c.getColumnName())) { return c; } } return null; } /** * 得到是主键的全部column * @return */ public List<Column> getPkColumns() { List results = new ArrayList(); for(Column c : getColumns()) { if(c.isPk()) results.add(c); } return results; } /** * 得到不是主键的全部column * @return */ public List<Column> getNotPkColumns() { List results = new ArrayList(); for(Column c : getColumns()) { if(!c.isPk()) results.add(c); } return results; } /** * 得到主键总数 * @return */ public int getPkCount() { int pkCount = 0; for(Column c : columns){ if(c.isPk()) { pkCount ++; } } return pkCount; } /** 得到单主键,等价于getPkColumns().get(0) */ public Column getPkColumn() { if(getPkColumns().isEmpty()) { return null; } return getPkColumns().get(0); } public List<Column> getEnumColumns() { List results = new ArrayList(); for(Column c : getColumns()) { if(!c.isEnumColumn()) results.add(c); } return results; } }