-- ---------------------------------------------------------------------------------------- -- Copyright (C) 2004 MySQL AB -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- ---------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------- -- @file RdbmsInfoFirebird.lua -- @brief Module that contains functionality for database management -- ---------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------- -- @brief Returns the information about this module -- -- Every Grt module has to implement this function to return information about the -- module. Note that new functions that should be exposed to the Grt have to be listed -- here. Function that are not exposed should start with a underscore. -- -- @return A dict that contains the name and the function names of the module -- ---------------------------------------------------------------------------------------- function getModuleInfo() local moduleInfo= { name= "RdbmsInfoFirebird", functions= { "getRdbmsInfo::" }, extends= "RdbmsInfo" } return moduleInfo end -- ---------------------------------------------------------------------------------------- -- @brief Function to get information about Firebird -- -- Returns a db.mgmt.Rdbms struct with infos about the rdbms -- -- @return a new created db.mgmt.Rdbms GRT value struct -- ---------------------------------------------------------------------------------------- function getRdbmsInfo(args) local rdbmsMgmt= args[1] -- create Rdbms object local rdbms= grtV.newObj("db.mgmt.Rdbms", "Firebird", "{76FD4EDF-45C7-4A4C-9014-F7FF485BA904}", grtV.toLua(rdbmsMgmt._id)) rdbms.caption= "Firebird JDBC" rdbms.databaseObjectPackage= "db.firebird" -- create simple datatypes for Rdbms createSimpleDatatypes(rdbmsMgmt, rdbms) -- add driver to the Rdbms' list of drivers grtV.insert(rdbms.drivers, getDriverFirebirdJdbc(rdbms)) rdbms.defaultDriver= rdbms.drivers[1] return grt.success(rdbms) end -- ---------------------------------------------------------------------------------------- -- @brief Builds the list of simple datatypes -- -- Helper function to build the list of simple datatypes -- -- @param datatypeList the list that will hold the datatypes -- @param owner the owner, if any -- ---------------------------------------------------------------------------------------- function createSimpleDatatypes(rdbmsMgmt, rdbms) local dt local owner= grtV.toLua(rdbms._id) local group -- -------------------------------------------------------------------------------------- -- numeric group do group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "numeric") -- NUMERIC dt= grtV.newObj("db.SimpleDatatype", "NUMERIC", "{0DDBFF86-5345-4666-87CC-ECC3CB7EFFD7}", owner) dt.group= group dt.numericPrecision= 38 dt.numericScale= 127 grtV.insert(rdbms.simpleDatatypes, dt) -- SMALLINT dt= grtV.newObj("db.SimpleDatatype", "SMALLINT", "{B98B35A2-603F-4042-9D59-88248D987309}", owner) dt.group= group dt.numericPrecision= 5 grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) -- INTEGER dt= grtV.newObj("db.SimpleDatatype", "INTEGER", "{014ABBFC-CA8A-4FA2-8BD9-E97D7F8D53AE}", owner) dt.group= group dt.numericPrecision= 10 grtV.insert(dt.synonyms, "INTEGER") grtV.insert(dt.synonyms, "INT") grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) -- BIGINT dt= grtV.newObj("db.SimpleDatatype", "BIGINT", "{B96B52BA-48FE-431F-A0B4-D5E1B733FE3F}", owner) dt.group= group dt.numericPrecision= 20 grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) -- FLOAT dt= grtV.newObj("db.SimpleDatatype", "FLOAT", "{BEA672B3-20CC-4A53-A4EC-B2F31E84DE1E}", owner) dt.group= group grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) -- DOUBLE dt= grtV.newObj("db.SimpleDatatype", "DOUBLE", "{3873BDB6-9C60-4BB0-90B4-45F4C76485D9}", owner) dt.group= group grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) -- DECIMAL dt= grtV.newObj("db.SimpleDatatype", "DECIMAL", "{8CB74B5F-921A-4F6E-95C6-3AD94F2BB36F}", owner) dt.group= group dt.numericPrecision= 64 dt.numericScale= 30 grtV.insert(dt.flags, "UNSIGNED") grtV.insert(dt.flags, "ZEROFILL") grtV.insert(rdbms.simpleDatatypes, dt) end -- -------------------------------------------------------------------------------------- -- string group do group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "string") -- CHAR dt= grtV.newObj("db.SimpleDatatype", "CHAR", "{4B160881-B5B7-4C25-BBD1-36C9CA1A0E80}", owner) dt.group= group dt.characterMaximumLength= 255 grtV.insert(dt.flags, "BINARY") grtV.insert(dt.flags, "UNICODE") grtV.insert(dt.flags, "ASCII") grtV.insert(rdbms.simpleDatatypes, dt) -- VARCHAR dt= grtV.newObj("db.SimpleDatatype", "VARCHAR", "{7198A7BB-968D-4BD9-B85C-4DE7504F0D83}", owner) dt.group= group dt.characterMaximumLength= 65535 grtV.insert(dt.flags, "BINARY") grtV.insert(rdbms.simpleDatatypes, dt) end -- -------------------------------------------------------------------------------------- -- blob group do group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "blob") -- BLOB dt= grtV.newObj("db.SimpleDatatype", "BLOB", "{6A28850F-C5BC-4722-80A0-6187798B35C0}", owner) dt.group= group dt.characterOctetLength= 65535 grtV.insert(rdbms.simpleDatatypes, dt) end -- -------------------------------------------------------------------------------------- -- datetime group do group= __RdbmsManagement_lua.getDatatypeGroupByNameLua(rdbmsMgmt, "datetime") -- DATE dt= grtV.newObj("db.SimpleDatatype", "DATE", "{E3ACD2FE-A26B-4BB8-ADA6-433F92B0570D}", owner) dt.group= group dt.dateTimePrecision= 3 grtV.insert(rdbms.simpleDatatypes, dt) -- TIME dt= grtV.newObj("db.SimpleDatatype", "TIME", "{65642303-376B-4C4A-B200-7E0DFAA47344}", owner) dt.group= group dt.dateTimePrecision= 3 grtV.insert(rdbms.simpleDatatypes, dt) -- TIMESTAMP dt= grtV.newObj("db.SimpleDatatype", "TIMESTAMP", "{D8A1FD4B-794F-464E-8E4A-E14C38D9C924}", owner) dt.group= group dt.dateTimePrecision= 4 grtV.insert(rdbms.simpleDatatypes, dt) end end -- ---------------------------------------------------------------------------------------- -- @brief Function to get the Firebird driver -- -- Helper function to return infos about the Jdbc driver -- -- @param owner the Grt value of the Rdbms -- -- @return a new created GRT value of struct "db.mgmt.Driver" containing the driver info -- ---------------------------------------------------------------------------------------- function getDriverFirebirdJdbc(owner) -- create driver object local driver= grtV.newObj("db.mgmt.JdbcDriver", "FirebirdJdbc", "{27A7FD95-2459-444E-901A-3458CF82D808}", grtV.toLua(owner._id)) -- set driver values driver.caption= "Firebird Jdbc" driver.description= "Firebird Jdbc driver connection" -- Jdbc specific settings driver.className= "org.firebirdsql.jdbc.FBDriver" driver.port="3050" driver.host="localhost" driver.filepath="" driver.connectionStringTemplate= "jdbc:firebirdsql:%host%/%port%:%filepath%" -- add driver parameters __RdbmsInfo_lua.addDriverParamDefaults(owner, driver.parameters, 1, "3050") -- the filename, including path, for the database file grtV.insert(driver.parameters, __RdbmsInfo_lua.getDriverParameter(owner, "filepath", "Filename:", "The path and name of the database file.", "string", 4, 218, "", 0, 1)) driver.defaultModules= { ReverseEngineeringModule= "ReverseEngineeringFirebird", MigrationModule= "MigrationFirebird", TransformationModule= "" } if grt.moduleExists("BaseJava") then driver.isAccessable= true driver.isInstalled= grt.getRes(BaseJava:javaClassExists(driver.className)) else driver.isAccessable= false driver.isInstalled= false end return driver end