001package gudusoft.gsqlparser.sqlenv; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.dlineage.dataflow.sqlenv.SQLEnvParser; 005import gudusoft.gsqlparser.util.SQLUtil; 006 007import java.util.Arrays; 008import java.util.HashMap; 009import java.util.Map; 010 011public class TServerSQLEnv { 012 013 private Map<String, TSQLEnv> sqlEnvMap = new HashMap<String, TSQLEnv>(); 014 015 private synchronized TSQLEnv getSQLEnv(String server, EDbVendor dbVendor) { 016 if (SQLUtil.isEmpty(server) || server.equalsIgnoreCase(TSQLEnv.DEFAULT_SERVER_NAME)) { 017 return sqlEnvMap.get(TSQLEnv.DEFAULT_SERVER_NAME); 018 } 019 return sqlEnvMap.get(SQLUtil.getIdentifierNormalName(dbVendor, server, ESQLDataObjectType.dotCatalog)); 020 } 021 022 public synchronized void appendSQLEnv(String server, TSQLEnv sqlEnv) { 023 if (sqlEnv == null) { 024 return; 025 } 026 027 TSQLEnv oldSQLEnv = getSQLEnv(server, sqlEnv.getDBVendor()); 028 if(oldSQLEnv==null){ 029 sqlEnvMap.put(SQLUtil.getIdentifierNormalName(sqlEnv.getDBVendor(), server, ESQLDataObjectType.dotCatalog), sqlEnv); 030 } 031 else{ 032 TSQLEnv newSQLEnv = SQLEnvParser.mergeSQLEnv(Arrays.asList(oldSQLEnv, sqlEnv)); 033 sqlEnvMap.put(SQLUtil.getIdentifierNormalName(oldSQLEnv.getDBVendor(), server, ESQLDataObjectType.dotCatalog), newSQLEnv); 034 } 035 } 036}