Changeset 621
- Timestamp:
- 10/26/07 18:22:08 (1 year ago)
- Files:
-
- trunk/build/manifests/jelix-lib.mn (modified) (4 diffs)
- trunk/build/manifests/jelix-lib.mn (modified) (4 diffs)
- trunk/lib/jelix/dao/jDaoCompiler.class.php (modified) (1 diff)
- trunk/lib/jelix/dao/jDaoCompiler.class.php (modified) (1 diff)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (13 diffs)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (13 diffs)
- trunk/lib/jelix/plugins/db/intuition/intuition.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/intuition/intuition.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/mysql/mysql.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/mysql/mysql.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/oci8 (added)
- trunk/lib/jelix/plugins/db/oci8 (added)
- trunk/lib/jelix/plugins/db/oci8/oci8.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/oci8/oci8.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/postgresql/postgresql.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/postgresql/postgresql.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/sqlite/sqlite.daobuilder.php (added)
- trunk/lib/jelix/plugins/db/sqlite/sqlite.daobuilder.php (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/build/manifests/jelix-lib.mn
r614 r621 300 300 intuition.dbresultset.php 301 301 intuition.dbtools.php 302 intuition.daobuilder.php 302 303 303 304 cd lib/jelix/plugins/db/mysql … … 305 306 mysql.dbresultset.php 306 307 mysql.dbtools.php 308 mysql.daobuilder.php 307 309 308 310 cd lib/jelix/plugins/db/postgresql … … 310 312 postgresql.dbresultset.php 311 313 postgresql.dbtools.php 314 postgresql.daobuilder.php 312 315 313 316 cd lib/jelix/plugins/db/sqlite … … 315 318 sqlite.dbresultset.php 316 319 sqlite.dbtools.php 320 sqlite.daobuilder.php 321 322 cd lib/jelix/plugins/db/oci8 323 oci8.daobuilder.php 317 324 318 325 cd lib/jelix/plugins/tpl/common trunk/build/manifests/jelix-lib.mn
r614 r621 300 300 intuition.dbresultset.php 301 301 intuition.dbtools.php 302 intuition.daobuilder.php 302 303 303 304 cd lib/jelix/plugins/db/mysql … … 305 306 mysql.dbresultset.php 306 307 mysql.dbtools.php 308 mysql.daobuilder.php 307 309 308 310 cd lib/jelix/plugins/db/postgresql … … 310 312 postgresql.dbresultset.php 311 313 postgresql.dbtools.php 314 postgresql.daobuilder.php 312 315 313 316 cd lib/jelix/plugins/db/sqlite … … 315 318 sqlite.dbresultset.php 316 319 sqlite.dbtools.php 320 sqlite.daobuilder.php 321 322 cd lib/jelix/plugins/db/oci8 323 oci8.daobuilder.php 317 324 318 325 cd lib/jelix/plugins/tpl/common trunk/lib/jelix/dao/jDaoCompiler.class.php
r582 r621 87 87 $parser->parse(simplexml_import_dom($doc)); 88 88 89 $generator = new jDaoGenerator($selector->getDaoClass(), $selector->getDaoRecordClass(), $parser); 89 global $gJConfig; 90 #ifnot ENABLE_OPTIMIZED_SOURCE 91 if(!isset($gJConfig->_pluginsPathList_db[$selector->driver]) 92 || !file_exists($gJConfig->_pluginsPathList_db[$selector->driver]) ){ 93 throw new jException('jelix~db.error.driver.notfound', $profil['driver']); 94 } 95 #endif 96 require_once($gJConfig->_pluginsPathList_db[$selector->driver].$selector->driver.'.daobuilder.php'); 97 $class = $selector->driver.'DaoBuilder'; 98 $generator = new $class ($selector->getDaoClass(), $selector->getDaoRecordClass(), $parser); 90 99 91 100 // génération des classes PHP correspondant à la définition de la DAO trunk/lib/jelix/dao/jDaoCompiler.class.php
r582 r621 87 87 $parser->parse(simplexml_import_dom($doc)); 88 88 89 $generator = new jDaoGenerator($selector->getDaoClass(), $selector->getDaoRecordClass(), $parser); 89 global $gJConfig; 90 #ifnot ENABLE_OPTIMIZED_SOURCE 91 if(!isset($gJConfig->_pluginsPathList_db[$selector->driver]) 92 || !file_exists($gJConfig->_pluginsPathList_db[$selector->driver]) ){ 93 throw new jException('jelix~db.error.driver.notfound', $profil['driver']); 94 } 95 #endif 96 require_once($gJConfig->_pluginsPathList_db[$selector->driver].$selector->driver.'.daobuilder.php'); 97 $class = $selector->driver.'DaoBuilder'; 98 $generator = new $class ($selector->getDaoClass(), $selector->getDaoRecordClass(), $parser); 90 99 91 100 // génération des classes PHP correspondant à la définition de la DAO trunk/lib/jelix/dao/jDaoGenerator.class.php
r614 r621 30 30 * @var jDaoParser 31 31 */ 32 pr ivate$_datasParser = null;32 protected $_datasParser = null; 33 33 34 34 /** … … 36 36 * @var string 37 37 */ 38 pr ivate$_DaoRecordClassName = null;38 protected $_DaoRecordClassName = null; 39 39 40 40 /** … … 42 42 * @var string 43 43 */ 44 private $_DaoClassName=null; 44 protected $_DaoClassName = null; 45 46 47 protected $propertiesListForInsert = 'PrimaryTable'; 48 protected $aliasWord = ' AS '; 45 49 46 50 /** … … 58 62 * build all classes 59 63 */ 60 public f unction buildClasses () {64 public final function buildClasses () { 61 65 62 66 $src = array(); … … 146 150 $src[] = '}else{'; 147 151 148 if (($this->_dbtype=='mysql') || ($this->_dbtype=='sqlserver') || ($this->_dbtype=='postgresql')) { 149 $fields = $this->_getPropertiesBy('PrimaryFieldsExcludeAutoIncrement'); 150 }else{ 151 $fields = $this->_getPropertiesBy('PrimaryTable'); 152 } 152 $fields = $this->_getPropertiesBy($this->propertiesListForInsert); 153 153 }else{ 154 154 $fields = $this->_getPropertiesBy('PrimaryTable'); … … 176 176 if($pkai !== null){ 177 177 $src[] = ' if($result){'; 178 if ($this->_dbtype=='sqlserver') { 179 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastIdInTable(\''.$pkai->fieldName.'\',\''.$pTableRealName.'\');'; 180 }else if ($this->_dbtype=='postgresql') { 181 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId(\''.$pkai->sequenceName.'\');'; 182 }else{ 183 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 184 } 185 $src[] = ' return $result;'; 186 $src[] = ' }else return false;'; 178 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 179 $src[] = $this->genUpdateAutoIncrementPK($pkai, $pTableRealName); 180 $src[] = ' return $result;'; 181 $src[] = ' }else return false;'; 187 182 }else{ 188 183 $src[] = ' return $result;'; … … 354 349 * @return array FROM string and WHERE string 355 350 */ 356 protected function _getFromClause(){ 357 358 $aliaslink = ($this->_dbtype == 'oci8'?' ':' AS '); 351 final protected function _getFromClause(){ 359 352 360 353 $sqlWhere = ''; … … 366 359 367 360 if($primarytable['name']!=$primarytable['realname']) 368 $sqlFrom =$ptrealname.$ aliaslink.$ptname;361 $sqlFrom =$ptrealname.$this->aliasWord.$ptname; 369 362 else 370 363 $sqlFrom =$ptrealname; … … 375 368 376 369 if($table['name']!=$table['realname']) 377 $r =$this->_encloseName($table['realname']).$ aliaslink.$tablename;370 $r =$this->_encloseName($table['realname']).$this->aliasWord.$tablename; 378 371 else 379 372 $r =$this->_encloseName($table['realname']); … … 397 390 } 398 391 $fieldjoin=substr($fieldjoin,4); 399 //$fieldjoin=$primarytable['name'].'.'.$table['onforeignkey'].'='.$table['name'].'.'.$table['primarykey']; 392 400 393 if($tablejoin[1] == 0){ 401 394 $sqlFrom.=' LEFT JOIN '.$r.' ON ('.$fieldjoin.')'; … … 410 403 $tablename = $this->_encloseName($table['name']); 411 404 if($table['name']!=$table['realname']) 412 $sqlFrom .=', '.$this->_encloseName($table['realname']).$ aliaslink.$tablename;405 $sqlFrom .=', '.$this->_encloseName($table['realname']).$this->aliasWord.$tablename; 413 406 else 414 407 $sqlFrom .=', '.$this->_encloseName($table['realname']); … … 417 410 $sqlWhere.=' AND '.$ptname.'.'.$this->_encloseName($fk).'='.$tablename.'.'.$this->_encloseName($table['pk'][$k]); 418 411 } 419 //$sqlWhere.=' AND '.$primarytable['name'].'.'.$table['onforeignkey'].'='.$table['name'].'.'.$table['primarykey'];420 412 } 421 413 … … 838 830 839 831 protected function _encloseName($name){ 840 if($this->_dbtype == 'mysql'){ 841 return '`'.$name.'`'; 842 }elseif($this->_dbtype == 'postgresql'){ 843 return '"'.$name.'"'; 844 }else 845 return $name; 846 } 832 return $name; 833 } 834 835 protected function genUpdateAutoIncrementPK($pkai, $pTableRealName) { 836 return ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 837 } 838 839 847 840 } 848 841 ?> trunk/lib/jelix/dao/jDaoGenerator.class.php
r614 r621 30 30 * @var jDaoParser 31 31 */ 32 pr ivate$_datasParser = null;32 protected $_datasParser = null; 33 33 34 34 /** … … 36 36 * @var string 37 37 */ 38 pr ivate$_DaoRecordClassName = null;38 protected $_DaoRecordClassName = null; 39 39 40 40 /** … … 42 42 * @var string 43 43 */ 44 private $_DaoClassName=null; 44 protected $_DaoClassName = null; 45 46 47 protected $propertiesListForInsert = 'PrimaryTable'; 48 protected $aliasWord = ' AS '; 45 49 46 50 /** … … 58 62 * build all classes 59 63 */ 60 public f unction buildClasses () {64 public final function buildClasses () { 61 65 62 66 $src = array(); … … 146 150 $src[] = '}else{'; 147 151 148 if (($this->_dbtype=='mysql') || ($this->_dbtype=='sqlserver') || ($this->_dbtype=='postgresql')) { 149 $fields = $this->_getPropertiesBy('PrimaryFieldsExcludeAutoIncrement'); 150 }else{ 151 $fields = $this->_getPropertiesBy('PrimaryTable'); 152 } 152 $fields = $this->_getPropertiesBy($this->propertiesListForInsert); 153 153 }else{ 154 154 $fields = $this->_getPropertiesBy('PrimaryTable'); … … 176 176 if($pkai !== null){ 177 177 $src[] = ' if($result){'; 178 if ($this->_dbtype=='sqlserver') { 179 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastIdInTable(\''.$pkai->fieldName.'\',\''.$pTableRealName.'\');'; 180 }else if ($this->_dbtype=='postgresql') { 181 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId(\''.$pkai->sequenceName.'\');'; 182 }else{ 183 $src[] = ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 184 } 185 $src[] = ' return $result;'; 186 $src[] = ' }else return false;'; 178 $src[] = ' if($record->'.$pkai->name.' < 1 ) '; 179 $src[] = $this->genUpdateAutoIncrementPK($pkai, $pTableRealName); 180 $src[] = ' return $result;'; 181 $src[] = ' }else return false;'; 187 182 }else{ 188 183 $src[] = ' return $result;'; … … 354 349 * @return array FROM string and WHERE string 355 350 */ 356 protected function _getFromClause(){ 357 358 $aliaslink = ($this->_dbtype == 'oci8'?' ':' AS '); 351 final protected function _getFromClause(){ 359 352 360 353 $sqlWhere = ''; … … 366 359 367 360 if($primarytable['name']!=$primarytable['realname']) 368 $sqlFrom =$ptrealname.$ aliaslink.$ptname;361 $sqlFrom =$ptrealname.$this->aliasWord.$ptname; 369 362 else 370 363 $sqlFrom =$ptrealname; … … 375 368 376 369 if($table['name']!=$table['realname']) 377 $r =$this->_encloseName($table['realname']).$ aliaslink.$tablename;370 $r =$this->_encloseName($table['realname']).$this->aliasWord.$tablename; 378 371 else 379 372 $r =$this->_encloseName($table['realname']); … … 397 390 } 398 391 $fieldjoin=substr($fieldjoin,4); 399 //$fieldjoin=$primarytable['name'].'.'.$table['onforeignkey'].'='.$table['name'].'.'.$table['primarykey']; 392 400 393 if($tablejoin[1] == 0){ 401 394 $sqlFrom.=' LEFT JOIN '.$r.' ON ('.$fieldjoin.')'; … … 410 403 $tablename = $this->_encloseName($table['name']); 411 404 if($table['name']!=$table['realname']) 412 $sqlFrom .=', '.$this->_encloseName($table['realname']).$ aliaslink.$tablename;405 $sqlFrom .=', '.$this->_encloseName($table['realname']).$this->aliasWord.$tablename; 413 406 else 414 407 $sqlFrom .=', '.$this->_encloseName($table['realname']); … … 417 410 $sqlWhere.=' AND '.$ptname.'.'.$this->_encloseName($fk).'='.$tablename.'.'.$this->_encloseName($table['pk'][$k]); 418 411 } 419 //$sqlWhere.=' AND '.$primarytable['name'].'.'.$table['onforeignkey'].'='.$table['name'].'.'.$table['primarykey'];420 412 } 421 413 … … 838 830 839 831 protected function _encloseName($name){ 840 if($this->_dbtype == 'mysql'){ 841 return '`'.$name.'`'; 842 }elseif($this->_dbtype == 'postgresql'){ 843 return '"'.$name.'"'; 844 }else 845 return $name; 846 } 832 return $name; 833 } 834 835 protected function genUpdateAutoIncrementPK($pkai, $pTableRealName) { 836 return ' if($record->'.$pkai->name.' < 1 ) $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 837 } 838 839 847 840 } 848 841 ?>
