4 * TOracleTableInfo class file.
6 * @author Marcos Nobre <marconobre[at]gmail[dot]com>
7 * @link http://www.pradosoft.com/
8 * @copyright Copyright © 2005-2014 PradoSoft
9 * @license http://www.pradosoft.com/license/
10 * @package System.Data.Common
14 * TDbTableInfo class describes the meta data of a database table.
16 * @author Wei Zhuo <weizho[at]gmail[dot]com>
17 * @package System.Data.Common
20 class TOracleTableInfo extends TComponent
22 private $_info=array();
24 private $_primaryKeys;
25 private $_foreignKeys;
32 * Sets the database table meta data information.
33 * @param array table column information.
35 public function __construct($tableInfo=array(),$primary=array(),$foreign=array())
37 $this->_info=$tableInfo;
38 $this->_primaryKeys=$primary;
39 $this->_foreignKeys=$foreign;
40 $this->_columns=new TMap;
44 * @param TDbConnection database connection.
45 * @return TDbCommandBuilder new command builder
47 public function createCommandBuilder($connection)
49 Prado::using('System.Data.Common.Oracle.TOracleCommandBuilder');
50 return new TOracleCommandBuilder($connection,$this);
54 * @param string information array key name
55 * @param mixed default value if information array value is null
56 * @return mixed information array value.
58 public function getInfo($name,$default=null)
60 return isset($this->_info[$name]) ? $this->_info[$name] : $default;
64 * @param string information array key name
65 * @param mixed new information array value.
67 protected function setInfo($name,$value)
69 $this->_info[$name]=$value;
73 * @return string name of the table this column belongs to.
75 public function getTableName()
77 return $this->getInfo('TableName');
81 * @return string full name of the table, database dependent.
83 public function getTableFullName()
85 return $this->_info['SchemaName'].'.'.$this->getTableName();
89 * @return boolean whether the table is a view, default is false.
91 public function getIsView()
93 return $this->getInfo('IsView',false);
97 * @return TMap TDbTableColumn column meta data.
99 public function getColumns()
101 return $this->_columns;
105 * @param string column id
106 * @return TDbTableColumn column information.
108 public function getColumn($name)
110 if(($column = $this->_columns->itemAt($name))!==null)
112 throw new TDbException('dbtableinfo_invalid_column_name', $name, $this->getTableFullName());
116 * @param array list of column Id, empty to get all columns.
117 * @return array table column names (identifier quoted)
119 public function getColumnNames()
121 foreach($this->getColumns() as $column)
122 $names[] = $column->getColumnName();
127 * @return string[] names of primary key columns.
129 public function getPrimaryKeys()
131 return $this->_primaryKeys;
135 * @return array tuples of foreign table and column name.
137 public function getForeignKeys()
139 return $this->_foreignKeys;
143 * @return array lowercased column key names mapped to normal column ids.
145 public function getLowerCaseColumnNames()
147 if($this->_lowercase===null)
149 $this->_lowercase=array();
150 foreach($this->getColumns()->getKeys() as $key)
151 $this->_lowercase[strtolower($key)] = $key;
153 return $this->_lowercase;