Afsalmc commented on issue #29841:
URL: 
https://github.com/apache/shardingsphere/issues/29841#issuecomment-1958425446

   @strongduanmu Forgot to mention that I am using java API to add default 
sharding strategy.
   `        shardingRuleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("Accountid", "shardingLogic"));`
   
   shardingLogic is a custom sharding Logic
   ```
   
   public final class ShardingLogic implements 
StandardShardingAlgorithm<Integer> {
       private Map<Integer,String> shardMap = new HashMap<>();
       private shardMapLoader shardMapLoader;
       private AbstractConfiguration config;
       public ShardingLogic() throws ConfigurationException {
           config  = Main.getConfig();
           var shardConnection = config.getString("shardMapJdbcUrl");
           var shardUser = config.getString("shardMapUserName");
           var shardPass = config.getString("shardMapPass");
           shardMapLoader = new 
shardMapLoader(shardConnection,shardUser,shardPass);
           shardMap =  shardMapLoader.LoadtoJavaMap();
       }
       @Override
       public String doSharding(final Collection<String> availableTargetNames, 
final PreciseShardingValue<Integer> shardingValue) {
           for (String each : availableTargetNames) {
                if(!shardMap.containsKey(shardingValue.getValue()))
                    break;
                if(availableTargetNames.size() ==1){
                    return each;
                }
               var dbSource = shardMap.get(shardingValue.getValue());
                if(!each.contains(">")){
                    for (var dataSources: each.split("\\|")) {
                        if(dbSource.equals(dataSources)){
                            return each;
                        }
                    }
                }
               var shardingSchema = 
shardingValue.getLogicTableName().split("__",2)[0];
                var targetSchemaSet = each.split(">")[0];
                String[] targetSchemas = null != 
config.getString(targetSchemaSet+"Schema") ? 
config.getString(targetSchemaSet+"Schema").split(",") : new String[]{""};
                var isMatchingSchema = (null !=shardingSchema) && 
Arrays.asList(targetSchemas).contains(shardingSchema);
                if(isMatchingSchema){
                    var targetSources = each.split(">")[1].split("\\|");
                    for(var targetSource:targetSources){
                        if(dbSource.equals(targetSource))
                            return each;
                    }
                }
           }
           return null;
       }
   
       @Override
       public Collection<String> doSharding(final Collection<String> 
availableTargetNames, final RangeShardingValue<Integer> shardingValue) {
           return availableTargetNames;
       }
   }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@shardingsphere.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to