@Override public boolean applies( PlannerContext plannerContext, ElementGraph elementGraph, Scope scope ) { FlowElement edgeSource = elementGraph.getEdgeSource( scope ); FlowElement edgeTarget = elementGraph.getEdgeTarget( scope ); if( !( edgeSource instanceof Hfs ) || !( edgeTarget instanceof Hfs ) ) throw new IllegalStateException( "non Hfs Taps matched" ); Hfs predecessor = (Hfs) edgeSource; Hfs successor = (Hfs) edgeTarget; // does this scheme source what it sinks if( !successor.getScheme().isSymmetrical() ) return false; HadoopPlanner flowPlanner = (HadoopPlanner) plannerContext.getFlowPlanner(); URI tempURIScheme = flowPlanner.getDefaultURIScheme( predecessor ); // temp uses default fs URI successorURIScheme = flowPlanner.getURIScheme( successor ); if( !tempURIScheme.equals( successorURIScheme ) ) return false; // safe, both are symmetrical // should be called after fields are resolved if( !predecessor.getSourceFields().equals( successor.getSourceFields() ) ) return true; return true; } }
@Override public boolean applies( PlannerContext plannerContext, ElementGraph elementGraph, Scope scope ) { FlowElement edgeSource = elementGraph.getEdgeSource( scope ); FlowElement edgeTarget = elementGraph.getEdgeTarget( scope ); if( !( edgeSource instanceof Hfs ) || !( edgeTarget instanceof Hfs ) ) throw new IllegalStateException( "non Hfs Taps matched" ); Hfs predecessor = (Hfs) edgeSource; Hfs successor = (Hfs) edgeTarget; // does this scheme source what it sinks if( !successor.getScheme().isSymmetrical() ) return false; HadoopPlanner flowPlanner = (HadoopPlanner) plannerContext.getFlowPlanner(); URI tempURIScheme = flowPlanner.getDefaultURIScheme( predecessor ); // temp uses default fs URI successorURIScheme = flowPlanner.getURIScheme( successor ); if( !tempURIScheme.equals( successorURIScheme ) ) return false; // safe, both are symmetrical // should be called after fields are resolved if( !predecessor.getSourceFields().equals( successor.getSourceFields() ) ) return true; return true; } }