@Override protected boolean isOuter( int i ) { return !asInner[ i ] && super.isOuter( i ); } }
protected boolean isOuter( int i ) { return closure.isEmpty( i ); }
private void verifyCoGrouper() { if( isJoin() && joiner instanceof BufferJoin ) throw new IllegalArgumentException( "invalid joiner, may not use BufferJoiner in a HashJoin" ); if( joiner == null ) { joiner = new InnerJoin(); return; } if( joiner.numJoins() == -1 ) return; int joins = Math.max( numSelfJoins, keyFieldsMap.size() - 1 ); // joining two streams is one join if( joins != joiner.numJoins() ) throw new IllegalArgumentException( "invalid joiner, only accepts " + joiner.numJoins() + " joins, there are: " + joins ); }
@Override protected void init() { singletons = new List[ closure.size() ]; for( int i = 0; i < singletons.length; i++ ) { if( isOuter( i ) ) singletons[ i ] = Collections.singletonList( Tuple.size( closure.getValueFields()[ i ].size() ) ); } super.init(); }
Pipe pipeLadiesAndGentlemen = new CoGroup(pipeLadies, Fields.NONE, pipeGentlemen, Fields.NONE, new BufferJoin());
private void checkIter() { if (internal == null) { internal = closureLocal.getIterator(iteratorNum); } }
public Tuple next() { if( lastValues == null ) return makeResult( initLastValues() ); for( int i = iterators.length - 1; i >= 0; i-- ) { if( iterators[ i ].hasNext() ) { lastValues[ i ] = (Tuple) iterators[ i ].next(); break; } // reset to first iterators[ i ] = getIterator( i ); lastValues[ i ] = (Tuple) iterators[ i ].next(); } return makeResult( lastValues ); }
public boolean isSelfJoin() { return valueFields.length == 1 && size() != valueFields.length; }
public Iterator<Tuple> getIterator( JoinerClosure closure ) { return new JoinIterator( closure ); }
public Iterator<Tuple> getIterator( JoinerClosure closure ) { return new JoinIterator( closure ); }
public Iterator<Tuple> getIterator( JoinerClosure closure ) { return new JoinIterator( closure ); }
public Iterator<Tuple> getIterator( JoinerClosure closure ) { return new JoinIterator( closure ); }
public Iterator<Tuple> getIterator( JoinerClosure closure ) { return new JoinIterator( closure ); }
@Override protected Iterator getIterator( int i ) { if( singletons[ i ] == null ) // let init() decide return super.getIterator( i ); return singletons[ i ].iterator(); } }
private Tuple makeResult( Tuple[] lastValues ) { Tuples.asModifiable( result ); result = resultBuilder.makeResult( lastValues ); if( LOG.isTraceEnabled() ) LOG.trace( "tuple: {}", result.print() ); return result; }
protected Iterator getIterator( int i ) { return closure.getIterator( i ); }
@Override protected boolean isOuter( int i ) { return i == 0 && super.isOuter( i ); } }