Loading sharding-jdbc-config-parent/sharding-jdbc-config-common/src/test/java/com/dangdang/ddframe/rdb/sharding/config/common/internal/algorithm/ClosureShardingAlgorithmTest.java +5 −3 Original line number Diff line number Diff line Loading @@ -42,14 +42,15 @@ public class ClosureShardingAlgorithmTest { @Test public void testEqual() { Collection<String> result = algorithm.doSharding(Collections.singletonList("t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", 1L))); Collection<String> result = algorithm.doSharding(Collections.singletonList("t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", 1L))); assertThat(result.size(), is(1)); assertThat(result, hasItem("t_order_1")); } @Test public void testIn() { Collection<String> result = algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", Arrays.asList(1, 2)))); Collection<String> result = algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", Arrays.asList(1, 2)))); assertThat(result.size(), is(2)); assertThat(result, hasItem("t_order_0")); assertThat(result, hasItem("t_order_1")); Loading @@ -57,7 +58,8 @@ public class ClosureShardingAlgorithmTest { @Test(expected = UnsupportedOperationException.class) public void testBetween() { algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", Range.range(1, BoundType.CLOSED, 2, BoundType.OPEN)))); algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", Range.range(1, BoundType.CLOSED, 2, BoundType.OPEN)))); } @Test(expected = NullPointerException.class) Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/HintManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public final class HintManager implements AutoCloseable { * @param values 分片值 */ public void addDatabaseShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>... values) { databaseShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(shardingColumn, binaryOperator, values)); databaseShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(logicTable, shardingColumn, binaryOperator, values)); } /** Loading @@ -101,19 +101,19 @@ public final class HintManager implements AutoCloseable { * @param values 分片值 */ public void addTableShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>... values) { tableShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(shardingColumn, binaryOperator, values)); tableShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(logicTable, shardingColumn, binaryOperator, values)); } @SuppressWarnings("unchecked") private ShardingValue getShardingValue(final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>[] values) { private ShardingValue getShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>[] values) { Preconditions.checkArgument(null != values && values.length > 0); switch (binaryOperator) { case EQUAL: return new ShardingValue<Comparable<?>>(shardingColumn, values[0]); return new ShardingValue<Comparable<?>>(logicTable, shardingColumn, values[0]); case IN: return new ShardingValue(shardingColumn, Arrays.asList(values)); return new ShardingValue(logicTable, shardingColumn, Arrays.asList(values)); case BETWEEN: return new ShardingValue(shardingColumn, Range.range(values[0], BoundType.CLOSED, values[1], BoundType.CLOSED)); return new ShardingValue(logicTable, shardingColumn, Range.range(values[0], BoundType.CLOSED, values[1], BoundType.CLOSED)); default: throw new UnsupportedOperationException(binaryOperator.getExpression()); } Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/ShardingValue.java +8 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ import com.google.common.collect.Range; @ToString public final class ShardingValue<T extends Comparable<?>> { private final String logicTableName; private final String columnName; private final T value; Loading @@ -50,16 +52,16 @@ public final class ShardingValue<T extends Comparable<?>> { private final Range<T> valueRange; public ShardingValue(final String columnName, final T value) { this(columnName, value, Collections.<T>emptyList(), null); public ShardingValue(final String logicTableName, final String columnName, final T value) { this(logicTableName, columnName, value, Collections.<T>emptyList(), null); } public ShardingValue(final String columnName, final Collection<T> values) { this(columnName, null, values, null); public ShardingValue(final String logicTableName, final String columnName, final Collection<T> values) { this(logicTableName, columnName, null, values, null); } public ShardingValue(final String columnName, final Range<T> valueRange) { this(columnName, null, Collections.<T>emptyList(), valueRange); public ShardingValue(final String logicTableName, final String columnName, final Range<T> valueRange) { this(logicTableName, columnName, null, Collections.<T>emptyList(), valueRange); } /** Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/result/router/Condition.java +4 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,8 @@ public final class Condition { /** * 列对象. * * @author gaohongtao, zhangliang * @author gaohongtao * @author zhangliang */ @RequiredArgsConstructor @Getter Loading @@ -61,7 +62,8 @@ public final class Condition { /** * 操作符枚举. * * @author gaohongtao, zhangliang * @author gaohongtao * @author zhangliang */ @RequiredArgsConstructor public enum BinaryOperator { Loading sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/router/single/SingleRouterUtil.java +4 −3 Original line number Diff line number Diff line Loading @@ -46,11 +46,12 @@ public class SingleRouterUtil { case EQUAL: case IN: if (1 == conditionValues.size()) { return new ShardingValue<Comparable<?>>(condition.getColumn().getColumnName(), conditionValues.get(0)); return new ShardingValue<Comparable<?>>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), conditionValues.get(0)); } return new ShardingValue<>(condition.getColumn().getColumnName(), conditionValues); return new ShardingValue<>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), conditionValues); case BETWEEN: return new ShardingValue<>(condition.getColumn().getColumnName(), Range.range(conditionValues.get(0), BoundType.CLOSED, conditionValues.get(1), BoundType.CLOSED)); return new ShardingValue<>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), Range.range(conditionValues.get(0), BoundType.CLOSED, conditionValues.get(1), BoundType.CLOSED)); default: throw new UnsupportedOperationException(condition.getOperator().getExpression()); } Loading Loading
sharding-jdbc-config-parent/sharding-jdbc-config-common/src/test/java/com/dangdang/ddframe/rdb/sharding/config/common/internal/algorithm/ClosureShardingAlgorithmTest.java +5 −3 Original line number Diff line number Diff line Loading @@ -42,14 +42,15 @@ public class ClosureShardingAlgorithmTest { @Test public void testEqual() { Collection<String> result = algorithm.doSharding(Collections.singletonList("t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", 1L))); Collection<String> result = algorithm.doSharding(Collections.singletonList("t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", 1L))); assertThat(result.size(), is(1)); assertThat(result, hasItem("t_order_1")); } @Test public void testIn() { Collection<String> result = algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", Arrays.asList(1, 2)))); Collection<String> result = algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", Arrays.asList(1, 2)))); assertThat(result.size(), is(2)); assertThat(result, hasItem("t_order_0")); assertThat(result, hasItem("t_order_1")); Loading @@ -57,7 +58,8 @@ public class ClosureShardingAlgorithmTest { @Test(expected = UnsupportedOperationException.class) public void testBetween() { algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("id", Range.range(1, BoundType.CLOSED, 2, BoundType.OPEN)))); algorithm.doSharding(Arrays.asList("t_order_0", "t_order_1"), Collections.<ShardingValue<?>>singletonList(new ShardingValue<>("t_order", "id", Range.range(1, BoundType.CLOSED, 2, BoundType.OPEN)))); } @Test(expected = NullPointerException.class) Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/HintManager.java +6 −6 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public final class HintManager implements AutoCloseable { * @param values 分片值 */ public void addDatabaseShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>... values) { databaseShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(shardingColumn, binaryOperator, values)); databaseShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(logicTable, shardingColumn, binaryOperator, values)); } /** Loading @@ -101,19 +101,19 @@ public final class HintManager implements AutoCloseable { * @param values 分片值 */ public void addTableShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>... values) { tableShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(shardingColumn, binaryOperator, values)); tableShardingValues.put(new ShardingKey(logicTable, shardingColumn), getShardingValue(logicTable, shardingColumn, binaryOperator, values)); } @SuppressWarnings("unchecked") private ShardingValue getShardingValue(final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>[] values) { private ShardingValue getShardingValue(final String logicTable, final String shardingColumn, final Condition.BinaryOperator binaryOperator, final Comparable<?>[] values) { Preconditions.checkArgument(null != values && values.length > 0); switch (binaryOperator) { case EQUAL: return new ShardingValue<Comparable<?>>(shardingColumn, values[0]); return new ShardingValue<Comparable<?>>(logicTable, shardingColumn, values[0]); case IN: return new ShardingValue(shardingColumn, Arrays.asList(values)); return new ShardingValue(logicTable, shardingColumn, Arrays.asList(values)); case BETWEEN: return new ShardingValue(shardingColumn, Range.range(values[0], BoundType.CLOSED, values[1], BoundType.CLOSED)); return new ShardingValue(logicTable, shardingColumn, Range.range(values[0], BoundType.CLOSED, values[1], BoundType.CLOSED)); default: throw new UnsupportedOperationException(binaryOperator.getExpression()); } Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/api/ShardingValue.java +8 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,8 @@ import com.google.common.collect.Range; @ToString public final class ShardingValue<T extends Comparable<?>> { private final String logicTableName; private final String columnName; private final T value; Loading @@ -50,16 +52,16 @@ public final class ShardingValue<T extends Comparable<?>> { private final Range<T> valueRange; public ShardingValue(final String columnName, final T value) { this(columnName, value, Collections.<T>emptyList(), null); public ShardingValue(final String logicTableName, final String columnName, final T value) { this(logicTableName, columnName, value, Collections.<T>emptyList(), null); } public ShardingValue(final String columnName, final Collection<T> values) { this(columnName, null, values, null); public ShardingValue(final String logicTableName, final String columnName, final Collection<T> values) { this(logicTableName, columnName, null, values, null); } public ShardingValue(final String columnName, final Range<T> valueRange) { this(columnName, null, Collections.<T>emptyList(), valueRange); public ShardingValue(final String logicTableName, final String columnName, final Range<T> valueRange) { this(logicTableName, columnName, null, Collections.<T>emptyList(), valueRange); } /** Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/parser/result/router/Condition.java +4 −2 Original line number Diff line number Diff line Loading @@ -45,7 +45,8 @@ public final class Condition { /** * 列对象. * * @author gaohongtao, zhangliang * @author gaohongtao * @author zhangliang */ @RequiredArgsConstructor @Getter Loading @@ -61,7 +62,8 @@ public final class Condition { /** * 操作符枚举. * * @author gaohongtao, zhangliang * @author gaohongtao * @author zhangliang */ @RequiredArgsConstructor public enum BinaryOperator { Loading
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/router/single/SingleRouterUtil.java +4 −3 Original line number Diff line number Diff line Loading @@ -46,11 +46,12 @@ public class SingleRouterUtil { case EQUAL: case IN: if (1 == conditionValues.size()) { return new ShardingValue<Comparable<?>>(condition.getColumn().getColumnName(), conditionValues.get(0)); return new ShardingValue<Comparable<?>>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), conditionValues.get(0)); } return new ShardingValue<>(condition.getColumn().getColumnName(), conditionValues); return new ShardingValue<>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), conditionValues); case BETWEEN: return new ShardingValue<>(condition.getColumn().getColumnName(), Range.range(conditionValues.get(0), BoundType.CLOSED, conditionValues.get(1), BoundType.CLOSED)); return new ShardingValue<>(condition.getColumn().getTableName(), condition.getColumn().getColumnName(), Range.range(conditionValues.get(0), BoundType.CLOSED, conditionValues.get(1), BoundType.CLOSED)); default: throw new UnsupportedOperationException(condition.getOperator().getExpression()); } Loading