public Match findFirstMatch( PlannerContext plannerContext, ElementGraph elementGraph ) { return findFirstMatch( new FinderContext(), plannerContext, elementGraph ); }
public Match findFirstMatch( PlannerContext plannerContext, ElementGraph elementGraph, Set<FlowElement> exclusions ) { return findFirstMatch( new FinderContext( exclusions ), plannerContext, elementGraph ); }
public Match findFirstMatch( ElementGraph elementGraph ) { return findFirstMatch( new PlannerContext(), elementGraph ); }
public Asserted assertion( PlannerContext plannerContext, E graph ) { Transformed<E> transform = transform( plannerContext, graph ); if( transform != null && transform.getEndGraph() != null ) graph = transform.getEndGraph(); Match match = finder.findFirstMatch( plannerContext, graph ); Asserted asserted = new Asserted( plannerContext, this, graph, message, assertionType, match ); if( transform != null ) asserted.addChildTransform( transform ); return asserted; } }
match = finder.findAllMatches( transformed.getPlannerContext(), prepared, exclusions ); else match = finder.findFirstMatch( transformed.getPlannerContext(), prepared, exclusions );
Match current = findFirstMatch( finderContext, plannerContext, elementGraph );
public Transformed<ElementSubGraph> transform( PlannerContext plannerContext, ElementGraph rootGraph ) { Transformed<ElementSubGraph> transformed = new Transformed<>( plannerContext, this, subGraphMatcher, rootGraph ); try { Transformed contractedTransformed = graphTransformer.transform( plannerContext, rootGraph ); // contracted graph transform transformed.addChildTransform( contractedTransformed ); // apply contracted sub-graph matcher to get the bounded sub-graph of the original graph ElementGraph contractedGraph = contractedTransformed.getEndGraph(); Match match = findAllPrimaries ? subGraphFinder.findAllMatches( plannerContext, contractedGraph ) : subGraphFinder.findFirstMatch( plannerContext, contractedGraph ); if( !match.foundMatch() ) return transformed; ElementGraph contractedSubGraph = match.getMatchedGraph(); ElementSubGraph resultSubGraph = asSubGraphOf( rootGraph, contractedSubGraph ); // the bounded sub-graph of the rootGraph transformed.setEndGraph( resultSubGraph ); return transformed; } catch( Throwable throwable ) { throw new TransformException( throwable, transformed ); } }
@Test public void testFind2() { ElementGraph graph = new HashJoinSameSourceGraph(); graph = new ContractedTransformer( new SyncPipeExpressionGraph() ).transform( graph ).getEndGraph(); FlowElementExpression sharedTap = new FlowElementExpression( Tap.class, TypeExpression.Topo.SplitOnly ); FlowElementExpression sharedHashJoin = new FlowElementExpression( HashJoin.class ); ExpressionGraph expressionGraph = new ExpressionGraph() .arc( sharedTap, ScopeExpression.ALL, sharedHashJoin ); GraphFinder graphFinder = new GraphFinder( expressionGraph ); Match match = graphFinder.findFirstMatch( graph ); match.getMatchedGraph().writeDOT( getPlanPath() + "/match.dot" ); }
@Test public void testFind() { ElementGraph graph = new HashJoinSameSourceGraph(); graph = new ContractedTransformer( new SyncPipeExpressionGraph() ).transform( graph ).getEndGraph(); FlowElementExpression SHARED_TAP = new FlowElementExpression( Tap.class, TypeExpression.Topo.SplitOnly ); FlowElementExpression SHARED_HASHJOIN = new FlowElementExpression( HashJoin.class ); ExpressionGraph expressionGraph = new ExpressionGraph() .arcs( SHARED_TAP, SHARED_HASHJOIN ) .arcs( SHARED_TAP, SHARED_HASHJOIN ); GraphFinder graphFinder = new GraphFinder( expressionGraph ); Match match = graphFinder.findFirstMatch( graph ); match.getMatchedGraph().writeDOT( getPlanPath() + "/match.dot" ); }