Class ADQLColumn

  • All Implemented Interfaces:
    ADQLObject, ADQLOperand, UnknownType

    public class ADQLColumn
    extends java.lang.Object
    implements ADQLOperand, UnknownType
    Represents the complete (literal) reference to a column ({schema(s)}.{table}.{column}).
    Version:
    1.4 (03/2016)
    Author:
    Grégory Mantelet (CDS;ARI)
    • Constructor Summary

      Constructors 
      Constructor Description
      ADQLColumn​(ADQLColumn toCopy)
      Builds a Column by copying the given one.
      ADQLColumn​(java.lang.String columnRef)
      Builds a Column with the complete reference to a column ({schema(s)}.{table}.{column}).
      ADQLColumn​(java.lang.String tableName, java.lang.String columnName)
      Builds a column with the given column name and the given table name.
      ADQLColumn​(java.lang.String schema, java.lang.String table, java.lang.String column)
      Builds a column with the given column name, table name and schema name.
      ADQLColumn​(java.lang.String catalog, java.lang.String schema, java.lang.String table, java.lang.String column)
      Builds a column with the given column name, table name, schema name and catalog name.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      ADQLIterator adqlIterator()
      Gets an iterator on the intern ADQL objects.
      ADQLTable getAdqlTable()
      Gets the ADQLTable from which this column is supposed to come.
      byte getCaseSensitive()
      Gets the whole case sensitivity of this ADQL column.
      java.lang.String getCatalogName()
      Gets the name of the catalog which contains this column.
      java.lang.String getColumnName()
      Gets the name of this column.
      ADQLObject getCopy()
      Gets a (deep) copy of this ADQL object.
      DBColumn getDBLink()
      Gets the corresponding DBColumn.
      char getExpectedType()
      Get the type expected by the syntactic parser according to the context.
      java.lang.String getFullColumnName()
      Gets the full name of this column (catalogName .
      java.lang.StringBuffer getFullColumnPrefix()
      Gets the full column prefix (catalogName .
      java.lang.String getName()
      Gets the name of this object in ADQL.
      TextPosition getPosition()
      Gets the position of this object/token in the ADQL query.
      java.lang.String getSchemaName()
      Gets the name of the schema which contains this column.
      java.lang.String getTableName()
      Gets the name of the table which contains this column.
      boolean isCaseSensitive()
      Indicates whether all fields (catalog, schema, table and column) are case sensitive.
      boolean isCaseSensitive​(IdentifierField field)
      Indicates whether the specified field (catalog, schema, table or column) is case sensitive or not.
      boolean isGeometry()
      Tell whether this operand is a geometrical region or not.
      boolean isNumeric()
      Tell whether this operand is numeric or not.
      boolean isString()
      Tell whether this operand is a string or not.
      protected java.lang.String normalizeName​(java.lang.String name, IdentifierField field)
      Lets normalizing any catalog/schema/table name or alias.
      void setAdqlTable​(ADQLTable adqlTable)
      Sets the ADQLTable from which this column is supposed to come.
      void setCaseSensitive​(boolean sensitive)
      Sets the case sensitivity of all fields (catalog, schema, table and column).
      void setCaseSensitive​(byte sensitivity)
      Sets the whole case sensitivity of this ADQL column.
      void setCaseSensitive​(IdentifierField field, boolean sensitive)
      Sets the case sensitivity of the specified field (catalog, schema, table, column).
      void setCatalogName​(java.lang.String catalog)
      Sets the name of the catalog which contains this column.
      void setColumn​(java.lang.String columnRef)
      Updates the whole Column according to the given column reference ({catalog}.{schema}.{table}.{column}).
      void setColumnName​(java.lang.String columnName)
      Changes the name of the column ({column} in {schema(s)}.{table}.{column}).
      void setDBLink​(DBColumn dbLink)
      Sets the DBColumn corresponding to this ADQLColumn.
      void setExpectedType​(char c)
      Set the type expected for this operand.
      void setPosition​(TextPosition pos)
      Sets the position at which this ADQLColumn has been found in the original ADQL query string.
      void setSchemaName​(java.lang.String schema)
      Sets the name of the schema which contains this column.
      void setTableName​(java.lang.String tableName)
      Sets the name of the table which contains this column.
      java.lang.String toADQL()
      Gets the ADQL expression of this object.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ADQLColumn

        public ADQLColumn​(java.lang.String columnRef)
        Builds a Column with the complete reference to a column ({schema(s)}.{table}.{column}).
        Parameters:
        columnRef - The complete reference to a column.
        See Also:
        setColumn(String)
      • ADQLColumn

        public ADQLColumn​(java.lang.String tableName,
                          java.lang.String columnName)
        Builds a column with the given column name and the given table name.
        Parameters:
        tableName - Name of the table.
        columnName - Name of the column.
        See Also:
        setTableName(String), setColumnName(String)
      • ADQLColumn

        public ADQLColumn​(java.lang.String schema,
                          java.lang.String table,
                          java.lang.String column)
        Builds a column with the given column name, table name and schema name.
        Parameters:
        schema - Name of the schema.
        table - Name of the table.
        column - Name of the column.
        See Also:
        ADQLColumn(String, String), setSchemaName(String)
      • ADQLColumn

        public ADQLColumn​(java.lang.String catalog,
                          java.lang.String schema,
                          java.lang.String table,
                          java.lang.String column)
        Builds a column with the given column name, table name, schema name and catalog name.
        Parameters:
        catalog - Name of the catalog.
        schema - Name of the schema.
        table - Name of the table.
        column - Name of the column.
        See Also:
        ADQLColumn(String, String), setSchemaName(String)
      • ADQLColumn

        public ADQLColumn​(ADQLColumn toCopy)
        Builds a Column by copying the given one.
        Parameters:
        toCopy - The Column to copy.
    • Method Detail

      • normalizeName

        protected java.lang.String normalizeName​(java.lang.String name,
                                                 IdentifierField field)
        Lets normalizing any catalog/schema/table name or alias. If the name is surrounded by double-quotes, they are removed and the corresponding field will be declared as case sensitive.
        Parameters:
        name - Name to normalize.
        Returns:
        The normalized name.
      • getPosition

        public final TextPosition getPosition()
        Description copied from interface: ADQLObject

        Gets the position of this object/token in the ADQL query.

        By default, no position should be set.

        Specified by:
        getPosition in interface ADQLObject
        Returns:
        Position of this ADQL item in the ADQL query, or NULL if not written originally in the query (for example, if added afterwards.
      • setPosition

        public void setPosition​(TextPosition pos)
        Sets the position at which this ADQLColumn has been found in the original ADQL query string.
        Parameters:
        pos - Position of this ADQLColumn.
      • getCatalogName

        public final java.lang.String getCatalogName()
        Gets the name of the catalog which contains this column.
        Returns:
        Catalog name.
      • setCatalogName

        public final void setCatalogName​(java.lang.String catalog)
        Sets the name of the catalog which contains this column.
        Parameters:
        catalog - New name of the catalog.
      • getSchemaName

        public final java.lang.String getSchemaName()
        Gets the name of the schema which contains this column.
        Returns:
        Schema name.
      • setSchemaName

        public final void setSchemaName​(java.lang.String schema)
        Sets the name of the schema which contains this column.
        Parameters:
        schema - New name of the schema.
      • getTableName

        public final java.lang.String getTableName()
        Gets the name of the table which contains this column.
        Returns:
        Table name.
      • setTableName

        public final void setTableName​(java.lang.String tableName)
        Sets the name of the table which contains this column.
        Parameters:
        tableName - New name of the table.
      • getColumnName

        public final java.lang.String getColumnName()
        Gets the name of this column.
        Returns:
        Its column name.
      • getFullColumnName

        public final java.lang.String getFullColumnName()
        Gets the full name of this column (catalogName . schemaName . tableName . columnName) by respecting the case sensitivity of each field (if case sensitive, double-quotes will surround the concerned fields name).
        Returns:
        Its full name.
        See Also:
        getFullColumnPrefix()
      • getFullColumnPrefix

        public final java.lang.StringBuffer getFullColumnPrefix()
        Gets the full column prefix (catalogName . schemaName . tableName) by respecting the case sensitivity of each field (if case sensitive, double-quotes will surround the concerned fields name).
        Returns:
        Its full prefix.
      • setColumnName

        public final void setColumnName​(java.lang.String columnName)
        Changes the name of the column ({column} in {schema(s)}.{table}.{column}).
        Parameters:
        columnName - The new column name.
      • setColumn

        public final void setColumn​(java.lang.String columnRef)
        Updates the whole Column according to the given column reference ({catalog}.{schema}.{table}.{column}).
        Parameters:
        columnRef - The complete column reference ({catalog}.{schema}.{table}.{column}).
      • isCaseSensitive

        public final boolean isCaseSensitive​(IdentifierField field)
        Indicates whether the specified field (catalog, schema, table or column) is case sensitive or not.
        Parameters:
        field - A field (catalog, schema, table or column).
        Returns:
        true if the specified field is case sensitive, false otherwise.
        See Also:
        IdentifierField, IdentifierField.isCaseSensitive(byte)
      • setCaseSensitive

        public final void setCaseSensitive​(IdentifierField field,
                                           boolean sensitive)
        Sets the case sensitivity of the specified field (catalog, schema, table, column).
        Parameters:
        field - The field for which the case sensitivity must be updated.
        sensitive - true if the specified field must be case sensitive, false otherwise.
        See Also:
        IdentifierField, IdentifierField.setCaseSensitive(byte, boolean)
      • isCaseSensitive

        public final boolean isCaseSensitive()
        Indicates whether all fields (catalog, schema, table and column) are case sensitive.
        Returns:
        true if all fields are case sensitive, false otherwise.
        See Also:
        IdentifierField.isFullCaseSensitive(byte)
      • setCaseSensitive

        public final void setCaseSensitive​(boolean sensitive)
        Sets the case sensitivity of all fields (catalog, schema, table and column).
        Parameters:
        sensitive - true if all fields must be case sensitive, false otherwise.
        See Also:
        IdentifierField.getFullCaseSensitive(boolean)
      • getCaseSensitive

        public final byte getCaseSensitive()
        Gets the whole case sensitivity of this ADQL column.
        Returns:
        Its new case sensitivity (one bit per fields).
        See Also:
        IdentifierField
      • setCaseSensitive

        public final void setCaseSensitive​(byte sensitivity)
        Sets the whole case sensitivity of this ADQL column.
        Parameters:
        sensitivity - Its new case sensitivity (one bit per fields).
        See Also:
        IdentifierField
      • setDBLink

        public final void setDBLink​(DBColumn dbLink)

        Sets the DBColumn corresponding to this ADQLColumn.

        By default, this field is automatically filled by DBChecker.

        Parameters:
        dbLink - Its corresponding DBColumn.
      • getAdqlTable

        public final ADQLTable getAdqlTable()
        Gets the ADQLTable from which this column is supposed to come.
        Returns:
        Its source table.
      • getExpectedType

        public char getExpectedType()
        Description copied from interface: UnknownType
        Get the type expected by the syntactic parser according to the context.
        Specified by:
        getExpectedType in interface UnknownType
        Returns:
        Expected type: 'n' or 'N' for numeric, 's' or 'S' for string, 'g' or 'G' for geometry.
      • setExpectedType

        public void setExpectedType​(char c)
        Description copied from interface: UnknownType
        Set the type expected for this operand.
        Specified by:
        setExpectedType in interface UnknownType
        Parameters:
        c - Expected type: 'n' or 'N' for numeric, 's' or 'S' for string, 'g' or 'G' for geometry.
      • isNumeric

        public boolean isNumeric()
        Description copied from interface: ADQLOperand
        Tell whether this operand is numeric or not.
        Specified by:
        isNumeric in interface ADQLOperand
        Returns:
        true if this operand is numeric, false otherwise.
      • isString

        public boolean isString()
        Description copied from interface: ADQLOperand
        Tell whether this operand is a string or not.
        Specified by:
        isString in interface ADQLOperand
        Returns:
        true if this operand is a string, false otherwise.
      • isGeometry

        public boolean isGeometry()
        Description copied from interface: ADQLOperand
        Tell whether this operand is a geometrical region or not.
        Specified by:
        isGeometry in interface ADQLOperand
        Returns:
        true if this operand is a geometry, false otherwise.
      • getCopy

        public ADQLObject getCopy()
                           throws java.lang.Exception
        Description copied from interface: ADQLObject
        Gets a (deep) copy of this ADQL object.
        Specified by:
        getCopy in interface ADQLObject
        Returns:
        The copy of this ADQL object.
        Throws:
        java.lang.Exception - If there is any error during the copy.
      • getName

        public java.lang.String getName()
        Description copied from interface: ADQLObject
        Gets the name of this object in ADQL.
        Specified by:
        getName in interface ADQLObject
        Returns:
        The name of this ADQL object.
      • toADQL

        public java.lang.String toADQL()
        Description copied from interface: ADQLObject
        Gets the ADQL expression of this object.
        Specified by:
        toADQL in interface ADQLObject
        Returns:
        The corresponding ADQL expression.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object