コード例 #1
0
        private IShardingKeyGenerator CreateDefaultKeyGenerator(KeyGeneratorConfiguration keyGeneratorConfiguration)
        {
            ShardingKeyGeneratorServiceLoader serviceLoader = new ShardingKeyGeneratorServiceLoader();

            return(ContainsKeyGeneratorConfiguration(keyGeneratorConfiguration)
                    ? serviceLoader.NewService(keyGeneratorConfiguration.Type, keyGeneratorConfiguration.Properties) : serviceLoader.NewService());
        }
コード例 #2
0
        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);
   }
 }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
 private bool ContainsKeyGeneratorConfiguration(KeyGeneratorConfiguration keyGeneratorConfiguration)
 {
     return(null != keyGeneratorConfiguration && !string.IsNullOrEmpty(keyGeneratorConfiguration.Type));
 }
コード例 #6
0
        // Constructors

        public KeyGeneratorConfigurationFlow(KeyGeneratorConfiguration configuration)
        {
            this.configuration = configuration;
        }