PageRenderTime 47ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/setup/database/model/DatabaseModel.php

http://rhaco.googlecode.com/
PHP | 795 lines | 770 code | 16 blank | 9 comment | 42 complexity | 2d2e5b4b300587b4a224ac78f180b35d MD5 | raw file
Possible License(s): BSD-3-Clause
  1. <?php
  2. Rhaco::import("setup.database.model.TableModel");
  3. Rhaco::import("setup.database.model.ExTableModel");
  4. Rhaco::import("setup.database.model.MapTableModel");
  5. Rhaco::import("exception.ExceptionTrigger");
  6. Rhaco::import("exception.model.SqlException");
  7. Rhaco::import("lang.ObjectUtil");
  8. Rhaco::import("exception.model.NotFoundException");
  9. Rhaco::import("tag.model.SimpleTag");
  10. Rhaco::import("lang.StringUtil");
  11. Rhaco::import("lang.Variable");
  12. Rhaco::import("util.Logger");
  13. Rhaco::import("exception.model.DuplicateException");
  14. Rhaco::import("network.http.Header");
  15. /**
  16. * setup.php??data model
  17. *
  18. * @author Kazutaka Tokushima
  19. * @license New BSD License
  20. * @copyright Copyright 2007- rhaco project. All rights reserved.
  21. */
  22. class DatabaseModel{
  23. var $name;
  24. var $class;
  25. var $recognition_code;
  26. var $user;
  27. var $host;
  28. var $password;
  29. var $port;
  30. var $encode = "UTF8";
  31. var $type = "database.controller.DbUtilMySQL";
  32. var $prefix;
  33. var $description;
  34. var $tableList = array();
  35. function DatabaseModel($dbTag){
  36. if(Variable::istype("SimpleTag",$dbTag)){
  37. ObjectUtil::copyProperties($dbTag,$this,true);
  38. if(empty($this->name)) ExceptionTrigger::raise(new NotFoundException(Message::_("database name")));
  39. $this->class = (empty($this->class)) ? $this->name : $this->class;
  40. $this->recognition_code = strtolower($this->class);
  41. if(Rhaco::constant(sprintf("DATABASE_%s_NAME",$this->class)) != null){
  42. $this->name = Rhaco::constant(sprintf("DATABASE_%s_NAME",$this->class));
  43. $this->user = Rhaco::constant(sprintf("DATABASE_%s_USER",$this->class));
  44. $this->host = Rhaco::constant(sprintf("DATABASE_%s_HOST",$this->class));
  45. $this->password = Rhaco::constant(sprintf("DATABASE_%s_PASSWORD",$this->class));
  46. $this->port = Rhaco::constant(sprintf("DATABASE_%s_PORT",$this->class));
  47. $this->type = Rhaco::constant(sprintf("DATABASE_%s_TYPE",$this->class));
  48. $this->encode = Rhaco::constant(sprintf("DATABASE_%s_ENCODE",$this->class));
  49. $this->prefix = Rhaco::constant(sprintf("DATABASE_%s_PREFIX",$this->class));
  50. }else if(empty($this->prefix)){
  51. $this->prefix = substr(strtoupper($this->class),0,3)."_";
  52. }
  53. if($this->type == "database.controller.DbUtilMySQL") $this->encode = str_replace("-","",$this->encode);
  54. foreach($dbTag->getIn("table",true) as $tableTag){
  55. $table = new TableModel($tableTag);
  56. if(array_key_exists($table->recognition_code,$this->tableList)){
  57. ExceptionTrigger::raise(new DuplicateException(Message::_("{1} [{2}]",$table->name,$table->recognition_code)));
  58. }
  59. $this->tableList[$table->recognition_code] = $table;
  60. }
  61. foreach($dbTag->getIn("map",true) as $tableTag){
  62. $table = new MapTableModel($tableTag);
  63. if(array_key_exists($table->recognition_code,$this->tableList)){
  64. ExceptionTrigger::raise(new DuplicateException(Message::_("{1} [{2}]",$table->name,$table->recognition_code)));
  65. }
  66. $this->tableList[$table->recognition_code] = $table;
  67. }
  68. foreach($dbTag->getIn("ext",true) as $tableTag){
  69. $table = new ExTableModel($tableTag,$this->tableList);
  70. if(array_key_exists($table->recognition_code,$this->tableList)){
  71. ExceptionTrigger::raise(new DuplicateException(Message::_("{1} [{2}]",$table->class,$table->recognition_code)));
  72. }
  73. $this->tableList[$table->recognition_code] = $table;
  74. }
  75. $this->description = StringUtil::toULD($dbTag->getInValue("description"));
  76. foreach($this->tableList as $table){
  77. foreach($table->columnList as $column){
  78. $this->tableList[$table->recognition_code]->columnList[$column->recognition_code]->checkReference($this->tableList);
  79. }
  80. }
  81. foreach($this->tableList as $table){
  82. $referenceList = array();
  83. foreach($table->columnList as $column){
  84. if($column->isReference()){
  85. if(isset($referenceList[$column->reference[0]->recognition_code])){
  86. ExceptionTrigger::raise(new DuplicateException(Message::_("{1} ??? {2}",$table->recognition_code,$column->reference[0]->recognition_code)));
  87. }
  88. $referenceList[$column->reference[0]->recognition_code] = $column->reference;
  89. }
  90. }
  91. }
  92. if(!ExceptionTrigger::invalid()){
  93. foreach($this->tableList as $table){
  94. foreach($table->columnList as $column){
  95. if($column->isReference()){
  96. $this->tableList[$column->reference[0]->recognition_code]->columnList[$column->reference[1]->recognition_code]->dependList[$table->recognition_code."::".$column->recognition_code] = array($table,$column);
  97. }
  98. }
  99. }
  100. foreach($this->tableList as $table){
  101. if(Variable::istype("MapTableModel",$table)){
  102. foreach($table->columnList as $column){
  103. if($column->isReference()){
  104. foreach($table->columnList as $rcolumn){
  105. if($rcolumn->isReference() && $rcolumn->recognition_code != $column->recognition_code){
  106. $this->tableList[$column->reference[0]->recognition_code]->mapList[] = $rcolumn->reference;
  107. }
  108. }
  109. }
  110. }
  111. }
  112. }
  113. foreach($dbTag->getIn("default",true) as $defaultTag){
  114. $class = StringUtil::regularizedName($defaultTag->getParameter("class",$defaultTag->getParameter("name")));
  115. $bool = false;
  116. foreach($this->tableList as $table_recognition_code => $table){
  117. if(Variable::iequal($table->recognition_code,$class) || Variable::iequal($table->recognition_code,$class)){
  118. $tag = new SimpleTag("default",$defaultTag->getValue(),array("name"=>$table->class));
  119. $this->tableList[$table_recognition_code]->defaults .= $tag->get();
  120. $bool = true;
  121. break;
  122. }
  123. }
  124. if(!$bool) ExceptionTrigger::raise(new NotFoundException(Message::_("table name `{1}` of the default data",$class)));
  125. }
  126. }
  127. }
  128. }
  129. function create($target){
  130. if(Variable::iequal($target,$this->recognition_code)){
  131. $con = new DbConnection();
  132. $dbUtil = new DbUtilInitializer(ObjectUtil::copyProperties($this,$con,true));
  133. if($dbUtil !== null && $dbUtil->connection !== false){
  134. foreach(explode(";",$dbUtil->forward($this)) as $sql){
  135. if(trim($sql) != ""){
  136. if(!$dbUtil->query($sql)){
  137. ExceptionTrigger::raise(new SqlException($sql));
  138. }
  139. }
  140. }
  141. }
  142. if(ExceptionTrigger::isException()) $dbUtil->rollback();
  143. $dbUtil->close();
  144. }
  145. }
  146. function createSql($target){
  147. if(Variable::iequal($target,$this->recognition_code)){
  148. $con = new DbConnection();
  149. $dbUtil = new DbUtilInitializer(ObjectUtil::copyProperties($this,$con,true));
  150. Logger::disableDisplay();
  151. Header::attach($dbUtil->forward($this),$target.".sql");
  152. Rhaco::end();
  153. }
  154. }
  155. function import($target){
  156. /*** #pass */
  157. if(Variable::iequal($target,$this->recognition_code)){
  158. $con = new DbConnection();
  159. $dbUtil = new DbUtilInitializer(ObjectUtil::copyProperties($this,$con,true));
  160. foreach($this->tableList as $table){
  161. if(Rhaco::import("model.".$table->method)){
  162. $method = $table->method;
  163. $obj = new $method();
  164. if(!empty($table->defaults)) $dbUtil->importXml($obj,$table->defaults,false);
  165. if(!empty($table->default)) $dbUtil->import($obj,FileUtil::read($table->default));
  166. }
  167. }
  168. if(ExceptionTrigger::isException()) $dbUtil->rollback();
  169. $dbUtil->close();
  170. }
  171. }
  172. function droptable($target){
  173. /*** #pass */
  174. if(Variable::iequal($target,$this->recognition_code)){
  175. $con = new DbConnection();
  176. $dbUtil = new DbUtilInitializer(ObjectUtil::copyProperties($this,$con,true));
  177. foreach($this->tableList as $table){
  178. if(!empty($table->name) && Rhaco::import("model.".$table->method)){
  179. $method = $table->method;
  180. $dbUtil->droptable(new $method());
  181. }
  182. }
  183. if(ExceptionTrigger::isException()) $dbUtil->rollback();
  184. $dbUtil->close();
  185. }
  186. }
  187. function isDefault(){
  188. foreach($this->tableList as $table){
  189. if($table->isDefaults()) return true;
  190. }
  191. return false;
  192. }
  193. function isReserved($name,$type,$label){
  194. if(!Rhaco::isVariable("RHACO_DATABASE_RESERVED_NAME")){
  195. Rhaco::setVariable("RHACO_DATABASE_RESERVED_NAME",array(
  196. "ACCESS",
  197. "ACCOUNT",
  198. "ACTIVATE",
  199. "ADD",
  200. "ADDADD",
  201. "ADMIN",
  202. "ADVISE",
  203. "AFTER",
  204. "ALL",
  205. "ALLOCATE",
  206. "ALL_ROWS",
  207. "ALTER",
  208. "ANALYZE",
  209. "AND",
  210. "ANY",
  211. "ARCHIVE",
  212. "ARCHIVELOG",
  213. "ARRAY",
  214. "AS",
  215. "ASC",
  216. "AT",
  217. "AUDIT",
  218. "AUTHENTICATED",
  219. "AUTHORIZATION",
  220. "AUTOEXTEND",
  221. "AUTOMATIC",
  222. "BACKUP",
  223. "BECOME",
  224. "BEFORE",
  225. "BEGIN",
  226. "BETWEEN",
  227. "BFILE",
  228. "BIGINT",
  229. "BINARY",
  230. "BITMAP",
  231. "BLOB",
  232. "BLOCK",
  233. "BODY",
  234. "BOTH",
  235. "BY",
  236. "CACHE",
  237. "CACHE_INSTANCES",
  238. "CANCEL",
  239. "CASCADE",
  240. "CASE",
  241. "CAST",
  242. "CFILE",
  243. "CHAINED",
  244. "CHANGE",
  245. "CHAR",
  246. "CHARACTER",
  247. "CHAR_CS",
  248. "CHECK",
  249. "CHECKPOINT",
  250. "CHOOSE",
  251. "CHUNK",
  252. "CLEAR",
  253. "CLOB",
  254. "CLONE",
  255. "CLOSE",
  256. "CLOSE_CACHED_OPEN_CURSORS",
  257. "CLUSTER",
  258. "COALESCE",
  259. "COLLATE",
  260. "COLUMN",
  261. "COLUMNS",
  262. "COMMENT",
  263. "COMMIT",
  264. "COMMITTED",
  265. "COMPATIBILITY",
  266. "COMPILE",
  267. "COMPLETE",
  268. "COMPOSITE_LIMIT",
  269. "COMPRESS",
  270. "COMPUTE",
  271. "CONNECT",
  272. "CONNECT_TIME",
  273. "CONSTRAINT",
  274. "CONSTRAINTS",
  275. "CONTENTS",
  276. "CONTINUE",
  277. "CONTROLFILE",
  278. "CONVERT",
  279. "COST",
  280. "CPU_PER_CALL",
  281. "CPU_PER_SESSION",
  282. "CREATE",
  283. "CROSS",
  284. "CURRENT",
  285. "CURRENT_DATE",
  286. "CURRENT_SCHEMA",
  287. "CURRENT_TIME",
  288. "CURRENT_TIMESTAMP",
  289. "CURRENT_USER",
  290. "CURREN_USER",
  291. "CURSOR",
  292. "CYCLE",
  293. "DANGLING",
  294. "DATABASE",
  295. "DATABASES",
  296. "DATAFILE",
  297. "DATAFILES",
  298. "DATAOBJNO",
  299. "DATE",
  300. "DAY_HOUR",
  301. "DAY_MICROSECOND",
  302. "DAY_MINUTE",
  303. "DAY_SECOND",
  304. "DBA",
  305. "DBHIGH",
  306. "DBLOW",
  307. "DBMAC",
  308. "DEALLOCATE",
  309. "DEBUG",
  310. "DEC",
  311. "DECIMAL",
  312. "DECLARE",
  313. "DEFAULT",
  314. "DEFERRABLE",
  315. "DEFERRED",
  316. "DEGREE",
  317. "DELAYED",
  318. "DELETE",
  319. "DEREF",
  320. "DESC",
  321. "DESCRIBE",
  322. "DIRECTORY",
  323. "DISABLE",
  324. "DISCONNECT",
  325. "DISMOUNT",
  326. "DISTINCT",
  327. "DISTINCTROW",
  328. "DISTRIBUTED",
  329. "DIV",
  330. "DML",
  331. "DOUBLE",
  332. "DROP",
  333. "DUAL",
  334. "DUMP",
  335. "EACH",
  336. "ELSE",
  337. "ENABLE",
  338. "ENCLOSED",
  339. "END",
  340. "ENFORCE",
  341. "ENTRY",
  342. "ESCAPE",
  343. "ESCAPED",
  344. "EXCEPT",
  345. "EXCEPTIONS",
  346. "EXCHANGE",
  347. "EXCLUDING",
  348. "EXCLUSIVE",
  349. "EXECUTE",
  350. "EXISTS",
  351. "EXPIRE",
  352. "EXPLAIN",
  353. "EXTENT",
  354. "EXTENTS",
  355. "EXTERNALLY",
  356. "FAILED_LOGIN_ATTEMPTS",
  357. "FALSE",
  358. "FAST",
  359. "FIELDS",
  360. "FILE",
  361. "FIRST_ROWS",
  362. "FLAGGER",
  363. "FLOAT",
  364. "FLOAT4",
  365. "FLOAT8",
  366. "FLOB",
  367. "FLUSH",
  368. "FOR",
  369. "FORCE",
  370. "FOREIGN",
  371. "FREELIST",
  372. "FREELISTS",
  373. "FROM",
  374. "FULL",
  375. "FULLTEXT",
  376. "FUNCTION",
  377. "GLOBAL",
  378. "GLOBALLY",
  379. "GLOBAL_NAME",
  380. "GRANT",
  381. "GROUP",
  382. "GROUPS",
  383. "HASH",
  384. "HASHKEYS",
  385. "HAVING",
  386. "HEADER",
  387. "HEAP",
  388. "HIGH_PRIORITY",
  389. "HOUR_MICROSECOND",
  390. "HOUR_MINUTE",
  391. "HOUR_SECOND",
  392. "IDENTIFIED",
  393. "IDGENERATORS",
  394. "IDLE_TIME",
  395. "IF",
  396. "IGNORE",
  397. "IMMEDIATE",
  398. "IN",
  399. "INCLUDING",
  400. "INCREMENT",
  401. "INDEX",
  402. "INDEXED",
  403. "INDEXES",
  404. "INDICATOR",
  405. "IND_PARTITION",
  406. "INFILE",
  407. "INITIAL",
  408. "INITIALLY",
  409. "INITRANS",
  410. "INNER",
  411. "INSERT",
  412. "INSTANCE",
  413. "INSTANCES",
  414. "INSTEAD",
  415. "INT",
  416. "INT1",
  417. "INT2",
  418. "INT3",
  419. "INT4",
  420. "INT8",
  421. "INTEGER",
  422. "INTERMEDIATE",
  423. "INTERSECT",
  424. "INTERVAL",
  425. "INTO",
  426. "IS",
  427. "ISOLATION",
  428. "ISOLATION_LEVEL",
  429. "JOIN",
  430. "KEEP",
  431. "KEY",
  432. "KEYS",
  433. "KILL",
  434. "LABEL",
  435. "LAYER",
  436. "LEADING",
  437. "LEFT",
  438. "LESS",
  439. "LEVEL",
  440. "LIBRARY",
  441. "LIKE",
  442. "LIMIT",
  443. "LINES",
  444. "LINK",
  445. "LIST",
  446. "LOAD",
  447. "LOB",
  448. "LOCAL",
  449. "LOCALTIME",
  450. "LOCALTIMESTAMP",
  451. "LOCK",
  452. "LOCKED",
  453. "LOG",
  454. "LOGFILE",
  455. "LOGGING",
  456. "LOGICAL_READS_PER_CALL",
  457. "LOGICAL_READS_PER_SESSION",
  458. "LONG",
  459. "LONGBLOB",
  460. "LONGTEXT",
  461. "LOW_PRIORITY",
  462. "MANAGE",
  463. "MASTER",
  464. "MATCH",
  465. "MAX",
  466. "MAXARCHLOGS",
  467. "MAXDATAFILES",
  468. "MAXEXTENTS",
  469. "MAXINSTANCES",
  470. "MAXLOGFILES",
  471. "MAXLOGHISTORY",
  472. "MAXLOGMEMBERS",
  473. "MAXSIZE",
  474. "MAXTRANS",
  475. "MAXVALUE",
  476. "MEDIUMBLOB",
  477. "MEDIUMINT",
  478. "MEDIUMTEXT",
  479. "MEMBER",
  480. "MIDDLEINT",
  481. "MIN",
  482. "MINEXTENTS",
  483. "MINIMUM",
  484. "MINUS",
  485. "MINUTE_MICROSECOND",
  486. "MINUTE_SECOND",
  487. "MINVALUE",
  488. "MLSLABEL",
  489. "MLS_LABEL_FORMAT",
  490. "MOD",
  491. "MODE",
  492. "MODIFY",
  493. "MOUNT",
  494. "MOVE",
  495. "MTS_DISPATCHERS",
  496. "MULTISET",
  497. "NATIONAL",
  498. "NATURAL",
  499. "NCHAR",
  500. "NCHAR_CS",
  501. "NCLOB",
  502. "NEEDED",
  503. "NESTED",
  504. "NETWORK",
  505. "NEW",
  506. "NEXT",
  507. "NOARCHIVELOG",
  508. "NOAUDIT",
  509. "NOCACHE",
  510. "NOCOMPRESS",
  511. "NOCYCLE",
  512. "NOFORCE",
  513. "NOLOGGING",
  514. "NOMAXVALUE",
  515. "NOMINVALUE",
  516. "NONE",
  517. "NOORDER",
  518. "NOOVERRIDE",
  519. "NOPARALLEL",
  520. "NOREVERSE",
  521. "NORMAL",
  522. "NOSORT",
  523. "NOT",
  524. "NOTHING",
  525. "NOWAIT",
  526. "NO_WRITE_TO_BINLOG",
  527. "NULL",
  528. "NUMBER",
  529. "NUMERIC",
  530. "NVARCHAR2",
  531. "OBJECT",
  532. "OBJNO",
  533. "OBJNO_REUSE",
  534. "OF",
  535. "OFF",
  536. "OFFLINE",
  537. "OID",
  538. "OIDINDEX",
  539. "OLD",
  540. "ON",
  541. "ONLINE",
  542. "ONLY",
  543. "OPCODE",
  544. "OPEN",
  545. "OPTIMAL",
  546. "OPTIMIZE",
  547. "OPTIMIZER_GOAL",
  548. "OPTION",
  549. "OPTIONALLY",
  550. "OR",
  551. "ORDER",
  552. "ORGANIZATION",
  553. "OSLABEL",
  554. "OUTER",
  555. "OUTFILE",
  556. "OVERFLOW",
  557. "OWN",
  558. "PACKAGE",
  559. "PARALLEL",
  560. "PARTITION",
  561. "PASSWORD",
  562. "PASSWORD_GRACE_TIME",
  563. "PASSWORD_LIFE_TIME",
  564. "PASSWORD_LOCK_TIME",
  565. "PASSWORD_REUSE_MAX",
  566. "PASSWORD_REUSE_TIME",
  567. "PASSWORD_VERIFY_FUNCTION",
  568. "PCTFREE",
  569. "PCTINCREASE",
  570. "PCTTHRESHOLD",
  571. "PCTUSED",
  572. "PCTVERSION",
  573. "PERCENT",
  574. "PERMANENT",
  575. "PLAN",
  576. "PLSQL_DEBUG",
  577. "POST_TRANSACTION",
  578. "PRECISION",
  579. "PRESERVE",
  580. "PRIMARY",
  581. "PRIOR",
  582. "PRIVATE",
  583. "PRIVATE_SGA",
  584. "PRIVILEGE",
  585. "PRIVILEGES",
  586. "PROCEDURE",
  587. "PROFILE",
  588. "PUBLIC",
  589. "PURGE",
  590. "QUEUE",
  591. "QUOTA",
  592. "RANGE",
  593. "RAW",
  594. "RBA",
  595. "READ",
  596. "READUP",
  597. "REAL",
  598. "REBUILD",
  599. "RECOVER",
  600. "RECOVERABLE",
  601. "RECOVERY",
  602. "REF",
  603. "REFERENCES",
  604. "REFERENCING",
  605. "REFRESH",
  606. "REGEXP",
  607. "RENAME",
  608. "REPLACE",
  609. "REQUIRE",
  610. "RESET",
  611. "RESETLOGS",
  612. "RESIZE",
  613. "RESOURCE",
  614. "RESTRICT",
  615. "RESTRICTED",
  616. "RETURN",
  617. "RETURNING",
  618. "REUSE",
  619. "REVERSE",
  620. "REVOKE",
  621. "RIGHT",
  622. "RLIKE",
  623. "ROLE",
  624. "ROLES",
  625. "ROLLBACK",
  626. "ROW",
  627. "ROWID",
  628. "ROWNUM",
  629. "ROWS",
  630. "RULE",
  631. "SAMPLE",
  632. "SAVEPOINT",
  633. "SB4",
  634. "SCAN_INSTANCES",
  635. "SCHEMA",
  636. "SCN",
  637. "SCOPE",
  638. "SD_ALL",
  639. "SD_INHIBIT",
  640. "SD_SHOW",
  641. "SECOND_MICROSECOND",
  642. "SEGMENT",
  643. "SEG_BLOCK",
  644. "SEG_FILE",
  645. "SELECT",
  646. "SEPARATOR",
  647. "SEQUENCE",
  648. "SERIALIZABLE",
  649. "SESSION",
  650. "SESSIONS_PER_USER",
  651. "SESSION_CACHED_CURSORS",
  652. "SET",
  653. "SHARE",
  654. "SHARED",
  655. "SHARED_POOL",
  656. "SHOW",
  657. "SHRINK",
  658. "SIZE",
  659. "SKIP",
  660. "SKIP_UNUSABLE_INDEXES",
  661. "SMALLINT",
  662. "SNAPSHOT",
  663. "SOME",
  664. "SONAME",
  665. "SORT",
  666. "SPATIAL",
  667. "SPECIFICATION",
  668. "SPLIT",
  669. "SQL_BIG_RESULT",
  670. "SQL_CALC_FOUND_ROWS",
  671. "SQL_SMALL_RESULT",
  672. "SQL_TRACE",
  673. "SSL",
  674. "STANDBY",
  675. "START",
  676. "STARTING",
  677. "STATEMENT_ID",
  678. "STATISTICS",
  679. "STOP",
  680. "STORAGE",
  681. "STORE",
  682. "STRAIGHT_JOIN",
  683. "STRUCTURE",
  684. "SUCCESSFUL",
  685. "SWITCH",
  686. "SYNONYM",
  687. "SYSDATE",
  688. "SYSDBA",
  689. "SYSOPER",
  690. "SYSTEM",
  691. "SYS_OP_ENFORCE_NOT_NULL$",
  692. "SYS_OP_NTCIMG$",
  693. "TABLE",
  694. "TABLES",
  695. "TABLESPACE",
  696. "TABLESPACE_NO",
  697. "TABNO",
  698. "TEMPORARY",
  699. "TERMINATED",
  700. "THAN",
  701. "THE",
  702. "THEN",
  703. "THREAD",
  704. "TIME",
  705. "TIMESTAMP",
  706. "TINYBLOB",
  707. "TINYINT",
  708. "TINYTEXT",
  709. "TO",
  710. "TOPLEVEL",
  711. "TRACE",
  712. "TRACING",
  713. "TRAILING",
  714. "TRANSACTION",
  715. "TRANSITIONAL",
  716. "TRIGGER",
  717. "TRIGGERS",
  718. "TRUE",
  719. "TRUNCATE",
  720. "TX",
  721. "TYPE",
  722. "UB2",
  723. "UBA",
  724. "UID",
  725. "UNARCHIVED",
  726. "UNDO",
  727. "UNION",
  728. "UNIQUE",
  729. "UNLIMITED",
  730. "UNLOCK",
  731. "UNRECOVERABLE",
  732. "UNSIGNED",
  733. "UNTIL",
  734. "UNUSABLE",
  735. "UNUSED",
  736. "UPDATABLE",
  737. "UPDATE",
  738. "USAGE",
  739. "USE",
  740. "USER",
  741. "USING",
  742. "UTC_DATE",
  743. "UTC_TIME",
  744. "UTC_TIMESTAMP",
  745. "VALIDATE",
  746. "VALIDATION",
  747. "VALUE",
  748. "VALUES",
  749. "VARBINARY",
  750. "VARCHAR",
  751. "VARCHAR2",
  752. "VARCHARACTER",
  753. "VARYING",
  754. "VIEW",
  755. "WHEN",
  756. "WHENEVER",
  757. "WHERE",
  758. "WITH",
  759. "WITHOUT",
  760. "WORK",
  761. "WRITE",
  762. "WRITEDOWN",
  763. "WRITEUP",
  764. "XID",
  765. "XOR",
  766. "YEAR",
  767. "YEAR_MONTH",
  768. "ZEROFILL",
  769. "ZONE",
  770. ));
  771. }
  772. if(in_array(strtoupper($name),Rhaco::getVariable("RHACO_DATABASE_RESERVED_NAME",array()))){
  773. Logger::warning(Message::_("{1} reserved word '{2}'",$type,$label));
  774. return false;
  775. }
  776. return true;
  777. }
  778. }
  779. ?>