Package uk.ac.starlink.ttools.taplint
Class ColumnMetadataStage
java.lang.Object
uk.ac.starlink.ttools.taplint.ColumnMetadataStage
- All Implemented Interfaces:
Stage
Validation stage which checks all actual results (SELECT *) against
declared metadata.
- Since:
- 7 Jul 2011
- Author:
- Mark Taylor
-
Constructor Summary
ConstructorsConstructorDescriptionColumnMetadataStage
(TapRunner tapRunner, MetadataHolder metaHolder, int maxTables) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionReturns a short one-line description of this stage.static String
normaliseColumnName
(String colName) Returns the essence of a column name.void
Performs the validation checks for this stage.void
setMaxTestTables
(int maxTables) Resets the limit on the number of tables to test.
-
Constructor Details
-
ColumnMetadataStage
Constructor.- Parameters:
tapRunner
- object that can run TAP queriesmetaHolder
- provides table metadata at run timemaxTables
- limit on the number of tables to test, or <=0 for no limit
-
-
Method Details
-
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
Description copied from interface:Stage
Returns a short one-line description of this stage.- Specified by:
getDescription
in interfaceStage
- Returns:
- description in imperative mood
-
run
Description copied from interface:Stage
Performs the validation checks for this stage. -
normaliseColumnName
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
-