Class ColumnMetadataStage

  • All Implemented Interfaces:
    Stage

    public class ColumnMetadataStage
    extends java.lang.Object
    implements Stage
    Validation stage which checks all actual results (SELECT *) against declared metadata.
    Since:
    7 Jul 2011
    Author:
    Mark Taylor
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String getDescription()
      Returns a short one-line description of this stage.
      static java.lang.String normaliseColumnName​(java.lang.String colName)
      Returns the essence of a column name.
      void run​(Reporter reporter, uk.ac.starlink.vo.TapService tapService)
      Performs the validation checks for this stage.
      void setMaxTestTables​(int maxTables)
      Resets the limit on the number of tables to test.
      • Methods inherited from class java.lang.Object

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

      • ColumnMetadataStage

        public ColumnMetadataStage​(TapRunner tapRunner,
                                   MetadataHolder metaHolder,
                                   int maxTables)
        Constructor.
        Parameters:
        tapRunner - object that can run TAP queries
        metaHolder - provides table metadata at run time
        maxTables - limit on the number of tables to test, or <=0 for no limit
    • Method Detail

      • setMaxTestTables

        public void setMaxTestTables​(int maxTables)
        Resets the limit on the number of tables to test.
        Parameters:
        maxTables - limit on the number of tables to test, or <=0 for no limit
      • getDescription

        public java.lang.String getDescription()
        Description copied from interface: Stage
        Returns a short one-line description of this stage.
        Specified by:
        getDescription in interface Stage
        Returns:
        description in imperative mood
      • run

        public void run​(Reporter reporter,
                        uk.ac.starlink.vo.TapService tapService)
        Description copied from interface: Stage
        Performs the validation checks for this stage.
        Specified by:
        run in interface Stage
        Parameters:
        reporter - destination for validation messages
        tapService - TAP service description
      • normaliseColumnName

        public static java.lang.String normaliseColumnName​(java.lang.String colName)
        Returns the essence of a column name. The result is the string that ought to be equal to the name of the same column when it appears somewhere else.

        Currently, this does two things: flattens case and unquotes quoted names (delimited identifiers). This is a bit tricky or debatable or controversial. In general unquoting column names is not supposed to be something the client can do for itself, because there may be strange server-specific rules. But it's pretty clear how it would be done if it could be done, and pragmatically it doesn't make sense to flag an error if a column declared in the metadata with name '"size"' comes back in a result table with name 'size'. So this is probably the right thing to do for comparisons.

        Parameters:
        colName - column name
        Returns:
        normalised column name