public Transformed<ElementSubGraph> transform( PlannerContext plannerContext, ElementGraph rootGraph )
{
Transformed<ElementSubGraph> transformed = new Transformed<>( plannerContext, this, subGraphMatcher, rootGraph );
try
{
Transformed contractedTransformed = graphTransformer.transform( plannerContext, rootGraph );
transformed.addChildTransform( contractedTransformed );
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 );
transformed.setEndGraph( resultSubGraph );
return transformed;
}
catch( Throwable throwable )
{
throw new TransformException( throwable, transformed );
}
}