未验证 提交 80f51e7e 编写于 作者: M menghaoranss 提交者: GitHub

for issue#5043 add schema dynamically (#5057)

上级 43d3426f
......@@ -17,16 +17,21 @@
package org.apache.shardingsphere.ui.servcie.impl;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import org.apache.shardingsphere.orchestration.center.ConfigCenterRepository;
import org.apache.shardingsphere.ui.servcie.ConfigCenterService;
import org.apache.shardingsphere.underlying.common.config.DataSourceConfiguration;
import org.apache.shardingsphere.ui.servcie.RegistryCenterService;
import org.apache.shardingsphere.ui.servcie.ShardingSchemaService;
import org.apache.shardingsphere.ui.util.ConfigurationYamlConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
......@@ -72,6 +77,7 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService {
checkDataSourceConfiguration(dataSourceConfiguration);
persistRuleConfiguration(schemaName, ruleConfiguration);
persistDataSourceConfiguration(schemaName, dataSourceConfiguration);
persistSchemaName(schemaName);
}
private void checkRuleConfiguration(final String configData) {
......@@ -114,4 +120,14 @@ public final class ShardingSchemaServiceImpl implements ShardingSchemaService {
Preconditions.checkArgument(!existedSchemaNames.contains(schemaName), "schema name already exists.");
}
private void persistSchemaName(final String schemaName) {
ConfigCenterRepository configCenterRepository = configCenterService.getActivatedConfigCenter();
String schemaPath = configCenterService.getActivateConfigurationNode().getSchemaPath();
String schemaNames = configCenterRepository.get(schemaPath);
List<String> schemaNameList = Strings.isNullOrEmpty(schemaNames)?new ArrayList<>():new ArrayList<>(Splitter.on(",").splitToList(schemaNames));
if (!schemaNameList.contains(schemaName)) {
schemaNameList.add(schemaName);
configCenterRepository.persist(schemaPath, Joiner.on(",").join(schemaNameList));
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册