RdbmsInfoOracle.lua
上传用户:cccombo
上传日期:2021-01-31
资源大小:16445k
文件大小:13k
源码类别:

MySQL数据库

开发平台:

SQL

  1. -- ----------------------------------------------------------------------------------------
  2. -- Copyright (C) 2004 MySQL AB
  3. --
  4. -- This program is free software; you can redistribute it and/or modify
  5. -- it under the terms of the GNU General Public License as published by
  6. -- the Free Software Foundation; either version 2 of the License, or
  7. -- (at your option) any later version.
  8. --
  9. -- This program is distributed in the hope that it will be useful,
  10. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. -- GNU General Public License for more details.
  13. --
  14. -- You should have received a copy of the GNU General Public License
  15. -- along with this program; if not, write to the Free Software
  16. -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. -- ----------------------------------------------------------------------------------------
  18. -- ----------------------------------------------------------------------------------------
  19. -- @file RdbmsInfoOracle.lua
  20. -- @brief Module that contains functionality for database management
  21. -- ----------------------------------------------------------------------------------------
  22. -- ----------------------------------------------------------------------------------------
  23. -- @brief Returns the information about this module
  24. --
  25. --   Every Grt module has to implement this function to return information about the 
  26. -- module. Note that new functions that should be exposed to the Grt have to be listed 
  27. -- here. Function that are not exposed should start with a underscore.
  28. --
  29. -- @return A dict that contains the name and the function names of the module
  30. -- ----------------------------------------------------------------------------------------
  31. function getModuleInfo()
  32.   local moduleInfo= {
  33.     name= "RdbmsInfoOracle", 
  34.     functions= {
  35.       "getRdbmsInfo::"
  36.     }, 
  37.     extends= "RdbmsInfo"
  38.   }
  39.   return moduleInfo
  40. end
  41. -- ----------------------------------------------------------------------------------------
  42. -- @brief Function to get information about Oracle
  43. --
  44. --   Returns a db.mgmt.Rdbms struct with infos about the rdbms
  45. -- 
  46. -- @return a new created db.mgmt.Rdbms GRT value struct 
  47. -- ----------------------------------------------------------------------------------------
  48. function getRdbmsInfo(args)
  49.   local rdbmsMgmt= args[1]
  50.   -- create Rdbms object
  51.   local rdbms= grtV.newObj("db.mgmt.Rdbms", "Oracle", "{B9E7D193-5761-461A-84DF-3D31A78D8546}", grtV.toLua(rdbmsMgmt._id))
  52.   rdbms.caption= "Oracle Database Server"
  53.   rdbms.databaseObjectPackage= "db.oracle"
  54.   
  55.   -- create simple datatypes for Rdbms
  56.   createSimpleDatatypes(rdbmsMgmt, rdbms)
  57.   -- add driver to the Rdbms' list of drivers
  58.   grtV.insert(rdbms.drivers, getDriverOracleJdbcSid(rdbms))
  59.   grtV.insert(rdbms.drivers, getDriverOracleJdbcService(rdbms))
  60.   rdbms.defaultDriver= rdbms.drivers[1]
  61.   return grt.success(rdbms)
  62. end
  63. -- ----------------------------------------------------------------------------------------
  64. -- @brief Builds the list of simple datatypes
  65. --
  66. --   Helper function to build the list of simple datatypes
  67. -- 
  68. -- @param rdbmsMgmt the Grt value of the Rdbms Management
  69. -- @param rdbms the Grt value of the Rdbms
  70. -- ----------------------------------------------------------------------------------------
  71. function createSimpleDatatypes(rdbmsMgmt, rdbms)
  72.   local dt
  73.   local owner= grtV.toLua(rdbms._id)
  74.   local group
  75.   
  76.   -- --------------------------------------------------------------------------------------
  77.   -- numeric group
  78.   do
  79.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "numeric")
  80.     
  81.     -- NUMERIC
  82.     dt= grtV.newObj("db.SimpleDatatype", "NUMBER", "{0DDAFF86-5345-4666-87CC-ECC3CB7EFFD7}", owner)
  83.     dt.group= group
  84.     dt.numericPrecision= 38
  85.     dt.numericScale= 127
  86.     grtV.insert(rdbms.simpleDatatypes, dt)
  87.     
  88.     -- FLOAT
  89.     dt= grtV.newObj("db.SimpleDatatype", "FLOAT", "{0DDAFF86-5345-4666-87CC-ECC3CB7EFFD8}", owner)
  90.     dt.group= group
  91.     dt.numericPrecision= 38
  92.     dt.numericScale= 127
  93.     grtV.insert(rdbms.simpleDatatypes, dt)
  94.     
  95.     -- DECIMAL
  96.     dt= grtV.newObj("db.SimpleDatatype", "DECIMAL", "{0DDAFF86-5345-4666-87CC-ECC3CB7EFFD9}", owner)
  97.     dt.group= group
  98.     dt.numericPrecision= 38
  99.     dt.numericScale= 127
  100.     grtV.insert(rdbms.simpleDatatypes, dt)
  101.   end
  102.   
  103.   -- --------------------------------------------------------------------------------------
  104.   -- string group
  105.   do
  106.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "string")
  107.     
  108.     -- VARCHAR2
  109.     dt= grtV.newObj("db.SimpleDatatype", "VARCHAR2", "{473A5724-6E51-4244-82E4-799429743DAD}", owner)
  110.     dt.group= group
  111.     dt.characterMaximumLength= 4000
  112.     grtV.insert(dt.synonyms, "VARCHAR")
  113.     grtV.insert(rdbms.simpleDatatypes, dt)
  114.     
  115.     -- NVARCHAR2
  116.     dt= grtV.newObj("db.SimpleDatatype", "NVARCHAR2", "{3ED03390-6061-40F0-954A-9694EBB52565}", owner)
  117.     dt.group= group
  118.     dt.characterMaximumLength= 4000
  119.     grtV.insert(rdbms.simpleDatatypes, dt)
  120.     
  121.     -- CHAR
  122.     dt= grtV.newObj("db.SimpleDatatype", "CHAR", "{A67FAEF0-DAEE-48B3-81E9-AA74C2E22373}", owner)
  123.     dt.group= group
  124.     dt.characterMaximumLength= 2000
  125.     grtV.insert(rdbms.simpleDatatypes, dt)
  126.   
  127.     -- NCHAR
  128.     dt= grtV.newObj("db.SimpleDatatype", "NCHAR", "{3C93E288-11AC-457A-B9C4-F00E6280F8F5}", owner)
  129.     dt.group= group
  130.     dt.characterMaximumLength= 2000
  131.     grtV.insert(rdbms.simpleDatatypes, dt)
  132.   end
  133.   
  134.   -- --------------------------------------------------------------------------------------
  135.   -- text group
  136.   do
  137.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "text")
  138.     
  139.     -- LONG
  140.     dt= grtV.newObj("db.SimpleDatatype", "LONG", "{216BAD31-8522-4903-B0D4-1CD7EABE1F53}", owner)
  141.     dt.group= group
  142.     dt.characterMaximumLength= -31
  143.     grtV.insert(rdbms.simpleDatatypes, dt)
  144.     
  145.     -- CLOB
  146.     dt= grtV.newObj("db.SimpleDatatype", "CLOB", "{FA34E017-40AF-44C5-B0E1-F1472B03905D}", owner)
  147.     dt.group= group
  148.     dt.characterMaximumLength= -32
  149.     grtV.insert(rdbms.simpleDatatypes, dt)
  150.     
  151.     -- NCLOB
  152.     dt= grtV.newObj("db.SimpleDatatype", "NCLOB", "{EDC7AFE6-1DCC-47C2-9B91-5FB5CF0C7C55}", owner)
  153.     dt.group= group
  154.     dt.characterMaximumLength= -32
  155.     grtV.insert(rdbms.simpleDatatypes, dt)
  156.   end
  157.   
  158.   -- --------------------------------------------------------------------------------------
  159.   -- blob group
  160.   do
  161.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "blob")
  162.     
  163.     -- RAW
  164.     dt= grtV.newObj("db.SimpleDatatype", "RAW", "{8359B274-3054-4872-886E-41E34E6B5D9C}", owner)
  165.     dt.group= group
  166.     dt.characterMaximumLength= -31
  167.     grtV.insert(rdbms.simpleDatatypes, dt)
  168.     
  169.     -- LONG RAW
  170.     dt= grtV.newObj("db.SimpleDatatype", "LONG RAW", "{E4A07B3B-A7A1-4862-8C5C-855C63F28CEA}", owner)
  171.     dt.group= group
  172.     dt.characterMaximumLength= -32
  173.     grtV.insert(rdbms.simpleDatatypes, dt)
  174.     
  175.     -- BLOB
  176.     dt= grtV.newObj("db.SimpleDatatype", "BLOB", "{F9BCD294-15B7-4907-8ADA-193BFD503F0C}", owner)
  177.     dt.group= group
  178.     dt.characterMaximumLength= -32
  179.     grtV.insert(rdbms.simpleDatatypes, dt)
  180.   end
  181.   
  182.   -- --------------------------------------------------------------------------------------
  183.   -- datetime group
  184.   do
  185.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "datetime")
  186.     
  187.     -- DATE
  188.     dt= grtV.newObj("db.SimpleDatatype", "DATE", "{5C88EF8B-6C6D-4482-8110-29D4297FAEE7}", owner)
  189.     dt.group= group
  190.     dt.dateTimePrecision= 9
  191.     grtV.insert(rdbms.simpleDatatypes, dt)
  192.     
  193.     -- TIMESTAMP
  194.     dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP", "{FC542742-9DCF-4D76-AED8-EAE9D14720F3}", owner)
  195.     dt.group= group
  196.     dt.dateTimePrecision= 9
  197.     grtV.insert(rdbms.simpleDatatypes, dt)
  198.     
  199.     -- TIMESTAMP WITH TIME ZONE
  200.     dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP WITH TIME ZONE", "{29BF9F26-AE7F-444F-9741-9A47C3CB29F9}", owner)
  201.     dt.group= group
  202.     dt.dateTimePrecision= 9
  203.     grtV.insert(rdbms.simpleDatatypes, dt)
  204.     
  205.     -- TIMESTAMP WITH LOCAL TIME ZONE
  206.     dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP WITH LOCAL TIME ZONE", "{2864AB40-D507-4F42-9D8C-AEC54AB6258E}", owner)
  207.     dt.group= group
  208.     dt.dateTimePrecision= 9
  209.     grtV.insert(rdbms.simpleDatatypes, dt)
  210.     
  211.     -- INTERVAL YEAR TO MONTH
  212.     dt= grtV.newObj("db.SimpleDatatype", "INTERVAL YEAR TO MONTH", "{1F1BEA1B-A354-40E1-B2BE-54A60AD73CB9}", owner)
  213.     dt.group= group
  214.     dt.dateTimePrecision= 9
  215.     grtV.insert(rdbms.simpleDatatypes, dt)
  216.     -- INTERVAL DAY TO SECOND
  217.     dt= grtV.newObj("db.SimpleDatatype", "INTERVAL DAY TO SECOND", "{EA59F083-A72C-4AB7-A599-8DBB06C52804}", owner)
  218.     dt.group= group
  219.     dt.dateTimePrecision= 9
  220.     grtV.insert(rdbms.simpleDatatypes, dt)    
  221.   end
  222.   
  223.   -- --------------------------------------------------------------------------------------
  224.   -- various group
  225.   do
  226.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "various")
  227.     
  228.     -- BFILE
  229.     dt= grtV.newObj("db.SimpleDatatype", "BFILE", "{628DA687-3D07-4142-8FB3-8682DEF51272}", owner)
  230.     dt.group= group
  231.     grtV.insert(rdbms.simpleDatatypes, dt)
  232.   end
  233. end
  234. -- ----------------------------------------------------------------------------------------
  235. -- @brief Function to get the Oracle driver using Sid
  236. --
  237. --   Helper function to return infos about the Jdbc driver
  238. -- 
  239. -- @param owner the Grt value of the Rdbms
  240. --
  241. -- @return a new created GRT value of struct "db.mgmt.Driver" containing the driver infos
  242. -- ----------------------------------------------------------------------------------------
  243. function getDriverOracleJdbcSid(owner)
  244.   -- create driver object
  245.   local driver= grtV.newObj("db.mgmt.JdbcDriver", "OracleThinSid", 
  246.     "{C72E3867-3115-41BE-9DCF-102DDB62093F}", grtV.toLua(owner._id))
  247.   -- set driver values
  248.   driver.caption= "Oracle Thin JDBC Driver using SID"
  249.   driver.description= "Oracle Thin JDBC driver to connect to Oracle 9i and Oracle 10g servers."
  250.   driver.filesTarget= "./java/lib/"
  251.   grtV.insert(driver.files, "ojdbc14.jar")
  252.   driver.downloadUrl= "http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101020.html"
  253.   -- Jdbc specific settings
  254.   driver.className= "oracle.jdbc.OracleDriver"
  255.   driver.connectionStringTemplate= "jdbc:oracle:thin:%username%/%password%@%host%:%port%:%sid%"
  256.   -- add driver parameters
  257.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "sid", "SID:", 
  258.     "Oracle system identifier", "string", 1, 218, "", 0, 1))
  259.   __RdbmsInfo_lua.addDriverParamDefaults(driver, driver.parameters, 2, "1521")
  260.   -- advanced parameters
  261.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "jdbcConnStr", "Connection String:", 
  262.     "Jdbc Connection String", "string", -1, 218, "", 1, 0))
  263.   
  264.   driver.defaultModules= 
  265.     {
  266.       ReverseEngineeringModule= "ReverseEngineeringOracle",
  267.       MigrationModule= "MigrationOracle",
  268.       TransformationModule= "",
  269.       QueryModule= "QueryOracle"
  270.     }
  271.   if grt.moduleExists("BaseJava") then
  272.     driver.isInstalled= grt.getRes(BaseJava:javaClassExists(driver.className))
  273.   else
  274.     driver.isInstalled= false
  275.   end
  276.   return driver
  277. end
  278. -- ----------------------------------------------------------------------------------------
  279. -- @brief Function to get the Oracle driver using Service
  280. --
  281. --   Helper function to return infos about the Jdbc driver
  282. -- 
  283. -- @param owner the Grt value of the Rdbms
  284. --
  285. -- @return a new created GRT value of struct "db.mgmt.Driver" containing the driver infos
  286. -- ----------------------------------------------------------------------------------------
  287. function getDriverOracleJdbcService(owner)
  288.   -- create driver object
  289.   local driver= grtV.newObj("db.mgmt.JdbcDriver", "OracleThinService", 
  290.     "{212808F5-EE3A-44F1-A437-40CA6A9BD63A}", grtV.toLua(owner._id))
  291.   -- set driver values
  292.   driver.caption= "Oracle Thin JDBC Driver using Service"
  293.   driver.description= "Oracle Thin JDBC driver to connect to Oracle 9i and Oracle 10g servers."
  294.   driver.filesTarget= "./java/lib/"
  295.   grtV.insert(driver.files, "ojdbc14.jar")
  296.   driver.downloadUrl= "http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc101020.html"
  297.   -- Jdbc specific settings
  298.   driver.className= "oracle.jdbc.OracleDriver"
  299.   driver.connectionStringTemplate= "jdbc:oracle:thin:%username%/%password%@//%host%:%port%/%service%"
  300.   -- add driver parameters
  301.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "service", "Service:", 
  302.     "Oracle service name", "string", 1, 218, "", 0, 1))
  303.   __RdbmsInfo_lua.addDriverParamDefaults(driver, driver.parameters, 2, "1521")
  304.   -- advanced parameters
  305.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "jdbcConnStr", "Connection String:", 
  306.     "Jdbc Connection String", "string", -1, 218, "", 1, 0))
  307.   
  308.   driver.defaultModules= 
  309.     {
  310.       ReverseEngineeringModule= "ReverseEngineeringOracle",
  311.       MigrationModule= "MigrationOracle",
  312.       TransformationModule= ""
  313.     }
  314.   if grt.moduleExists("BaseJava") then
  315.     driver.isAccessable= true
  316.     driver.isInstalled= grt.getRes(BaseJava:javaClassExists(driver.className))
  317.   else
  318.     driver.isAccessable= false
  319.     driver.isInstalled= false
  320.   end
  321.   return driver
  322. end