Commit 4c08c2d8 authored by terrymanu's avatar terrymanu
Browse files

for #2084, AssignmentExtractor implements OptionalSQLSegmentExtractor

parent b784911c
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.impl.common.column.ColumnExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.util.ExtractorUtils;
import org.apache.shardingsphere.core.parse.antlr.extractor.util.RuleName;
@@ -36,20 +37,14 @@ import java.util.Map;
 * @author zhangliang
 */
@RequiredArgsConstructor
public final class AssignmentExtractor {
public final class AssignmentExtractor implements OptionalSQLSegmentExtractor {
    
    private final ColumnExtractor columnExtractor = new ColumnExtractor();
    
    private final ExpressionExtractor expressionExtractor = new ExpressionExtractor();
    
    /**
     * Extract.
     * 
     * @param parameterMarkerIndexes parameter marker indexes
     * @param ancestorNode ancestor node
     * @return assignment segment
     */
    public Optional<AssignmentSegment> extract(final Map<ParserRuleContext, Integer> parameterMarkerIndexes, final ParserRuleContext ancestorNode) {
    @Override
    public Optional<AssignmentSegment> extract(final ParserRuleContext ancestorNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) {
        Optional<ParserRuleContext> assignmentNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.ASSIGNMENT);
        if (!assignmentNode.isPresent()) {
            return Optional.absent();
+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ public final class SetAssignmentsExtractor implements OptionalSQLSegmentExtracto
        }
        Collection<AssignmentSegment> assignmentSegments = new LinkedList<>();
        for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(ancestorNode, RuleName.ASSIGNMENT)) {
            Optional<AssignmentSegment> assignmentSegment = assignmentExtractor.extract(parameterMarkerIndexes, each);
            Optional<AssignmentSegment> assignmentSegment = assignmentExtractor.extract(each, parameterMarkerIndexes);
            if (assignmentSegment.isPresent()) {
                assignmentSegments.add(assignmentSegment.get());
            }