package org.olap.server.database.physical; import java.util.ArrayList; import java.util.List; import com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn; import com.healthmarketscience.sqlbuilder.dbspec.basic.DbSchema; import com.healthmarketscience.sqlbuilder.dbspec.basic.DbTable; public class DimensionTable { public String table, key; public List<TableColumn> columns; private DbTable dbTable; private DbColumn dbKey; protected void index(DbSchema dbSchema) { dbTable = dbSchema.addTable(table); dbKey = dbTable.addColumn(key); for(TableColumn t : columns){ t.setDbColumn(dbTable.addColumn(t.column)); } } public DbTable getDbTable() { return dbTable; } public DbColumn getDbKey() { return dbKey; } public TableColumn findColumnByAttribute(String attribute_name){ for(TableColumn c : columns){ if(c.attribute!=null && attribute_name.equals(c.attribute)) return c; } return null; } public TableColumn findColumnByName(String name){ for(TableColumn c : columns){ if( name.equals(c.column)) return c; } return null; } public DimensionTable createAlias(DbSchema dbSchema) { DimensionTable alias = new DimensionTable(); alias.key = key; alias.table = table; alias.columns = new ArrayList<TableColumn>(); for(TableColumn tc : columns){ TableColumn alias_tc = new TableColumn(); alias_tc.attribute = tc.attribute; alias_tc.column = tc.column; alias_tc.identified_by = tc.identified_by; alias_tc.sort_direction = tc.sort_direction; alias_tc.sorted_by = tc.sorted_by; alias.columns.add(alias_tc); } alias.index(dbSchema); return alias; } }