@Override protected ElementGraph prepareForMatch( ProcessLogger processLogger, Transformed<ElementGraph> transformed, ElementGraph graph ) { if( graphTransformer == null ) return makeAnnotated( graph ); Transformed child = graphTransformer.transform( transformed.getPlannerContext(), graph ); transformed.addChildTransform( child ); ElementGraph endGraph = child.getEndGraph(); return makeAnnotated( endGraph ); }
public ElementGraph getContractedGraph() { if( contractedGraph == null ) { contractedTransformed = contractedTransformer.transform( plannerContext, elementGraph ); contractedGraph = contractedTransformed.getEndGraph(); } return contractedGraph; }
@Override protected Transformed<ElementGraph> transform( PlannerContext plannerContext, ElementGraph graph ) { Transformed transformed = null; if( contractedTransformer != null ) transformed = contractedTransformer.transform( plannerContext, graph ); else if( subGraphTransformer != null ) transformed = subGraphTransformer.transform( plannerContext, graph ); return transformed; }
public Transformed<ElementGraph> performTransform( PlannerContext plannerContext, ElementGraph rootGraph ) { Transformed<ElementGraph> result = new Transformed<>( plannerContext, this, rootGraph ); ElementGraph graphCopy = rootGraph.copyElementGraph(); Transformed<ElementGraph> transformed = graphTransformer.transform( plannerContext, graphCopy ); result.addChildTransform( transformed ); if( transformed.getEndGraph() != null && !rootGraph.equals( transformed.getEndGraph() ) ) result.setEndGraph( transformed.getEndGraph() ); return result; }
@Override public Transformed<E> transform( PlannerContext plannerContext, E rootGraph ) { int maxDepth = plannerContext.getIntProperty( TRANSFORM_RECURSION_DEPTH_MAX, DEFAULT_TRANSFORM_RECURSION_DEPTH_MAX ); Transformed<E> transformed = new Transformed<>( plannerContext, this, expressionGraph, rootGraph ); E result = transform( plannerContext.getLogger(), transformed, rootGraph, maxDepth, 0 ); transformed.setEndGraph( result ); return transformed; }
public RuleTransformer( LogLevel logLevel, PlanPhase phase, RuleExpression ruleExpression ) { this.logLevel = logLevel; this.phase = phase; this.ruleExpression = ruleExpression; if( ruleExpression.getContractionExpression() != null ) contractedTransformer = new ContractedTransformer( ruleExpression.getContractionExpression() ); else contractedTransformer = null; if( ruleExpression.getContractedMatchExpression() != null ) { if( contractedTransformer == null ) throw new IllegalArgumentException( "must have contracted expression if given contracted match expression" ); subGraphTransformer = new SubGraphTransformer( contractedTransformer, ruleExpression.getContractedMatchExpression() ); } else { subGraphTransformer = null; } }
public RuleRemoveBranchTransformer( LogLevel logLevel, PlanPhase phase, RuleExpression ruleExpression ) { super( logLevel, phase, ruleExpression ); if( subGraphTransformer != null ) graphTransformer = new RemoveBranchGraphTransformer( subGraphTransformer, ruleExpression.getMatchExpression() ); else if( contractedTransformer != null ) graphTransformer = new RemoveBranchGraphTransformer( contractedTransformer, ruleExpression.getMatchExpression() ); else graphTransformer = new RemoveBranchGraphTransformer( ruleExpression.getMatchExpression() ); } }
@Override protected boolean requiresRecursiveSearch() { return graphTransformer != null || super.requiresRecursiveSearch(); }
public RuleReplaceFactoryBasedTransformer( PlanPhase phase, RuleExpression ruleExpression, String factoryName ) { super( phase, ruleExpression ); ExpressionGraph matchExpression = ruleExpression.getMatchExpression(); if( subGraphTransformer != null ) graphTransformer = new ReplaceGraphFactoryBasedTransformer( subGraphTransformer, matchExpression, factoryName ); else if( contractedTransformer != null ) graphTransformer = new ReplaceGraphFactoryBasedTransformer( contractedTransformer, matchExpression, factoryName ); else graphTransformer = new ReplaceGraphFactoryBasedTransformer( matchExpression, factoryName ); } }
public String getRuleName() { if( getGraphTransform() instanceof Rule ) return ( (Rule) getGraphTransform() ).getRuleName(); return "none"; }
public RuleInsertionTransformer( LogLevel logLevel, PlanPhase phase, RuleExpression ruleExpression, ElementCapture capture, String factoryName, InsertionGraphTransformer.Insertion insertion ) { super( logLevel, phase, ruleExpression ); if( subGraphTransformer != null ) graphTransformer = new InsertionGraphTransformer( subGraphTransformer, ruleExpression.getMatchExpression(), capture, factoryName, insertion ); else if( contractedTransformer != null ) graphTransformer = new InsertionGraphTransformer( contractedTransformer, ruleExpression.getMatchExpression(), capture, factoryName, insertion ); else graphTransformer = new InsertionGraphTransformer( ruleExpression.getMatchExpression(), capture, factoryName, insertion ); } }
public RuleContractedTransformer( PlanPhase phase, RuleExpression ruleExpression ) { super( phase, ruleExpression ); if( subGraphTransformer != null ) graphTransformer = new ContractedGraphTransformer( subGraphTransformer, ruleExpression.getMatchExpression() ); else if( contractedTransformer != null ) graphTransformer = new ContractedGraphTransformer( contractedTransformer, ruleExpression.getMatchExpression() ); else graphTransformer = new ContractedGraphTransformer( ruleExpression.getMatchExpression() ); } }
@Override public Transformed<ElementGraph> transform( PlannerContext plannerContext, ElementGraph rootGraph ) { return super.transform( plannerContext, new ElementMultiGraph( rootGraph ) ); }
public RuleReplaceTransformer( PlanPhase phase, RuleExpression ruleExpression ) { super( phase, ruleExpression ); if( subGraphTransformer != null ) graphTransformer = new ReplaceGraphTransformer( subGraphTransformer, ruleExpression.getMatchExpression() ); else if( contractedTransformer != null ) graphTransformer = new ReplaceGraphTransformer( contractedTransformer, ruleExpression.getMatchExpression() ); else graphTransformer = new ReplaceGraphTransformer( ruleExpression.getMatchExpression() ); } }
public RuleAnnotationTransformer( PlanPhase phase, RuleExpression ruleExpression, ElementAnnotation annotation ) { super( phase, ruleExpression ); if( subGraphTransformer != null ) graphTransformer = new AnnotateGraphTransformer( subGraphTransformer, ruleExpression.getMatchExpression(), annotation ); else if( contractedTransformer != null ) graphTransformer = new AnnotateGraphTransformer( contractedTransformer, ruleExpression.getMatchExpression(), annotation ); else graphTransformer = new AnnotateGraphTransformer( ruleExpression.getMatchExpression(), annotation ); } }
public void addChildTransform( Transformed transformed ) { if( plannerContext.isTransformTracingEnabled() ) getChildTransforms().add( transformed ); }
private boolean transformGraphInPlaceUsingSafe( Transformed<E> transformed, E graph, Match match ) { try { return transformGraphInPlaceUsing( transformed, graph, match ); } catch( TransformException exception ) { throw exception; } catch( Throwable throwable ) { throw new TransformException( throwable, transformed ); } }
public abstract Transformed<Out> transform( PlannerContext plannerContext, In rootGraph ); }
@Override protected ElementGraph prepareForMatch( ProcessLogger processLogger, Transformed<ElementGraph> transformed, ElementGraph graph ) { if( graphTransformer == null ) return graph; if( processLogger.isDebugEnabled() ) processLogger.logDebug( "transforming with: {}", graphTransformer.getClass().getSimpleName() ); Transformed child = graphTransformer.transform( transformed.getPlannerContext(), graph ); transformed.addChildTransform( child ); return child.getEndGraph(); } }
@Override protected boolean requiresRecursiveSearch() { return graphTransformer != null || super.requiresRecursiveSearch(); }