public int[] getPathFor( ElementGraph parent ) { ResultTree.Path incomingEdge = resultTree.getIncomingEdge( parent ); if( incomingEdge == null ) return new int[ 0 ]; return incomingEdge.getOrdinals(); }
public int[] getPathFor( ElementGraph parent, ElementGraph child ) { return resultTree.getEdge( parent, child ).getOrdinals(); }
/** * Method enableDebugLogging forces log4j to emit DEBUG level stats for the planner classes. * <p> * Use {@link #restoreLogging()} to resume normal logging levels. * <p> * For planner tracing, see {@link cascading.flow.planner.FlowPlanner} properties. */ public void enableDebugLogging() { logLevels = RuleLogUtil.enableDebugLogging(); }
private void markResult( GraphResult graphResult, Path path ) { if( graphResult instanceof Transformed ) markTransformed( (Transformed) graphResult, path ); else if( graphResult instanceof Asserted ) markAsserted( (Asserted) graphResult, path ); else if( graphResult instanceof Partitions ) markPartitioned( (Partitions) graphResult, path ); }
public Partitions partition( PlannerContext plannerContext, ElementGraph elementGraph, Collection<FlowElement> excludes ) { String[] logLevels = enableLogging( logLevel ); try { return performPartition( plannerContext, elementGraph, excludes ); } finally { restoreLogging( logLevels ); } }
private void writeTransformTrace( RuleResult ruleResult, PlanPhase phase, Rule rule, ElementGraph parent, ElementGraph child, GraphResult result ) { if( traceWriter.isTransformTraceDisabled() ) return; int[] path = child != null ? ruleResult.getPathFor( parent, child ) : ruleResult.getPathFor( parent ); traceWriter.writeTransformPlan( registry.getName(), phase, rule, path, result ); } }
private void markAsserted( Asserted asserted, Path path ) { if( asserted.getFirstAnchor() != null ) markFolder( path, RED ); }
public boolean isTransformTraceDisabled() { return getPlanTransformTracePath() == null; }
public void restoreLogging() { if( logLevels != null ) RuleLogUtil.restoreLogging( logLevels ); }
public boolean isTransformTraceEnabled() { return !isTransformTraceDisabled(); }
public void setLevelResults( ProcessLevel level, ElementGraph parent, List<? extends ElementGraph> elementGraphs ) { levelParents.get( level ).add( parent ); resultTree.setChildren( parent, elementGraphs ); }
public ResultTree() { graph = new SimpleDirectedGraph<>( new PathFactory() ); ( (PathFactory) graph.getEdgeFactory() ).tree = this; }
public static String[] enableLogging( LogLevel level ) { if( level == null ) return null; return LogUtil.setLog4jLevel( CONTEXTS, level.toString() ); }
@Override public Transformed<ElementGraph> transform( PlannerContext plannerContext, ElementGraph rootGraph ) { String[] logLevels = enableLogging( logLevel ); try { return performTransform( plannerContext, rootGraph ); } finally { restoreLogging( logLevels ); } }
private void markPartitioned( Partitions partition, Path path ) { String color = null; if( partition.hasContractedMatches() ) color = ORANGE; if( partition.hasSubGraphs() ) color = GREEN; markFolder( path, color ); }
public Path getIncomingEdge( ElementGraph parent ) { return Util.getFirst( graph.incomingEdgesOf( new Delegate( parent ) ) ); } }
protected Path getFullTransformTracePath( String registryName ) { Path planTransformTracePath = getPlanTransformTracePath(); if( planTransformTracePath == null ) return null; return planTransformTracePath.resolve( registryName ); }
private void markTransformed( Transformed transformed, Path path ) { if( transformed.getEndGraph() != null && !transformed.getBeginGraph().equals( transformed.getEndGraph() ) ) markFolder( path, GREEN ); }
public void setChildren( ElementGraph parent, List<? extends ElementGraph> children ) { Delegate parentDelegate = new Delegate( parent ); if( !graph.addVertex( parentDelegate ) ) graph.removeAllVertices( Graphs.successorListOf( graph, parentDelegate ) ); for( ElementGraph child : children ) { Delegate childDelegate = new Delegate( child ); graph.addVertex( childDelegate ); graph.addEdge( parentDelegate, childDelegate ); } }