RdbmsInfoSybase.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 RdbmsInfoSybase.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= "RdbmsInfoSybase", 
  34.     functions= {
  35.       "getRdbmsInfo::"
  36.     }, 
  37.     extends= "RdbmsInfo"
  38.   }
  39.   return moduleInfo
  40. end
  41. -- ----------------------------------------------------------------------------------------
  42. -- @brief Function to get information about Sybase
  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", "Sybase", "{C6D9F3AA-88F1-4460-860B-CF39A8F35F99}", grtV.toLua(rdbmsMgmt._id))
  52.   rdbms.caption= "Sybase Server"
  53.   rdbms.databaseObjectPackage= "db.Sybase"
  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, getDriverSybaseJdbc(rdbms))
  59.   rdbms.defaultDriver= rdbms.drivers[1]
  60.   return grt.success(rdbms)
  61. end
  62. -- ----------------------------------------------------------------------------------------
  63. -- @brief Builds the list of simple datatypes
  64. --
  65. --   Helper function to build the list of simple datatypes
  66. -- 
  67. -- @param rdbmsMgmt the Grt value of the Rdbms Management
  68. -- @param rdbms the Grt value of the Rdbms
  69. -- ----------------------------------------------------------------------------------------
  70. function createSimpleDatatypes(rdbmsMgmt, rdbms)
  71.   local dt
  72.   local owner= grtV.toLua(rdbms._id)
  73.   local group
  74.   -- --------------------------------------------------------------------------------------
  75.   -- numeric group
  76.   do
  77.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "numeric")
  78.   
  79.     -- DECIMAL
  80.     dt= grtV.newObj("db.SimpleDatatype", "DECIMAL", "{2BD15BF8-4454-4B23-9A49-7DE3371FC18C}", owner)
  81.     dt.group= group
  82.     dt.numericPrecision= 28
  83.     dt.numericScale= 28
  84.     grtV.insert(rdbms.simpleDatatypes, dt)
  85.   
  86.     -- NUMERIC
  87.     dt= grtV.newObj("db.SimpleDatatype", "NUMERIC", "{376FBA25-32E8-421E-AB10-A0B13E07E2D1}", owner)
  88.     dt.group= group
  89.     dt.numericPrecision= 28
  90.     dt.numericScale= 28
  91.     grtV.insert(rdbms.simpleDatatypes, dt)
  92.   
  93.     -- FLOAT
  94.     dt= grtV.newObj("db.SimpleDatatype", "FLOAT", "{207E2F97-3239-4E18-8EAE-AD0D45306D0E}", owner)
  95.     dt.group= group
  96.     dt.numericPrecision= 15
  97.     dt.numericScale= 15
  98.     grtV.insert(rdbms.simpleDatatypes, dt)
  99.     
  100.     -- DOUBLE PRECISION
  101.     dt= grtV.newObj("db.SimpleDatatype", "DOUBLE PRECISION", "{7EB20593-A000-49D9-AB64-0869B15A76E9}", owner)
  102.     dt.group= group
  103.     dt.numericPrecision= 15
  104.     dt.numericScale= 15
  105.     grtV.insert(rdbms.simpleDatatypes, dt)
  106.   
  107.     -- REAL
  108.     dt= grtV.newObj("db.SimpleDatatype", "REAL", "{DFDE15C4-2D56-4B0E-92FB-85B8B573FCFE}", owner)
  109.     dt.group= group
  110.     dt.numericPrecision= 7
  111.     dt.numericScale= 7
  112.     grtV.insert(rdbms.simpleDatatypes, dt)
  113.   
  114.     -- TINYINT
  115.     dt= grtV.newObj("db.SimpleDatatype", "TINYINT", "{15DC5698-9288-49BB-9913-84F79F150D29}", owner)
  116.     dt.group= group
  117.     dt.numericPrecision= 3
  118.     grtV.insert(rdbms.simpleDatatypes, dt)
  119.   
  120.     -- SMALLINT
  121.     dt= grtV.newObj("db.SimpleDatatype", "SMALLINT", "{7738F811-6B03-4B38-A47B-3B903207DF0E}", owner)
  122.     dt.group= group
  123.     dt.numericPrecision= 5
  124.     grtV.insert(rdbms.simpleDatatypes, dt)
  125.   
  126.     -- INT
  127.     dt= grtV.newObj("db.SimpleDatatype", "INT", "{858DBBD8-6F0B-4ED3-AC1B-609678C22329}", owner)
  128.     dt.group= group
  129.     dt.numericPrecision= 10
  130.     grtV.insert(rdbms.simpleDatatypes, dt)
  131.   
  132.     -- BIGINT
  133.     dt= grtV.newObj("db.SimpleDatatype", "BIGINT", "{9B48DF5A-7A4B-49D1-8D0F-9FF7E109FA2A}", owner)
  134.     dt.group= group
  135.     dt.numericPrecision= 19
  136.     grtV.insert(rdbms.simpleDatatypes, dt)
  137.   end
  138.   
  139.   -- --------------------------------------------------------------------------------------
  140.   -- string group
  141.   do
  142.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "string")
  143.   
  144.     -- CHAR
  145.     dt= grtV.newObj("db.SimpleDatatype", "CHAR", "{78A362CD-7D20-461C-ADF2-8B8F0AAAB6C9}", owner)
  146.     dt.group= group
  147.     dt.characterMaximumLength= 8000
  148.     grtV.insert(rdbms.simpleDatatypes, dt)
  149.   
  150.     -- VARCHAR
  151.     dt= grtV.newObj("db.SimpleDatatype", "VARCHAR", "{D90B8F91-9738-433C-B0A0-F034FAD99BA4}", owner)
  152.     dt.group= group
  153.     dt.characterMaximumLength= 8000
  154.     grtV.insert(rdbms.simpleDatatypes, dt)
  155.   
  156.     -- NCHAR
  157.     dt= grtV.newObj("db.SimpleDatatype", "NCHAR", "{FD1C8F51-7518-4869-8071-8C1EACBECE7B}", owner)
  158.     dt.group= group
  159.     dt.characterMaximumLength= 4000
  160.     grtV.insert(rdbms.simpleDatatypes, dt)
  161.   
  162.     -- NVARCHAR
  163.     dt= grtV.newObj("db.SimpleDatatype", "NVARCHAR", "{82034ACE-ABB0-4B59-8EEE-19AC83CE91A4}", owner)
  164.     dt.group= group
  165.     dt.characterMaximumLength= 4000
  166.     grtV.insert(rdbms.simpleDatatypes, dt)
  167.     
  168.     -- UNICHAR
  169.     dt= grtV.newObj("db.SimpleDatatype", "UNICHAR", "{CB1E3BA3-E063-4293-8FD8-41D8F6CBB3A8}", owner)
  170.     dt.group= group
  171.     dt.characterMaximumLength= 4000
  172.     grtV.insert(rdbms.simpleDatatypes, dt)
  173.   
  174.     -- UNIVARCHAR
  175.     dt= grtV.newObj("db.SimpleDatatype", "UNIVARCHAR", "{34365D88-7539-4D30-A36C-38CD8409FC17}", owner)
  176.     dt.group= group
  177.     dt.characterMaximumLength= 4000
  178.     grtV.insert(rdbms.simpleDatatypes, dt)
  179.   end
  180.   
  181.   -- --------------------------------------------------------------------------------------
  182.   -- text group
  183.   do
  184.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "text")
  185.   
  186.     -- TEXT
  187.     dt= grtV.newObj("db.SimpleDatatype", "TEXT", "{48258B17-E097-485E-804D-283D3134581F}", owner)
  188.     dt.group= group
  189.     dt.characterMaximumLength= -31
  190.     grtV.insert(rdbms.simpleDatatypes, dt)
  191.   
  192.     -- NTEXT
  193.     dt= grtV.newObj("db.SimpleDatatype", "NTEXT", "{C1E49C98-7D35-41D5-9E49-8394D5D878E0}", owner)
  194.     dt.group= group
  195.     dt.characterMaximumLength= -30
  196.     grtV.insert(rdbms.simpleDatatypes, dt)
  197.   end
  198.   
  199.   -- --------------------------------------------------------------------------------------
  200.   -- blob group
  201.   do
  202.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "blob")
  203.   
  204.     -- IMAGE
  205.     dt= grtV.newObj("db.SimpleDatatype", "IMAGE", "{47DBC71D-4442-46EE-8ED0-A963CD562924}", owner)
  206.     dt.group= group
  207.     dt.characterOctetLength= -31
  208.     grtV.insert(rdbms.simpleDatatypes, dt)
  209.   
  210.     -- BINARY
  211.     dt= grtV.newObj("db.SimpleDatatype", "BINARY", "{968B1592-C662-4AFA-AF5F-82335D3B277B}", owner)
  212.     dt.group= group
  213.     dt.characterOctetLength= 8000
  214.     grtV.insert(rdbms.simpleDatatypes, dt)
  215.   
  216.     -- VARBINARY
  217.     dt= grtV.newObj("db.SimpleDatatype", "VARBINARY", "{FE2DAE89-8D04-4B6F-9880-B1505F40906C}", owner)
  218.     dt.group= group
  219.     dt.characterOctetLength= 8000
  220.     grtV.insert(rdbms.simpleDatatypes, dt)
  221.   end
  222.   
  223.   -- --------------------------------------------------------------------------------------
  224.   -- datetime group
  225.   do
  226.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "datetime")
  227.   
  228.     -- DATETIME
  229.     dt= grtV.newObj("db.SimpleDatatype", "DATETIME", "{C2EBE339-AEC9-4B0F-B9EC-00AF7256B532}", owner)
  230.     dt.group= group
  231.     dt.dateTimePrecision= 8
  232.     grtV.insert(rdbms.simpleDatatypes, dt)
  233.   
  234.     -- SMALLDATETIME
  235.     dt= grtV.newObj("db.SimpleDatatype", "SMALLDATETIME", "{33F4BF4E-A939-406D-AB61-683AA93E06C0}", owner)
  236.     dt.group= group
  237.     dt.dateTimePrecision= 6
  238.     grtV.insert(rdbms.simpleDatatypes, dt)
  239.   
  240.     -- TIMESTAMP
  241.     dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP", "{17511841-0224-4891-887E-66568F91E6E1}", owner)
  242.     dt.group= group
  243.     dt.dateTimePrecision= 8
  244.     grtV.insert(rdbms.simpleDatatypes, dt)
  245.     
  246.     -- DATE
  247.     dt= grtV.newObj("db.SimpleDatatype", "DATE", "{38B2A199-2326-43B1-AC53-00A4489D2DEB}", owner)
  248.     dt.group= group
  249.     dt.dateTimePrecision= 4
  250.     grtV.insert(rdbms.simpleDatatypes, dt)
  251.     
  252.     -- TIME
  253.     dt= grtV.newObj("db.SimpleDatatype", "TIME", "{861B0C5C-BB3C-43C5-9C4B-8A41E0101B04}", owner)
  254.     dt.group= group
  255.     dt.dateTimePrecision= 4
  256.     grtV.insert(rdbms.simpleDatatypes, dt)
  257.   end
  258.   
  259.   -- --------------------------------------------------------------------------------------
  260.   -- various group
  261.   do
  262.     group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "various")
  263.     
  264.     -- BIT
  265.     dt= grtV.newObj("db.SimpleDatatype", "BIT", "{E9120415-E057-4AEC-8953-B0740CE70CAE}", owner)
  266.     dt.group= group
  267.     dt.numericPrecision= 1
  268.     grtV.insert(rdbms.simpleDatatypes, dt)
  269.     
  270.     -- MONEY
  271.     dt= grtV.newObj("db.SimpleDatatype", "MONEY", "{F7A37FF5-F7DE-4698-A0EF-5D5361AAB8C2}", owner)
  272.     dt.group= group
  273.     dt.numericPrecision= 19
  274.     dt.numericScale= 4
  275.     grtV.insert(rdbms.simpleDatatypes, dt)
  276.   
  277.     -- SMALLMONEY
  278.     dt= grtV.newObj("db.SimpleDatatype", "SMALLMONEY", "{F04113AB-FDD7-4B9A-8998-F5C54518455C}", owner)
  279.     dt.group= group
  280.     dt.numericPrecision= 10
  281.     dt.numericScale= 4
  282.     grtV.insert(rdbms.simpleDatatypes, dt)
  283.   
  284.     -- UNIQUEIDENTIFIER
  285.     dt= grtV.newObj("db.SimpleDatatype", "UNIQUEIDENTIFIER", "{88E3F35F-1131-4618-B55E-FACE13E5E393}", owner)
  286.     dt.group= group
  287.     dt.characterOctetLength= 16
  288.     grtV.insert(rdbms.simpleDatatypes, dt)
  289.   end
  290. end
  291. -- ----------------------------------------------------------------------------------------
  292. -- @brief Function to get the MS SQL driver
  293. --
  294. --   Helper function to return infos about the Jdbc driver
  295. -- 
  296. -- @param owner the Grt value of the Rdbms
  297. --
  298. -- @return a new created GRT value of struct "db.mgmt.Driver" containing the driver infos
  299. -- ----------------------------------------------------------------------------------------
  300. function getDriverSybaseJdbc(owner)
  301.   -- create driver object
  302.   local driver= grtV.newObj("db.mgmt.JdbcDriver", "jTDSsybase", 
  303.     "{7A1DAC30-41C8-4E71-B489-CECCDA8E26C6}", grtV.toLua(owner._id))
  304.   -- set driver values
  305.   driver.caption= "Sybase JDBC Driver"
  306.   driver.description= "JDBC driver to connect to Sybase."
  307.   driver.filesTarget= "./java/lib/"
  308.   grtV.insert(driver.files, "jtds-1.2.jar")
  309.   driver.downloadUrl= "http://sourceforge.net/project/showfiles.php?group_id=33291"
  310.   -- Jdbc specific settings
  311.   driver.className= "net.sourceforge.jtds.jdbc.Driver"
  312.   driver.connectionStringTemplate= "jdbc:jtds:sybase://%host%:%port%/%database%;user=%username%;password=%password%" ..
  313.     ";charset=utf-8"
  314.   -- add driver parameters
  315.   __RdbmsInfo_lua.addDriverParamDefaults(driver, driver.parameters, 1, "5000")
  316.   local param= __RdbmsInfo_lua.getDriverParameter(owner, "database", "Database:", 
  317.     "Name of the database.", "string", -1, 218, "", 0, 1)
  318.   param.lookupValueModule= "ReverseEngineeringSybase"
  319.   param.lookupValueMethod= "getCatalogs"
  320.   grtV.insert(driver.parameters, param)
  321.   -- advanced parameters
  322.   grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "jdbcConnStr", "Connection String:", 
  323.     "Jdbc Connection String", "string", -1, 218, "", 1, 0))
  324.   
  325.   driver.defaultModules= 
  326.     {
  327.       ReverseEngineeringModule= "ReverseEngineeringSybase",
  328.       MigrationModule= "MigrationSybase",
  329.       TransformationModule= ""
  330.     }
  331.   if grt.moduleExists("BaseJava") then
  332.     driver.isAccessable= true
  333.     driver.isInstalled= grt.getRes(BaseJava:javaClassExists(driver.className))
  334.   else
  335.     driver.isAccessable= false
  336.     driver.isInstalled= false
  337.   end
  338.   return driver
  339. end