diff --git a/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/DatabaseObjectCommonUtil.java b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/DatabaseObjectCommonUtil.java index 59cb2ee47acdcbb58481fa97f81702f6fc6dc9a4..a8003f7f23b03490be1aad6d65aa8534281aab46 100644 --- a/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/DatabaseObjectCommonUtil.java +++ b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/DatabaseObjectCommonUtil.java @@ -658,6 +658,10 @@ public class DatabaseObjectCommonUtil { dbInfo.setDbType(DbType.DB2); } else if (t.equals("opengauss")) { dbInfo.setDbType(DbType.OpenGauss); + } else if (t.equals("gbase8s")) { + dbInfo.setDbType(DbType.GBase8s); + } else if (t.equals("gbase8c")) { + dbInfo.setDbType(DbType.GBase8c); } return dbInfo; @@ -687,7 +691,8 @@ public class DatabaseObjectCommonUtil { String sql = null; if (db.getDbType() == DbType.Oracle || db.getDbType() == DbType.DM || db.getDbType() == DbType.Oscar) { sql = "select table_name from user_tables"; - } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss) { + } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss + || db.getDbType() == DbType.GBase8s || db.getDbType() == DbType.GBase8c) { sql = "select tablename from pg_tables where lower(schemaname)='" + db.getUserName().toLowerCase() + "'"; } else if (db.getDbType() == DbType.MySQL) { sql = "select TABLE_NAME from information_schema.TABLES where TABLE_TYPE='BASE TABLE' and LOWER(TABLE_SCHEMA)='" + db.getDbName().toLowerCase() + "'"; @@ -810,7 +815,8 @@ public class DatabaseObjectCommonUtil { String sql = ""; if (db.getDbType() == DbType.Oracle || db.getDbType() == DbType.DM || db.getDbType() == DbType.Oscar) { sql = "select OBJECT_NAME from ALL_OBJECTS where temporary = 'Y' and OBJECT_NAME = '"+tableName.toUpperCase()+"'"; - } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss) { + } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss + || db.getDbType() == DbType.GBase8s || db.getDbType() == DbType.GBase8c) { sql = "select tablename from (select to_regclass('"+tableName.toLowerCase()+"') as tablename) t where tablename is not null"; } else if (db.getDbType() == DbType.MySQL) { return ""; @@ -838,7 +844,8 @@ public class DatabaseObjectCommonUtil { String sql = null; if (db.getDbType() == DbType.Oracle || db.getDbType() == DbType.DM || db.getDbType() == DbType.Oscar) { sql = "SELECT COUNT(1) FROM USER_TAB_COLS WHERE COLUMN_NAME = '" + filed.toUpperCase() + "' AND TABLE_NAME ='" + table.toUpperCase() + "'"; - } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss) { + } else if (db.getDbType() == DbType.PgSQL || db.getDbType() == DbType.HighGo || db.getDbType() == DbType.OpenGauss + || db.getDbType() == DbType.GBase8s || db.getDbType() == DbType.GBase8c) { sql = "SELECT COUNT(1) FROM INFORMATION_SCHEMA.COLUMNS WHERE LOWER(TABLE_NAME) = '" + table.toLowerCase() + "' AND LOWER(COLUMN_NAME) = '" + filed.toLowerCase() + "' AND LOWER(TABLE_SCHEMA) = '" + db.getUserName().toLowerCase() + "'"; } else if (db.getDbType() == DbType.MySQL) { sql = "SELECT COUNT(1) FROM information_schema.columns WHERE table_name='" + table.toLowerCase() + "' AND column_name='" + filed.toLowerCase() + "' AND TABLE_SCHEMA = '" + db.getDbName().toLowerCase() + "'"; diff --git a/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8cDatabase.java b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8cDatabase.java new file mode 100644 index 0000000000000000000000000000000000000000..98da97b141b9af7c9b398ce4b95c23b8b9785bab --- /dev/null +++ b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8cDatabase.java @@ -0,0 +1,27 @@ +package io.iec.edp.caf.databaseobject.common.database; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class GBase8cDatabase extends AbstractDatabaseImpl { + + public GBase8cDatabase(DbConfigData configData) { + super(configData); + } + + @Override + public Connection getConnection(DbConfigData configData) throws SQLException { + Connection c = null; + String url = configData.getConnectionString(); + + try { + Class.forName("cn.gbase8c.Driver"); + c = DriverManager.getConnection(url, configData.getUserId(), configData.getPassword()); + } catch (ClassNotFoundException e) { + throw new RuntimeException("构造GBASE8C数据库连接出错,找不到Driver:" + e); + } + + return c; + } +} \ No newline at end of file diff --git a/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8sDatabase.java b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8sDatabase.java new file mode 100644 index 0000000000000000000000000000000000000000..f2263695f5b5bef93e24f5b08f6be0133b07ac85 --- /dev/null +++ b/caf-database-object-common/src/main/java/io/iec/edp/caf/databaseobject/common/database/GBase8sDatabase.java @@ -0,0 +1,27 @@ +package io.iec.edp.caf.databaseobject.common.database; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; + +public class GBase8sDatabase extends AbstractDatabaseImpl { + + public GBase8sDatabase(DbConfigData configData) { + super(configData); + } + + @Override + public Connection getConnection(DbConfigData configData) throws SQLException { + Connection c = null; + String url = configData.getConnectionString(); + + try { + Class.forName("cn.gbase8s.Driver"); + c = DriverManager.getConnection(url, configData.getUserId(), configData.getPassword()); + } catch (ClassNotFoundException e) { + throw new RuntimeException("构造GBASE8S数据库连接出错,找不到Driver:" + e); + } + + return c; + } +} \ No newline at end of file diff --git a/caf-database-object-deploy-gbase8sgenerator/pom.xml b/caf-database-object-deploy-gbase8sgenerator/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..9fb33d1222ecf6e8ed476d92471e67ae0d9c9f8d --- /dev/null +++ b/caf-database-object-deploy-gbase8sgenerator/pom.xml @@ -0,0 +1,27 @@ + + + + caf-database-object + io.iec.edp + 0.3.1 + + 4.0.0 + + caf-database-object-deploy-gbase8sgenerator + + + io.iec.edp + caf-database-object-deploy-defaultsqlgenerator + 0.3.1 + compile + + + + + 8 + 8 + + + \ No newline at end of file diff --git a/caf-database-object-deploy-gbase8sgenerator/src/main/java/io/iec/edp/caf/databaseobject/gbase8sgenerator/GBase8sGenerator.java b/caf-database-object-deploy-gbase8sgenerator/src/main/java/io/iec/edp/caf/databaseobject/gbase8sgenerator/GBase8sGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..d434f31abd5c8c9dc01548e8d46893c439cdf795 --- /dev/null +++ b/caf-database-object-deploy-gbase8sgenerator/src/main/java/io/iec/edp/caf/databaseobject/gbase8sgenerator/GBase8sGenerator.java @@ -0,0 +1,40 @@ +/* + * Copyright © OpenAtom Foundation. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package io.iec.edp.caf.databaseobject.gbase8sgenerator; + +import io.iec.edp.caf.databaseobject.defaultsqlgenerator.AbstractDefaultSqlGenerator; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author liu_wei + */ +public class GBase8sGenerator extends AbstractDefaultSqlGenerator { + @Override + public List GetViewSql(String viewName, String defination) { + List result = new ArrayList(); + String dropSql = "drop view if exists " + viewName; + result.add(dropSql); + String sql = "Create View " + viewName + " AS " + defination; + result.add(sql); + return result; + } + + @Override + public String getDefaultValue(String schemaName, String tableName, String colName) { + return "SELECT column_default AS defaultvalue FROM information_schema.columns WHERE table_schema= '" + schemaName + "' and table_name = '" + tableName + "' and column_name = '" + colName + "'"; + } +} diff --git a/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboDeployManager.java b/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboDeployManager.java index b865b5dbceeea8ce5dd720d0f3cbc47a58869e74..43c8c9d11a476df3dc61a6ab284c8256f1b9b9f8 100644 --- a/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboDeployManager.java +++ b/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboDeployManager.java @@ -723,6 +723,14 @@ public class DboDeployManager { serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "org.opengauss.Driver"); serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); + } else if (dbType == DbType.GBase8s) { + serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); + serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "cn.gbase8s.Driver"); + serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); + } else if (dbType == DbType.GBase8c) { + serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); + serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "cn.gbase8c.Driver"); + serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); } } diff --git a/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboPhysicalNamingStrategy.java b/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboPhysicalNamingStrategy.java index 5040497700e8d75fb01e9016d3d1d95ca21d6c08..3ed7b6b4d7d7c1aa0204925db669514236dda68b 100644 --- a/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboPhysicalNamingStrategy.java +++ b/caf-database-object-deploy-manager/src/main/java/io/iec/edp/caf/databaseobject/DboPhysicalNamingStrategy.java @@ -125,7 +125,7 @@ public class DboPhysicalNamingStrategy implements PhysicalNamingStrategy { if(DbType.OpenGauss.equals(dbType)){ return LetterCase.lowerCase; } - if (name.contains("postgresql") || name.contains("hgdbdialect") || name.contains("mysql")) { + if (name.contains("postgresql") || name.contains("hgdbdialect") || name.contains("mysql") || name.contains("gbase")) { return LetterCase.lowerCase; } else if (name.contains("oracle") || name.contains("dm") || name.contains("oscar") || name.contains("db2")) { return LetterCase.upperCase; diff --git a/caf-database-object-deploy/src/main/java/io/iec/edp/caf/databaseobject/DboDeploy.java b/caf-database-object-deploy/src/main/java/io/iec/edp/caf/databaseobject/DboDeploy.java index 493af7a41f515767e9af1d0f2d34b0bb3e846406..67769365f202ea8da40bb6aa408a7c33faf52b6b 100644 --- a/caf-database-object-deploy/src/main/java/io/iec/edp/caf/databaseobject/DboDeploy.java +++ b/caf-database-object-deploy/src/main/java/io/iec/edp/caf/databaseobject/DboDeploy.java @@ -198,7 +198,7 @@ public class DboDeploy implements CommandLineRunner { private static void getDbInfo() { Scanner scanner = new Scanner(System.in); getDBOPath(scanner); - System.out.println("请选择数据库类型:1.PgSql 2.SqlServer 3.Oracle 4.DM 5.Highgo 6.MySQL 7.Oscar 8.Kingbase 9.DB2 10.OpenGauss[1]"); + System.out.println("请选择数据库类型:1.PgSql 2.SqlServer 3.Oracle 4.DM 5.Highgo 6.MySQL 7.Oscar 8.Kingbase 9.DB2 10.OpenGauss 11.GBase8s 12.GBase8c[1]"); String type = scanner.nextLine(); checkDbType(type, scanner); @@ -285,6 +285,12 @@ public class DboDeploy implements CommandLineRunner { case OpenGauss: defaultPort = "5432"; break; + case GBase8s: + defaultPort = "15432"; + break; + case GBase8c: + defaultPort = "15432"; + break; default: defaultPort = "5432"; break; @@ -325,6 +331,11 @@ public class DboDeploy implements CommandLineRunner { case OpenGauss: defaultUserName = "omm"; break; + case GBase8s: + defaultUserName = "gbase"; + break; + case GBase8c: + defaultUserName = "gbase"; default: defaultUserName = "postgres"; break; @@ -394,8 +405,14 @@ public class DboDeploy implements CommandLineRunner { } else if ("10".equals(type) || "OpenGauss".equals(type)) { dbType = DbType.OpenGauss; - }else { - System.out.println("请选择数据库类型:1.PgSql 2.SqlServer 3.Oracle 4.DM 5.Highgo 6.MySQL 7.Oscar 8.Kingbase 9.DB2 10.OpenGauss[1]"); + }else if ("11".equals(type) || "GBase8s".equals(type)) { + dbType = DbType.GBase8s; + + } else if ("12".equals(type) || "GBase8c".equals(type)) { + dbType = DbType.GBase8c; + + } else { + System.out.println("请选择数据库类型:1.PgSql 2.SqlServer 3.Oracle 4.DM 5.Highgo 6.MySQL 7.Oscar 8.Kingbase 9.DB2 10.OpenGauss 11.GBase8s 12.GBase8c[1]"); type = scanner.nextLine(); checkDbType(type, scanner); } diff --git a/caf-database-object-manager/src/main/java/io/iec/edp/caf/databaseobject/manager/export/DatabaseObjectExportManager.java b/caf-database-object-manager/src/main/java/io/iec/edp/caf/databaseobject/manager/export/DatabaseObjectExportManager.java index d8e992477f34f8420bc0f509214950339dded554..fbab28ccd3124d2bc29809b61537f8a0e89b167d 100644 --- a/caf-database-object-manager/src/main/java/io/iec/edp/caf/databaseobject/manager/export/DatabaseObjectExportManager.java +++ b/caf-database-object-manager/src/main/java/io/iec/edp/caf/databaseobject/manager/export/DatabaseObjectExportManager.java @@ -120,6 +120,14 @@ public class DatabaseObjectExportManager { serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "org.opengauss.Driver"); serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); + } else if (dbType == DbType.GBase8s) { + serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); + serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "cn.gbase8s.Driver"); + serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); + } else if (dbType == DbType.GBase8c) { + serviceRegistryBuilder.applySetting("hibernate.default_schema", "[" + dbInfo.getUserName() + "]"); + serviceRegistryBuilder.applySetting("hibernate.connection.driver_class", "cn.gbase8c.Driver"); + serviceRegistryBuilder.applySetting("hibernate.dialect", "org.hibernate.dialect.PostgreSQL95Dialect"); } } @@ -177,7 +185,8 @@ public class DatabaseObjectExportManager { if (dbType == DbType.Oracle || dbType == DbType.DM || dbType == DbType.Oscar || dbType == DbType.DB2) { table = table.toUpperCase(); } - if (dbType == DbType.PgSQL || dbType == DbType.HighGo || dbType == DbType.MySQL || dbType==DbType.OpenGauss) { + if (dbType == DbType.PgSQL || dbType == DbType.HighGo || dbType == DbType.MySQL || dbType==DbType.OpenGauss + || dbType == DbType.GBase8s || dbType == DbType.GBase8c) { table = table.toLowerCase(); } String currentDboName = StringUtils.isNotBlank(dboName) ? dboName : table; @@ -303,7 +312,8 @@ public class DatabaseObjectExportManager { * @return DBO中支持的字段类型 */ private DataType getColumnDataType(ColumnInformation columnInfo) { - if (dbType == DbType.PgSQL || dbType == DbType.HighGo || dbType == DbType.OpenGauss) { + if (dbType == DbType.PgSQL || dbType == DbType.HighGo || dbType == DbType.OpenGauss + || dbType == DbType.GBase8s || dbType == DbType.GBase8c) { return getPgColumnDataType(columnInfo); } else if (dbType == DbType.SQLServer) { return getSqlServerColumnDataType(columnInfo); diff --git a/pom.xml b/pom.xml index 4339e2e37f9e319a9a2f02916f72dd773116d735..b6e6cef28db5a9fa564fd3343f63285ce8366b2e 100644 --- a/pom.xml +++ b/pom.xml @@ -37,17 +37,19 @@ caf-database-object-deploy-db2generator caf-database-object-deploy-gaussgenerator caf-database-object-rpcapi + caf-database-object-deploy-gbase8sgenerator - - io.iec.edp - caf-boot-parent - 0.3.7 - + + + + + + io.iec.edp caf-database-object pom - 0.3.0 + 0.3.1