Skip to content

Commit

Permalink
for #2567, refactor InsertParameterBuilder's constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
terrymanu committed Sep 12, 2019
1 parent 298c94f commit b7f1358
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,11 @@ private void processGeneratedKey() {
if (optimizedStatement instanceof ShardingInsertOptimizedStatement) {
Optional<GeneratedKey> generatedKey = ((ShardingInsertOptimizedStatement) optimizedStatement).getGeneratedKey();
boolean isGeneratedValue = generatedKey.isPresent() && generatedKey.get().isGenerated();
if (!isGeneratedValue) {
return;
}
Iterator<Comparable<?>> generatedValues = generatedKey.get().getGeneratedValues().descendingIterator();
for (InsertValue each : ((ShardingInsertOptimizedStatement) optimizedStatement).getInsertValues()) {
each.appendValue(generatedValues.next(), ShardingDerivedColumnType.KEY_GEN);
if (isGeneratedValue) {
Iterator<Comparable<?>> generatedValues = generatedKey.get().getGeneratedValues().descendingIterator();
for (InsertValue each : ((ShardingInsertOptimizedStatement) optimizedStatement).getInsertValues()) {
each.appendValue(generatedValues.next(), ShardingDerivedColumnType.KEY_GEN);
}
}
}
}
Expand Down Expand Up @@ -151,14 +150,14 @@ private void encryptInsertValue(final EncryptRule encryptRule, final ShardingEnc

private ParameterBuilder createParameterBuilder(final List<Object> parameters, final SQLRouteResult sqlRouteResult) {
if (optimizedStatement instanceof InsertOptimizedStatement) {
return new InsertParameterBuilder(parameters, (InsertOptimizedStatement) optimizedStatement);
return new InsertParameterBuilder(parameters, ((InsertOptimizedStatement) optimizedStatement).getInsertValues());
}
return new BaseParameterBuilder(parameters, sqlRouteResult);
}

private ParameterBuilder createParameterBuilder(final List<Object> parameters) {
if (optimizedStatement instanceof InsertOptimizedStatement) {
return new InsertParameterBuilder(parameters, (InsertOptimizedStatement) optimizedStatement);
return new InsertParameterBuilder(parameters, ((InsertOptimizedStatement) optimizedStatement).getInsertValues());
}
return new BaseParameterBuilder(parameters);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

import lombok.Getter;
import org.apache.shardingsphere.core.optimize.api.segment.InsertValue;
import org.apache.shardingsphere.core.optimize.api.statement.InsertOptimizedStatement;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.rule.DataNode;

Expand All @@ -38,14 +37,14 @@ public final class InsertParameterBuilder implements ParameterBuilder {

private final List<InsertParameterUnit> insertParameterUnits;

public InsertParameterBuilder(final List<Object> parameters, final InsertOptimizedStatement optimizedStatement) {
public InsertParameterBuilder(final List<Object> parameters, final List<InsertValue> insertValues) {
originalParameters = new LinkedList<>(parameters);
insertParameterUnits = createInsertParameterUnits(optimizedStatement);
insertParameterUnits = createInsertParameterUnits(insertValues);
}

private List<InsertParameterUnit> createInsertParameterUnits(final InsertOptimizedStatement optimizedStatement) {
private List<InsertParameterUnit> createInsertParameterUnits(final List<InsertValue> insertValues) {
List<InsertParameterUnit> result = new LinkedList<>();
for (InsertValue each : optimizedStatement.getInsertValues()) {
for (InsertValue each : insertValues) {
result.add(new InsertParameterUnit(each.getParameters(), each.getDataNodes()));
}
return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
package org.apache.shardingsphere.core.rewrite.builder;

import org.apache.shardingsphere.core.optimize.api.segment.InsertValue;
import org.apache.shardingsphere.core.optimize.api.statement.InsertOptimizedStatement;
import org.apache.shardingsphere.core.route.type.RoutingUnit;
import org.apache.shardingsphere.core.route.type.TableUnit;
import org.apache.shardingsphere.core.rule.DataNode;
Expand All @@ -27,6 +26,7 @@

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Expand All @@ -42,16 +42,14 @@ public void setUp() {
insertParameterBuilder = new InsertParameterBuilder(Arrays.<Object>asList(1, 2), createInsertOptimizedStatement());
}

private InsertOptimizedStatement createInsertOptimizedStatement() {
private List<InsertValue> createInsertOptimizedStatement() {
InsertValue insertValue1 = mock(InsertValue.class);
when(insertValue1.getParameters()).thenReturn(Arrays.<Object>asList(3, 4));
when(insertValue1.getDataNodes()).thenReturn(Collections.singletonList(new DataNode("db1.tb1")));
InsertValue insertValue2 = mock(InsertValue.class);
when(insertValue2.getParameters()).thenReturn(Arrays.<Object>asList(5, 6));
when(insertValue2.getDataNodes()).thenReturn(Collections.singletonList(new DataNode("db2.tb2")));
InsertOptimizedStatement result = mock(InsertOptimizedStatement.class);
when(result.getInsertValues()).thenReturn(Arrays.asList(insertValue1, insertValue2));
return result;
return Arrays.asList(insertValue1, insertValue2);
}

@Test
Expand Down

0 comments on commit b7f1358

Please sign in to comment.