12345678910111213141516171819202122232425262728293031323334 |
- package com.huojutech.sharding.algorithm;
-
- import java.sql.Timestamp;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.Collection;
- import java.util.Iterator;
- import java.util.List;
-
- import groovy.util.logging.Slf4j;
- import io.shardingsphere.core.api.algorithm.sharding.ListShardingValue;
- import io.shardingsphere.core.api.algorithm.sharding.PreciseShardingValue;
- import io.shardingsphere.core.api.algorithm.sharding.ShardingValue;
- import io.shardingsphere.core.api.algorithm.sharding.standard.PreciseShardingAlgorithm;
-
- @Slf4j
- public class PreciseTableShardingAlgorithm implements PreciseShardingAlgorithm<String> {
-
- @Override
- public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<String> shardingValue) {
- long code = Long.parseLong((shardingValue.getValue()).substring(16, 20));
- long year = Long.parseLong((shardingValue.getValue()).substring(0, 4));
- String suffix = year + "_" + (code&0x001);
-
- for (String tableName : availableTargetNames) {
- if (tableName.endsWith(suffix)) {
- return tableName;
- }
- }
- return null;
- }
-
- }
|