org.apache.solr.client.solrj.io.stream

## Class JoinStream

- java.lang.Object
- - org.apache.solr.client.solrj.io.stream.TupleStream
  - - org.apache.solr.client.solrj.io.stream.JoinStream

- All Implemented Interfaces:
    Closeable, Serializable, AutoCloseable, Expressible
  Direct Known Subclasses:
    BiJoinStream

      public abstract class JoinStream
      extends TupleStream
      implements Expressible

  Defines a JoinStream which can hold N streams, all joined with the same equalitor
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected StreamEqualitor` | `eq`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JoinStream(StreamEqualitor eq, TupleStream first, TupleStream second, TupleStream... others)`
    `JoinStream(StreamExpression expression, StreamFactory factory)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<TupleStream>` | `children()`
    `void` | `close()`
    `int` | `getCost()`
    `PushBackStream` | `getStream(int idx)`
    `protected boolean` | `isValidTupleOrder()`
    `protected Tuple` | `loadEqualTupleGroup(PushBackStream stream, LinkedList<Tuple> group, StreamComparator groupComparator)` Given the stream, start from beginning and load group with all tuples that are equal to the first in stream (including the first one in the stream).
    `void` | `open()`
    `void` | `setStreamContext(StreamContext context)`
    `Explanation` | `toExplanation(StreamFactory factory)` Returns an explanation about the stream object
    `StreamExpression` | `toExpression(StreamFactory factory)`
    `protected abstract void` | `validateTupleOrder()`

    - ### Methods inherited from class org.apache.solr.client.solrj.io.stream.TupleStream

      `getStreamNodeId, getStreamSort, read, writeStreamClose, writeStreamOpen`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### eq

          protected StreamEqualitor eq

  - ### Constructor Detail

    - #### JoinStream

          public JoinStream(StreamEqualitor eq,
                            TupleStream first,
                            TupleStream second,
                            TupleStream... others)

    - #### JoinStream

          public JoinStream(StreamExpression expression,
                            StreamFactory factory)
                     throws IOException

      Throws:
        `IOException`

  - ### Method Detail

    - #### validateTupleOrder

          protected abstract void validateTupleOrder()
                                              throws IOException

      Throws:
        `IOException`

    - #### toExpression

          public StreamExpression toExpression(StreamFactory factory)
                                        throws IOException

      Specified by:
        `toExpression` in interface `Expressible`
      Throws:
        `IOException`

    - #### toExplanation

          public Explanation toExplanation(StreamFactory factory)
                                    throws IOException

      Description copied from interface: `Expressible`
      Returns an explanation about the stream object
      Specified by:
        `toExplanation` in interface `Expressible`
      Specified by:
        `toExplanation` in class `TupleStream`
      Parameters:
        `factory` - Stream factory for this, contains information about the function name
      Returns:
        Explanation about this stream object containing explanations of any child stream objects
      Throws:
        `IOException` - throw on any error

    - #### setStreamContext

          public void setStreamContext(StreamContext context)

      Specified by:
        `setStreamContext` in class `TupleStream`

    - #### open

          public void open()
                    throws IOException

      Specified by:
        `open` in class `TupleStream`
      Throws:
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `TupleStream`
      Throws:
        `IOException`

    - #### children

          public List<TupleStream> children()

      Specified by:
        `children` in class `TupleStream`

    - #### getStream

          public PushBackStream getStream(int idx)

    - #### isValidTupleOrder

          protected boolean isValidTupleOrder()

    - #### loadEqualTupleGroup

          protected Tuple loadEqualTupleGroup(PushBackStream stream,
                                              LinkedList<Tuple> group,
                                              StreamComparator groupComparator)
                                       throws IOException

      Given the stream, start from beginning and load group with all tuples that are equal to the first in stream (including the first one in the stream). All matched tuples are removed from the stream. Result is at least one tuple will be read from the stream and 0 or more tuples will exist in the group. If the first tuple is EOF then the group will have 0 items. Else it will have at least one item. The first group member is returned.
      Parameters:
        `group` - - should be empty
      Throws:
        `IOException`

    - #### getCost

          public int getCost()

      Overrides:
        `getCost` in class `TupleStream`

Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.