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}