private IShardingKeyGenerator CreateDefaultKeyGenerator(KeyGeneratorConfiguration keyGeneratorConfiguration) { ShardingKeyGeneratorServiceLoader serviceLoader = new ShardingKeyGeneratorServiceLoader(); return(ContainsKeyGeneratorConfiguration(keyGeneratorConfiguration) ? serviceLoader.NewService(keyGeneratorConfiguration.Type, keyGeneratorConfiguration.Properties) : serviceLoader.NewService()); }
public TableRule(TableRuleConfiguration tableRuleConfig, ShardingDataSourceNames shardingDataSourceNames, string defaultGenerateKeyColumn) { LogicTable = tableRuleConfig.LogicTable.ToLower(); List <string> dataNodes = tableRuleConfig.ActualDataNodes ?? new List <string>(0); // List<string> dataNodes = new InlineExpressionParser(tableRuleConfig.GetActualDataNodes()).splitAndEvaluate(); // dataNodeIndexMap = new HashMap<>(dataNodes.size(), 1); dataNodeIndexMap = new Dictionary <DataNode, int>(dataNodes.Count); ActualDataNodes = IsEmptyDataNodes(dataNodes) ? GenerateDataNodes(tableRuleConfig.LogicTable, shardingDataSourceNames.DataSourceNames) : GenerateDataNodes(dataNodes, shardingDataSourceNames.DataSourceNames); //ActualDataNodes = GenerateDataNodes(tableRuleConfig.LogicTable, shardingDataSourceNames.DataSourceNames); actualTables = GetActualTables(); DatabaseShardingStrategy = null == tableRuleConfig.DatabaseShardingStrategyConfig ? null : ShardingStrategyFactory.NewInstance(tableRuleConfig.DatabaseShardingStrategyConfig); TableShardingStrategy = null == tableRuleConfig.TableShardingStrategyConfig ? null : ShardingStrategyFactory.NewInstance(tableRuleConfig.TableShardingStrategyConfig); KeyGeneratorConfiguration keyGeneratorConfiguration = tableRuleConfig.KeyGeneratorConfig; generateKeyColumn = null != keyGeneratorConfiguration && !string.IsNullOrWhiteSpace(keyGeneratorConfiguration.Column) ? keyGeneratorConfiguration.Column : defaultGenerateKeyColumn; ShardingKeyGenerator = ContainsKeyGeneratorConfiguration(tableRuleConfig) ? new ShardingKeyGeneratorServiceLoader().NewService(tableRuleConfig.KeyGeneratorConfig.Type, tableRuleConfig.KeyGeneratorConfig.Properties) : null; // CheckRule(dataNodes); }
private void CheckGeneratorsAfterDomainBuilded(KeyGeneratorConfiguration keyGeneratorConfiguration, Session session, int expectedValue) { if (Domain.Configuration.IsMultischema) { foreach (var schema in extractedCatalog.Schemas) { CheckSchemaGenerators(schema, keyGeneratorConfiguration.Name+ "-Generator", session, expectedValue); } } else { CheckSchemaGenerators(extractedCatalog.DefaultSchema, keyGeneratorConfiguration.Name + "-Generator", session, expectedValue); } }
/// <summary> /// Builds name for key generator. /// </summary> /// <param name="configuration">Configuration.</param> /// <returns>Key generator name.</returns> public string BuildKeyGeneratorName(KeyGeneratorConfiguration configuration) { if (!isMultidatabase) { return(configuration.Name); } var database = configuration.Database; if (string.IsNullOrEmpty(database)) { database = defaultDatabase; } return(FormatKeyGeneratorName(database, configuration.Name)); }
private bool ContainsKeyGeneratorConfiguration(KeyGeneratorConfiguration keyGeneratorConfiguration) { return(null != keyGeneratorConfiguration && !string.IsNullOrEmpty(keyGeneratorConfiguration.Type)); }
// Constructors public KeyGeneratorConfigurationFlow(KeyGeneratorConfiguration configuration) { this.configuration = configuration; }