All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.org.apache.calcite.config.CalciteConnectionConfigImpl Maven / Gradle / Ivy

There is a newer version: 5.4.0
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to you under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.hazelcast.org.apache.calcite.config;

import com.hazelcast.org.apache.calcite.avatica.ConnectionConfigImpl;
import com.hazelcast.org.apache.calcite.avatica.util.Casing;
import com.hazelcast.org.apache.calcite.avatica.util.Quoting;
import com.hazelcast.org.apache.calcite.model.JsonSchema;
import com.hazelcast.org.apache.calcite.runtime.ConsList;
import com.hazelcast.org.apache.calcite.sql.SqlOperatorTable;
import com.hazelcast.org.apache.calcite.sql.fun.SqlLibrary;
import com.hazelcast.org.apache.calcite.sql.fun.SqlLibraryOperatorTableFactory;
import com.hazelcast.org.apache.calcite.sql.validate.SqlConformance;
import com.hazelcast.org.apache.calcite.sql.validate.SqlConformanceEnum;

import com.hazelcast.org.checkerframework.checker.nullness.qual.Nullable;
import com.hazelcast.org.checkerframework.checker.nullness.qual.PolyNull;

import java.util.List;
import java.util.Properties;

/** Implementation of {@link CalciteConnectionConfig}. */
public class CalciteConnectionConfigImpl extends ConnectionConfigImpl
    implements CalciteConnectionConfig {
  public CalciteConnectionConfigImpl(Properties properties) {
    super(properties);
  }

  /** Returns a copy of this configuration with one property changed.
   *
   * 

Does not modify this configuration. */ public CalciteConnectionConfigImpl set(CalciteConnectionProperty property, String value) { final Properties newProperties = (Properties) properties.clone(); newProperties.setProperty(property.camelName(), value); return new CalciteConnectionConfigImpl(newProperties); } /** Returns a copy of this configuration with the value of a property * removed. * *

Does not modify this configuration. */ public CalciteConnectionConfigImpl unset(CalciteConnectionProperty property) { final Properties newProperties = (Properties) properties.clone(); newProperties.remove(property.camelName()); return new CalciteConnectionConfigImpl(newProperties); } /** Returns whether a given property has been assigned a value. * *

If not, the value returned for the property will be its default value. */ public boolean isSet(CalciteConnectionProperty property) { return properties.containsKey(property.camelName()); } @Override public boolean approximateDistinctCount() { return CalciteConnectionProperty.APPROXIMATE_DISTINCT_COUNT.wrap(properties) .getBoolean(); } @Override public boolean approximateTopN() { return CalciteConnectionProperty.APPROXIMATE_TOP_N.wrap(properties) .getBoolean(); } @Override public boolean approximateDecimal() { return CalciteConnectionProperty.APPROXIMATE_DECIMAL.wrap(properties) .getBoolean(); } @Override public boolean nullEqualToEmpty() { return CalciteConnectionProperty.NULL_EQUAL_TO_EMPTY.wrap(properties).getBoolean(); } @Override public boolean autoTemp() { return CalciteConnectionProperty.AUTO_TEMP.wrap(properties).getBoolean(); } @Override public boolean materializationsEnabled() { return CalciteConnectionProperty.MATERIALIZATIONS_ENABLED.wrap(properties) .getBoolean(); } @Override public boolean createMaterializations() { return CalciteConnectionProperty.CREATE_MATERIALIZATIONS.wrap(properties) .getBoolean(); } @Override public NullCollation defaultNullCollation() { return CalciteConnectionProperty.DEFAULT_NULL_COLLATION.wrap(properties) .getEnum(NullCollation.class, NullCollation.HIGH); } @Override public @PolyNull T fun(Class operatorTableClass, @PolyNull T defaultOperatorTable) { final String fun = CalciteConnectionProperty.FUN.wrap(properties).getString(); if (fun == null || fun.equals("") || fun.equals("standard")) { return defaultOperatorTable; } final List libraryList = SqlLibrary.parse(fun); final SqlOperatorTable operatorTable = SqlLibraryOperatorTableFactory.INSTANCE.getOperatorTable( ConsList.of(SqlLibrary.STANDARD, libraryList)); return operatorTableClass.cast(operatorTable); } @Override public @Nullable String model() { return CalciteConnectionProperty.MODEL.wrap(properties).getString(); } @Override public Lex lex() { return CalciteConnectionProperty.LEX.wrap(properties).getEnum(Lex.class); } @Override public Quoting quoting() { return CalciteConnectionProperty.QUOTING.wrap(properties) .getEnum(Quoting.class, lex().quoting); } @Override public Casing unquotedCasing() { return CalciteConnectionProperty.UNQUOTED_CASING.wrap(properties) .getEnum(Casing.class, lex().unquotedCasing); } @Override public Casing quotedCasing() { return CalciteConnectionProperty.QUOTED_CASING.wrap(properties) .getEnum(Casing.class, lex().quotedCasing); } @Override public boolean caseSensitive() { return CalciteConnectionProperty.CASE_SENSITIVE.wrap(properties) .getBoolean(lex().caseSensitive); } @Override public @PolyNull T parserFactory(Class parserFactoryClass, @PolyNull T defaultParserFactory) { return CalciteConnectionProperty.PARSER_FACTORY.wrap(properties) .getPlugin(parserFactoryClass, defaultParserFactory); } @Override public @PolyNull T schemaFactory(Class schemaFactoryClass, @PolyNull T defaultSchemaFactory) { return CalciteConnectionProperty.SCHEMA_FACTORY.wrap(properties) .getPlugin(schemaFactoryClass, defaultSchemaFactory); } @Override public JsonSchema.Type schemaType() { return CalciteConnectionProperty.SCHEMA_TYPE.wrap(properties) .getEnum(JsonSchema.Type.class); } @Override public boolean spark() { return CalciteConnectionProperty.SPARK.wrap(properties).getBoolean(); } @Override public boolean forceDecorrelate() { return CalciteConnectionProperty.FORCE_DECORRELATE.wrap(properties) .getBoolean(); } @Override public @PolyNull T typeSystem(Class typeSystemClass, @PolyNull T defaultTypeSystem) { return CalciteConnectionProperty.TYPE_SYSTEM.wrap(properties) .getPlugin(typeSystemClass, defaultTypeSystem); } @Override public SqlConformance conformance() { return CalciteConnectionProperty.CONFORMANCE.wrap(properties) .getEnum(SqlConformanceEnum.class); } @Override public String timeZone() { return CalciteConnectionProperty.TIME_ZONE.wrap(properties) .getString(); } @Override public String locale() { return CalciteConnectionProperty.LOCALE.wrap(properties) .getString(); } @Override public boolean typeCoercion() { return CalciteConnectionProperty.TYPE_COERCION.wrap(properties) .getBoolean(); } @Override public boolean lenientOperatorLookup() { return CalciteConnectionProperty.LENIENT_OPERATOR_LOOKUP.wrap(properties) .getBoolean(); } @Override public boolean topDownOpt() { return CalciteConnectionProperty.TOPDOWN_OPT.wrap(properties).getBoolean(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy