fix the issue, when we don't can set keyspace name for Cassandra

This commit is contained in:
van-vanich 2021-12-02 18:05:03 +02:00
parent eda4e0f761
commit 73f37271fe

View File

@ -18,6 +18,7 @@ package org.thingsboard.server.service.install;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.thingsboard.server.dao.cassandra.CassandraInstallCluster; import org.thingsboard.server.dao.cassandra.CassandraInstallCluster;
import org.thingsboard.server.service.install.cql.CQLStatementsParser; import org.thingsboard.server.service.install.cql.CQLStatementsParser;
@ -29,6 +30,7 @@ import java.util.List;
public abstract class CassandraAbstractDatabaseSchemaService implements DatabaseSchemaService { public abstract class CassandraAbstractDatabaseSchemaService implements DatabaseSchemaService {
private static final String CASSANDRA_DIR = "cassandra"; private static final String CASSANDRA_DIR = "cassandra";
private static final String CASSANDRA_STANDARD_KEYSPACE = "thingsboard";
@Autowired @Autowired
@Qualifier("CassandraInstallCluster") @Qualifier("CassandraInstallCluster")
@ -37,6 +39,9 @@ public abstract class CassandraAbstractDatabaseSchemaService implements Database
@Autowired @Autowired
private InstallScripts installScripts; private InstallScripts installScripts;
@Value("${cassandra.keyspace_name}")
private String keyspaceName;
private final String schemaCql; private final String schemaCql;
protected CassandraAbstractDatabaseSchemaService(String schemaCql) { protected CassandraAbstractDatabaseSchemaService(String schemaCql) {
@ -61,6 +66,10 @@ public abstract class CassandraAbstractDatabaseSchemaService implements Database
private void loadCql(Path cql) throws Exception { private void loadCql(Path cql) throws Exception {
List<String> statements = new CQLStatementsParser(cql).getStatements(); List<String> statements = new CQLStatementsParser(cql).getStatements();
statements.forEach(statement -> cluster.getSession().execute(statement)); statements.forEach(statement -> cluster.getSession().execute(getCassandraKeyspaceName(statement)));
}
private String getCassandraKeyspaceName(String statement) {
return statement.replaceFirst(CASSANDRA_STANDARD_KEYSPACE, keyspaceName);
} }
} }