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

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 RdbmsInfoMaxdb.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= "RdbmsInfoMaxdb", 
  34.     functions= {
  35.       "getRdbmsInfo::"
  36.     }, 
  37.     extends= "RdbmsInfo"
  38.   }
  39.   return moduleInfo
  40. end
  41. -- ----------------------------------------------------------------------------------------
  42. -- @brief Function to get information about MaxDB
  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", "MaxDB", "{672A46A8-3CE4-419B-ABFF-AE5B61205C3D}", grtV.toLua(rdbmsMgmt._id))
  52.   rdbms.caption= "MaxDB Database Server"
  53.   rdbms.databaseObjectPackage= "db.maxdb"
  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, getDriverMaxdbJdbcSid(rdbms))
  59.   
  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.     -- SMALLINT
  82.     dt= grtV.newObj("db.SimpleDatatype", "SMALLINT", "{F225951E-D381-43B5-BF9C-9218EAC65E1A}", owner)
  83.     dt.group= group
  84.     dt.numericPrecision= 5    
  85.     grtV.insert(rdbms.simpleDatatypes, dt)
  86.     
  87.     -- INT[EGER]
  88.     dt= grtV.newObj("db.SimpleDatatype", "INTEGER", "{25E3CD6F-124E-49E9-A5AE-E3F44614D05C}", owner)
  89.     dt.group= group
  90.     dt.numericPrecision= 10
  91.     grtV.insert(dt.synonyms, "INT")
  92.     grtV.insert(rdbms.simpleDatatypes, dt)
  93.     
  94.     -- FLOAT
  95.     dt= grtV.newObj("db.SimpleDatatype", "FLOAT", "{996F49DC-C4BC-4C97-B1A1-68E43C384919}", owner)
  96.     dt.group= group    
  97.     grtV.insert(rdbms.simpleDatatypes, dt)
  98.     
  99.     -- FIXED
  100.     dt= grtV.newObj("db.SimpleDatatype", "FIXED", "{B7CFB3A7-1634-4930-B64C-EC5B2FFF5958}", owner)
  101.     dt.group= group
  102.     dt.numericPrecision= 38
  103.     dt.numericScale= 37
  104.     grtV.insert(rdbms.simpleDatatypes, dt)   
  105.     
  106.   end
  107.   
  108.   -- --------------------------------------------------------------------------------------
  109.   -- string group
  110.   do
  111.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "string")
  112.     
  113.     -- VARCHAR
  114.     dt= grtV.newObj("db.SimpleDatatype", "VARCHAR", "{521413DC-D60D-4EDE-94D3-7915374E3265}", owner)
  115.     dt.group= group
  116.     dt.characterMaximumLength= 8000
  117.     grtV.insert(dt.flags, "ASCII")
  118.     grtV.insert(dt.flags, "BYTE")
  119.     grtV.insert(dt.flags, "UNICODE")    
  120.     grtV.insert(rdbms.simpleDatatypes, dt)
  121.     
  122.     -- CHAR[ACTER]
  123.     dt= grtV.newObj("db.SimpleDatatype", "CHAR", "{F980C4A0-983B-41D4-8D2F-1C3122F42203}", owner)
  124.     dt.group= group
  125.     dt.characterMaximumLength= 8000
  126.     grtV.insert(dt.synonyms, "CHARACTER")
  127.     grtV.insert(dt.flags, "ASCII")
  128.     grtV.insert(dt.flags, "BYTE")
  129.     grtV.insert(dt.flags, "UNICODE")    
  130.     grtV.insert(rdbms.simpleDatatypes, dt)
  131.     
  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", "{0207CD2C-0789-4241-90DB-7C54B3B1B8F3}", owner)
  141.   --  dt.group= group
  142.   --  dt.characterMaximumLength= -32
  143.   --  grtV.insert(dt.flags, "ASCII")    
  144.   --  grtV.insert(dt.flags, "UNICODE")        
  145.   --  grtV.insert(rdbms.simpleDatatypes, dt)
  146.   --      
  147.   -- end
  148.   
  149.   -- --------------------------------------------------------------------------------------
  150.   -- blob group
  151.   do
  152.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "blob")
  153.     
  154.     -- LONG
  155.     dt= grtV.newObj("db.SimpleDatatype", "LONG", "{5161C414-9EBE-4FC8-878E-1C48066D665A}", owner)
  156.     dt.group= group
  157.     dt.characterMaximumLength= -32
  158.     grtV.insert(dt.flags, "ASCII")
  159.     grtV.insert(dt.flags, "BYTE")
  160.     grtV.insert(dt.flags, "UNICODE")        
  161.     grtV.insert(rdbms.simpleDatatypes, dt)
  162.     
  163.   end
  164.   
  165.   -- --------------------------------------------------------------------------------------
  166.   -- datetime group
  167.   do
  168.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "datetime")
  169.     
  170.     -- DATE
  171.     dt= grtV.newObj("db.SimpleDatatype", "DATE", "{560898D6-776B-477F-901E-201DC5875812}", owner)
  172.     dt.group= group
  173.     dt.dateTimePrecision= 3
  174.     grtV.insert(dt.flags, "EUR")
  175.     grtV.insert(dt.flags, "INTERNAL")
  176.     grtV.insert(dt.flags, "ISO")  
  177.     grtV.insert(dt.flags, "JIS")
  178.     grtV.insert(dt.flags, "USA")
  179.     grtV.insert(rdbms.simpleDatatypes, dt)
  180.     
  181.     -- TIME
  182.     dt= grtV.newObj("db.SimpleDatatype", "TIME", "{CED28F00-9B19-47A6-9B2E-012C3F4C2F78}", owner)
  183.     dt.group= group
  184.     dt.dateTimePrecision= 3
  185.     grtV.insert(dt.flags, "EUR")
  186.     grtV.insert(dt.flags, "INTERNAL")
  187.     grtV.insert(dt.flags, "ISO")  
  188.     grtV.insert(dt.flags, "JIS")
  189.     grtV.insert(dt.flags, "USA")
  190.     grtV.insert(rdbms.simpleDatatypes, dt)
  191.         
  192.     -- TIMESTAMP
  193.     dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP", "{E4CDFE32-E9D0-4D7D-98A3-EAEC9E04DAF0}", owner)
  194.     dt.group= group
  195.     dt.dateTimePrecision= 9
  196.     grtV.insert(dt.flags, "EUR")
  197.     grtV.insert(dt.flags, "INTERNAL")
  198.     grtV.insert(dt.flags, "ISO")  
  199.     grtV.insert(dt.flags, "JIS")
  200.     grtV.insert(dt.flags, "USA")
  201.     grtV.insert(rdbms.simpleDatatypes, dt)
  202.   end
  203.   
  204.   -- --------------------------------------------------------------------------------------
  205.   
  206. end
  207. -- ----------------------------------------------------------------------------------------
  208. -- @brief Function to get the MaxDB driver using Sid
  209. --
  210. --   Helper function to return infos about the Jdbc driver
  211. -- 
  212. -- @param owner the Grt value of the Rdbms
  213. --
  214. -- @return a new created GRT value of struct "db.mgmt.Driver" containing the driver infos
  215. -- ----------------------------------------------------------------------------------------
  216. function getDriverMaxdbJdbcSid(owner)
  217.   -- create driver object
  218.   local driver= grtV.newObj("db.mgmt.JdbcDriver", "MaxDB JDBC", 
  219.     "{9FAE1CD7-8B0E-47E5-81E9-6A311AA89896}", grtV.toLua(owner._id))
  220.   -- set driver values
  221.   driver.caption= "MaxDB JDBC Driver"
  222.   driver.description= "MaxDB JDBC Driver to connect to MaxDB 7.5 and newer."
  223.   driver.filesTarget= "./java/lib/"
  224.   grtV.insert(driver.files, "sapdbc-7_6_00_12_4339.jar")
  225.   driver.downloadUrl= "http://www.mysql.com/products/maxdb/"
  226.   -- Jdbc specific settings
  227.   driver.className= "com.sap.dbtech.jdbc.DriverSapDB"
  228.   driver.connectionStringTemplate= "jdbc:sapdb://%host%:%port%/%instance%?user=%username%&password=%password%&sqlmode=%sqlmode%&cachelimit=%cachelimit%&timeout=%timeout%&isolation=%isolation%&autocommit=%autocommit%&reconnect=%reconnect%&cache=%cache%"
  229.   -- add driver parameters
  230.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "instance", "Instance:", 
  231.     "MaxDB Instance", "string", 1, 218, "", 0, 1))
  232.   __RdbmsInfo_lua.addDriverParamDefaults(driver, driver.parameters, 2, "7210")
  233.   -- advanced parameters
  234.   
  235. -- TODO: check which of these are actually needed
  236.   
  237.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "sqlmode", "SQL mode", 
  238.     "SQL mode. Possible values are ORACLE | INTERNAL.", "string", -1, 218, "INTERNAL", 1, 0))
  239.     
  240.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "cachelimit", "Cache limit", 
  241.     "Cache limit of the connection.", "int", -1, 218, "32", 1, 0))
  242.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "timeout", "Command timeout", 
  243.     "Command timeout of the connection in seconds.", "int", -1, 218, "0", 1, 0))
  244.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "isolation", "Isolation level", 
  245.     "Isolation level of the connection. One of: TRANSACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE.", "string", -1, 218, "TRANSACTION_SERIALIZABLE", 1, 0))
  246.     
  247.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "autocommit", "Autocommit mode", 
  248.     "Possible values are: on, off. on: A COMMIT is performed after every command. off: Transactions must be controlled with the methods commit() and rollback().", "string", -1, 218, "on", 1, 0))
  249.     
  250.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "reconnect", "Reconnect mode", 
  251.     "Possible values are: on, off. on: The system automatically reconnects to the database instance after a command timeout. off: There is no automatic new connection.,", "string", -1, 218, "on", 1, 0))
  252.     
  253. --  grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "trace", "Trace file", 
  254. --    "Name and location of a debug trace file", "string", -1, 218, "", 1, 0))
  255.     
  256. --  grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "tracesize", "Trace size limit", 
  257. --    "Maximum number of lines in the file for the debug output. If this number is exceeded, the content of the file is overwritten cyclically", "int", -1, 218, "", 1, 0))
  258.     
  259.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "cache", "Cache size", 
  260.     "Enables caching of some prepared statement informations. Possible value: all or a combinations of s,i,u and d.", "string", -1, 218, "all", 1, 0))
  261.     
  262.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "cachelimit", "Cache limit", 
  263.     "Cache limit of the connection", "int", -1, 218, "32", 1, 0))
  264.     
  265.  -- TODO: unicode flag missing    
  266.     
  267.   driver.defaultModules= 
  268.     {
  269.       ReverseEngineeringModule= "ReverseEngineeringMaxdb",
  270.       MigrationModule= "MigrationMaxdb",
  271.       TransformationModule= ""
  272.     }
  273.   if grt.moduleExists("BaseJava") then
  274.     driver.isInstalled= grt.getRes(BaseJava:javaClassExists(driver.className))
  275.   else
  276.     driver.isInstalled= false
  277.   end
  278.   return driver
  279. end