Class Columns

  • All Implemented Interfaces:
    java.lang.Iterable<ColumnMetadata>, java.util.Collection<ColumnMetadata>

    public class Columns
    extends java.util.AbstractCollection<ColumnMetadata>
    implements java.util.Collection<ColumnMetadata>
    An immutable and sorted list of (non-PK) columns for a given table.

    Note that in practice, it will either store only static columns, or only regular ones. When we need both type of columns, we use a RegularAndStaticColumns object.

    • Method Detail

      • of

        public static Columns of​(ColumnMetadata c)
        Creates a Columns holding only the one column provided.
        Parameters:
        c - the column for which to create a Columns object.
        Returns:
        the newly created Columns containing only c.
      • from

        public static Columns from​(Row row)
        Returns a new Columns object holing the same columns as the provided Row.
        Parameters:
        row - the row from which to create the new Columns.
        Returns:
        the newly created Columns containing the columns from row.
      • from

        public static Columns from​(java.util.Collection<ColumnMetadata> s)
        Returns a new Columns object holding the same columns than the provided set. This method assumes nothing about the order of s.
        Parameters:
        s - the set from which to create the new Columns.
        Returns:
        the newly created Columns containing the columns from s.
      • isEmpty

        public boolean isEmpty()
        Whether this columns is empty.
        Specified by:
        isEmpty in interface java.util.Collection<ColumnMetadata>
        Overrides:
        isEmpty in class java.util.AbstractCollection<ColumnMetadata>
        Returns:
        whether this columns is empty.
      • simpleColumnCount

        public int simpleColumnCount()
        The number of simple columns in this object.
        Returns:
        the number of simple columns in this object.
      • complexColumnCount

        public int complexColumnCount()
        The number of complex columns (non-frozen collections, udts, ...) in this object.
        Returns:
        the number of complex columns in this object.
      • size

        public int size()
        The total number of columns in this object.
        Specified by:
        size in interface java.util.Collection<ColumnMetadata>
        Specified by:
        size in class java.util.AbstractCollection<ColumnMetadata>
        Returns:
        the total number of columns in this object.
      • hasSimple

        public boolean hasSimple()
        Whether this objects contains simple columns.
        Returns:
        whether this objects contains simple columns.
      • hasComplex

        public boolean hasComplex()
        Whether this objects contains complex columns.
        Returns:
        whether this objects contains complex columns.
      • getSimple

        public ColumnMetadata getSimple​(int i)
        Returns the ith simple column of this object.
        Parameters:
        i - the index for the simple column to fectch. This must satisfy 0 <= i < simpleColumnCount().
        Returns:
        the ith simple column in this object.
      • getComplex

        public ColumnMetadata getComplex​(int i)
        Returns the ith complex column of this object.
        Parameters:
        i - the index for the complex column to fectch. This must satisfy 0 <= i < complexColumnCount().
        Returns:
        the ith complex column in this object.
      • simpleIdx

        public int simpleIdx​(ColumnMetadata c)
        The index of the provided simple column in this object (if it contains the provided column).
        Parameters:
        c - the simple column for which to return the index of.
        Returns:
        the index for simple column c if it is contains in this object
      • complexIdx

        public int complexIdx​(ColumnMetadata c)
        The index of the provided complex column in this object (if it contains the provided column).
        Parameters:
        c - the complex column for which to return the index of.
        Returns:
        the index for complex column c if it is contains in this object
      • contains

        public boolean contains​(ColumnMetadata c)
        Whether the provided column is contained by this object.
        Parameters:
        c - the column to check presence of.
        Returns:
        whether c is contained by this object.
      • mergeTo

        public Columns mergeTo​(Columns other)
        Returns the result of merging this Columns object with the provided one.
        Parameters:
        other - the other Columns to merge this object with.
        Returns:
        the result of merging/taking the union of this and other. The returned object may be one of the operand and that operand is a subset of the other operand.
      • containsAll

        public boolean containsAll​(java.util.Collection<?> other)
        Whether this object is a superset of the provided other Columns object.
        Specified by:
        containsAll in interface java.util.Collection<ColumnMetadata>
        Overrides:
        containsAll in class java.util.AbstractCollection<ColumnMetadata>
        Parameters:
        other - the other object to test for inclusion in this object.
        Returns:
        whether all the columns of other are contained by this object.
      • simpleColumns

        public java.util.Iterator<ColumnMetadata> simpleColumns()
        Iterator over the simple columns of this object.
        Returns:
        an iterator over the simple columns of this object.
      • complexColumns

        public java.util.Iterator<ColumnMetadata> complexColumns()
        Iterator over the complex columns of this object.
        Returns:
        an iterator over the complex columns of this object.
      • selectOrderIterator

        public java.util.Iterator<ColumnMetadata> selectOrderIterator()
        An iterator that returns the columns of this object in "select" order (that is in global alphabetical order, where the "normal" iterator returns simple columns first and the complex second).
        Returns:
        an iterator returning columns in alphabetical order.
      • without

        public Columns without​(ColumnMetadata column)
        Returns the equivalent of those columns but with the provided column removed.
        Parameters:
        column - the column to remove.
        Returns:
        newly allocated columns containing all the columns of this expect for column.
      • inOrderInclusionTester

        public java.util.function.Predicate<ColumnMetadata> inOrderInclusionTester()
        Returns a predicate to test whether columns are included in this Columns object, assuming that tes tested columns are passed to the predicate in sorted order.
        Returns:
        a predicate to test the inclusion of sorted columns in this object.
      • digest

        public void digest​(Digest digest)
      • apply

        public void apply​(java.util.function.Consumer<ColumnMetadata> function)
        Apply a function to each column definition in forwards or reversed order.
        Parameters:
        function -
      • equals

        public boolean equals​(java.lang.Object other)
        Specified by:
        equals in interface java.util.Collection<ColumnMetadata>
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface java.util.Collection<ColumnMetadata>
        Overrides:
        hashCode in class java.lang.Object
      • unsharedHeapSize

        public long unsharedHeapSize()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.util.AbstractCollection<ColumnMetadata>