static ClickHouseCredentials extract(String rawUserInfo, Map<String, String> params,
            ClickHouseCredentials defaultCredentials) {
        ClickHouseCredentials credentials = defaultCredentials;
        String user = "";
        String passwd = "";
        if (credentials != null && !credentials.useAccessToken()) {
            user = credentials.getUserName();
            passwd = credentials.getPassword();
        }

        if (!ClickHouseChecker.isNullOrEmpty(rawUserInfo)) {
            int index = rawUserInfo.indexOf(':');
            if (index < 0) {
                user = ClickHouseUtils.decode(rawUserInfo);
            } else {
                String str = ClickHouseUtils.decode(rawUserInfo.substring(0, index));
                if (!ClickHouseChecker.isNullOrEmpty(str)) {
                    user = str;
                }
                passwd = ClickHouseUtils.decode(rawUserInfo.substring(index + 1));
            }
        }

        String str = params.remove(ClickHouseDefaults.USER.getKey());
        if (!ClickHouseChecker.isNullOrEmpty(str)) {
            user = str;
        }
        str = params.remove(ClickHouseDefaults.PASSWORD.getKey());
        if (str != null) {
            passwd = str;
        }
        if (!ClickHouseChecker.isNullOrEmpty(user)) {
            credentials = ClickHouseCredentials.fromUserAndPassword(user, passwd);
        } else if (!ClickHouseChecker.isNullOrEmpty(passwd)) {
            credentials = ClickHouseCredentials
                    .fromUserAndPassword((String) ClickHouseDefaults.USER.getEffectiveDefaultValue(), passwd);
        }
        return credentials;
    }
Creates a new node.

@return new node
clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseNode.java