Class MultiCBuilder

java.lang.Object
org.apache.cassandra.db.MultiCBuilder

public abstract class MultiCBuilder extends Object
Builder that allow to build multiple Clustering/ClusteringBound at the same time.
  • Field Details

    • comparator

      protected final ClusteringComparator comparator
      The table comparator.
    • size

      protected int size
      The number of clustering elements that have been added.
    • built

      protected boolean built
      true if the clusterings have been build, false otherwise.
    • containsNull

      protected boolean containsNull
      true if the clusterings contains some null elements.
    • containsUnset

      protected boolean containsUnset
      true if the composites contains some unset elements.
    • hasMissingElements

      protected boolean hasMissingElements
      true if some empty collection have been added.
  • Constructor Details

  • Method Details

    • create

      public static MultiCBuilder create(ClusteringComparator comparator, boolean forMultipleValues)
      Creates a new empty MultiCBuilder.
    • addElementToAll

      public abstract MultiCBuilder addElementToAll(ByteBuffer value)
      Adds the specified element to all the clusterings.

      If this builder contains 2 clustering: A-B and A-C a call to this method to add D will result in the clusterings: A-B-D and A-C-D.

      Parameters:
      value - the value of the next element
      Returns:
      this MulitCBuilder
    • addEachElementToAll

      public abstract MultiCBuilder addEachElementToAll(List<ByteBuffer> values)
      Adds individually each of the specified elements to the end of all of the existing clusterings.

      If this builder contains 2 clusterings: A-B and A-C a call to this method to add D and E will result in the 4 clusterings: A-B-D, A-B-E, A-C-D and A-C-E.

      Parameters:
      values - the elements to add
      Returns:
      this CompositeBuilder
    • addAllElementsToAll

      public abstract MultiCBuilder addAllElementsToAll(List<List<ByteBuffer>> values)
      Adds individually each of the specified list of elements to the end of all of the existing composites.

      If this builder contains 2 composites: A-B and A-C a call to this method to add [[D, E], [F, G]] will result in the 4 composites: A-B-D-E, A-B-F-G, A-C-D-E and A-C-F-G.

      Parameters:
      values - the elements to add
      Returns:
      this CompositeBuilder
    • checkUpdateable

      protected void checkUpdateable()
    • remainingCount

      public int remainingCount()
      Returns the number of elements that can be added to the clusterings.
      Returns:
      the number of elements that can be added to the clusterings.
    • buildSize

      public abstract int buildSize()
      Returns the current number of results when build() is called
      Returns:
      the current number of build results
    • containsNull

      public boolean containsNull()
      Checks if the clusterings contains null elements.
      Returns:
      true if the clusterings contains null elements, false otherwise.
    • containsUnset

      public boolean containsUnset()
      Checks if the clusterings contains unset elements.
      Returns:
      true if the clusterings contains unset elements, false otherwise.
    • hasMissingElements

      public boolean hasMissingElements()
      Checks if some empty list of values have been added
      Returns:
      true if the clusterings have some missing elements, false otherwise.
    • build

      public abstract NavigableSet<Clustering<?>> build()
      Builds the clusterings.
      Returns:
      the clusterings
    • buildBoundForSlice

      public abstract NavigableSet<ClusteringBound<?>> buildBoundForSlice(boolean isStart, boolean isInclusive, boolean isOtherBoundInclusive, List<ColumnMetadata> columnDefs)
      Builds the ClusteringBounds for slice restrictions.
      Parameters:
      isStart - specify if the bound is a start one
      isInclusive - specify if the bound is inclusive or not
      isOtherBoundInclusive - specify if the other bound is inclusive or not
      columnDefs - the columns of the slice restriction
      Returns:
      the ClusteringBounds
    • buildBound

      public abstract NavigableSet<ClusteringBound<?>> buildBound(boolean isStart, boolean isInclusive)
      Builds the ClusteringBounds
      Parameters:
      isStart - specify if the bound is a start one
      isInclusive - specify if the bound is inclusive or not
      Returns:
      the ClusteringBounds
    • hasRemaining

      public boolean hasRemaining()
      Checks if some elements can still be added to the clusterings.
      Returns:
      true if it is possible to add more elements to the clusterings, false otherwise.