11package io .cdap .plugin .gcp .bigquery .relational ;
22
3+ import io .cdap .cdap .etl .api .engine .sql .StandardSQLCapabilities ;
34import io .cdap .cdap .etl .api .relational .Capability ;
45import io .cdap .cdap .etl .api .relational .CoreExpressionCapabilities ;
56import io .cdap .cdap .etl .api .relational .Expression ;
1213import io .cdap .cdap .etl .api .relational .StringExpressionFactoryType ;
1314import io .cdap .plugin .gcp .bigquery .sqlengine .builder .BigQueryBaseSQLBuilder ;
1415
15- import java .util .Arrays ;
16+ import java .util .Collections ;
1617import java .util .HashSet ;
1718import java .util .Set ;
1819
2223 */
2324public class SQLExpressionFactory implements ExpressionFactory <String > {
2425
26+ private static final Set <Capability > CAPABILITIES = Collections .unmodifiableSet (
27+ new HashSet <Capability >() {{
28+ add (StringExpressionFactoryType .SQL );
29+ add (StandardSQLCapabilities .BIGQUERY );
30+ add (CoreExpressionCapabilities .CAN_GET_QUALIFIED_DATASET_NAME );
31+ add (CoreExpressionCapabilities .CAN_GET_QUALIFIED_COLUMN_NAME );
32+ add (CoreExpressionCapabilities .CAN_SET_DATASET_ALIAS );
33+ }});
34+
2535 /**
2636 * Gets the expression factory type, which in this case is SQL.
2737 *
@@ -46,14 +56,11 @@ public Expression compile(String expression) {
4656 /**
4757 * Get the set of Capabilities supported, which in this case is SQL.
4858 *
49- * @return A single capability, {@link StringExpressionFactoryType}. SQL.
59+ * @return a set containing all capabilities supported by this SQL engine .
5060 */
5161 @ Override
5262 public Set <Capability > getCapabilities () {
53- return new HashSet <>(Arrays .asList (StringExpressionFactoryType .SQL ,
54- CoreExpressionCapabilities .CAN_GET_QUALIFIED_DATASET_NAME ,
55- CoreExpressionCapabilities .CAN_GET_QUALIFIED_COLUMN_NAME ,
56- CoreExpressionCapabilities .CAN_SET_DATASET_ALIAS ));
63+ return CAPABILITIES ;
5764 }
5865
5966 /**
@@ -79,7 +86,7 @@ public ExtractableExpression<String> getQualifiedDataSetName(Relation relation)
7986 * The resulting expression will be invalid if the relation is not a {@link BigQueryRelation}
8087 * or the column does not exist in this relation.
8188 * @param relation supplied relation.
82- * @param column column name.
89+ * @param column column name.
8390 * @return valid containing the column name wrapped in quotes; or invalid expression.
8491 */
8592 @ Override
0 commit comments