/**
 * 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 org.apache.lens.server.api;

import javax.ws.rs.core.MediaType;

import org.apache.lens.api.parse.Parser;
import org.apache.lens.server.api.error.LensException;
import org.apache.lens.server.api.metastore.*;
import org.apache.lens.server.api.query.cost.FactPartitionBasedQueryCost;
import org.apache.lens.server.api.query.cost.QueryCost;

/**
 * The Class LensConfConstants.
 */
public final class LensConfConstants {

  private LensConfConstants() throws LensException {
    throw new LensException("Can't instantiate LensConfConstants");
  }

  // config prefixes
  // All the config variables will use one of these prefixes
  /**
   * The Constant SERVER_PFX.
   */
  public static final String SERVER_PFX = "lens.server.";

  /**
   * The Constant QUERY_PFX.
   */
  public static final String QUERY_PFX = "lens.query.";

  /**
   * The Constant SESSION_PFX.
   */
  public static final String SESSION_PFX = "lens.session.";

  /**
   * The Constant METASTORE_PFX.
   */
  public static final String METASTORE_PFX = "lens.metastore.";

  /**
   * The Constant DRIVER_PFX.
   */
  public static final String DRIVER_PFX = "lens.driver.";

  /**
   * The Constant DRIVER_TYPES_AND_CLASSES
   */
  public static final String DRIVER_TYPES_AND_CLASSES = SERVER_PFX + "drivers";
  /**
   * The Constant DRIVER_SELECTOR_CLASS.
   */
  public static final String DRIVER_SELECTOR_CLASS = SERVER_PFX + "driver.selector.class";
  /**
   * The Constant ACCEPTOR_CLASSES.
   */

  public static final String ACCEPTOR_CLASSES = SERVER_PFX + "query.acceptors";
  /**
   * The Constant SERVICE_NAMES.
   */
  public static final String SERVICE_NAMES = SERVER_PFX + "servicenames";

  /**
   * The Constant WS_RESOURCE_NAMES.
   */
  public static final String WS_RESOURCE_NAMES = SERVER_PFX + "ws.resourcenames";

  /**
   * The Constant WS_LISTENER_NAMES.
   */
  public static final String WS_LISTENER_NAMES = SERVER_PFX + "ws.listenernames";

  /**
   * The Constant WS_FILTER_NAMES.
   */
  public static final String WS_FILTER_NAMES = SERVER_PFX + "ws.filternames";

  /**
   * The Constant WS_FEATURE_NAMES.
   */
  public static final String WS_FEATURE_NAMES = SERVER_PFX + "ws.featurenames";

  public static final String MAX_SESSIONS_PER_USER = SERVER_PFX + "max.sessions.per.user";

  public static final String QUERY_COMPARATOR_CLASSES = SERVER_PFX + "query.comparator.classes";

  public static final Integer DEFAULT_MAX_SESSIONS_PER_USER = 10;

  /**
   * The Constant SERVICE_IMPL_SFX.
   */
  public static final String SERVICE_IMPL_SFX = ".service.impl";

  /**
   * The Constant WS_RESOURCE_IMPL_SFX.
   */
  public static final String WS_RESOURCE_IMPL_SFX = ".ws.resource.impl";

  /**
   * The Constant WS_FEATURE_IMPL_SFX.
   */
  public static final String WS_FEATURE_IMPL_SFX = ".ws.feature.impl";

  /**
   * The Constant WS_LISTENER_IMPL_SFX.
   */
  public static final String WS_LISTENER_IMPL_SFX = ".ws.listener.impl";

  /**
   * The Constant WS_FILTER_IMPL_SFX.
   */
  public static final String WS_FILTER_IMPL_SFX = ".ws.filter.impl";

  /**
   * The Constant QUERY_STATE_LOGGER_ENABLED.
   */
  public static final String QUERY_STATE_LOGGER_ENABLED = SERVER_PFX + "query.state.logger.enabled";

  /**
   * The Constant EVENT_SERVICE_THREAD_POOL_SIZE.
   */
  public static final String EVENT_SERVICE_THREAD_POOL_SIZE = SERVER_PFX + "event.service.thread.pool.size";

  /**
   * The Constant SERVER_BASE_URL.
   */
  public static final String SERVER_BASE_URL = SERVER_PFX + "base.url";

  /**
   * The Constant DEFAULT_SERVER_BASE_URL.
   */
  public static final String DEFAULT_SERVER_BASE_URL = "http://0.0.0.0:9999/lensapi";

  /**
   * The Constant SERVER_STATE_PERSISTENCE_ENABLED.
   */
  public static final String SERVER_STATE_PERSISTENCE_ENABLED = SERVER_PFX + "state.persistence.enabled";

  /**
   * The Constant DEFAULT_SERVER_STATE_PERSISTENCE_ENABLED.
   */
  public static final boolean DEFAULT_SERVER_STATE_PERSISTENCE_ENABLED = true;

  /**
   * If this is false and same query is submitted by a user in the same session
   * and with the same configuration while earlier query is not completed then
   * lens server will return the handle of the previous query.
   */
  public static final String SERVER_DUPLICATE_QUERY_ALLOWED = SERVER_PFX + "duplicate.query.allowed";

  /**
   * By default same query by same user is not allowed.
   */
  public static final boolean DEFAULT_SERVER_DUPLICATE_QUERY_ALLOWED = false;

  /**
   * The Constant SERVER_STATE_PERSIST_LOCATION.
   */
  public static final String SERVER_STATE_PERSIST_LOCATION = SERVER_PFX + "persist.location";

  /**
   * The Constant DEFAULT_SERVER_STATE_PERSIST_LOCATION.
   */
  public static final String DEFAULT_SERVER_STATE_PERSIST_LOCATION = "file:///tmp/lensserver";

  /**
   * The Constant SESSION_TIMEOUT_SECONDS.
   */
  public static final String SESSION_TIMEOUT_SECONDS = SERVER_PFX + "session.timeout.seconds";

  /**
   * The Constant SESSION_TIMEOUT_SECONDS_DEFAULT.
   */
  public static final long SESSION_TIMEOUT_SECONDS_DEFAULT = 1440 * 60; // Default is one day

  /**
   * The Constant SERVER_STATE_PERSISTENCE_INTERVAL_MILLIS.
   */
  public static final String SERVER_STATE_PERSISTENCE_INTERVAL_MILLIS =
    SERVER_PFX + "state.persistence.interval.millis";

  /**
   * The Constant DEFAULT_SERVER_STATE_PERSISTENCE_INTERVAL_MILLIS.
   */
  public static final long DEFAULT_SERVER_STATE_PERSISTENCE_INTERVAL_MILLIS = 5 * 60 * 1000;

  // Email related configurations
  /**
   * The Constant QUERY_MAIL_NOTIFY.
   */
  public static final String QUERY_MAIL_NOTIFY = QUERY_PFX + "enable.mail.notify";

  /**
   * The Constant WHETHER_MAIL_NOTIFY_DEFAULT.
   */
  public static final String WHETHER_MAIL_NOTIFY_DEFAULT = "false";

  /**
   * The Constant MAIL_FROM_ADDRESS.
   */
  public static final String MAIL_FROM_ADDRESS = SERVER_PFX + "mail.from.address";

  /**
   * The Constant MAIL_HOST.
   */
  public static final String MAIL_HOST = SERVER_PFX + "mail.host";

  /**
   * The Constant MAIL_PORT.
   */
  public static final String MAIL_PORT = SERVER_PFX + "mail.port";

  /**
   * The Constant MAIL_SMTP_TIMEOUT.
   */
  public static final String MAIL_SMTP_TIMEOUT = SERVER_PFX + "mail.smtp.timeout";

  /**
   * The Constant MAIL_DEFAULT_SMTP_TIMEOUT.
   */
  public static final String MAIL_DEFAULT_SMTP_TIMEOUT = "30000";

  /**
   * The Constant MAIL_SMTP_CONNECTIONTIMEOUT.
   */
  public static final String MAIL_SMTP_CONNECTIONTIMEOUT = SERVER_PFX + "mail.smtp.connectiontimeout";

  /**
   * The Constant MAIL_DEFAULT_SMTP_CONNECTIONTIMEOUT.
   */
  public static final String MAIL_DEFAULT_SMTP_CONNECTIONTIMEOUT = "15000";

  // To be provided by user in query's conf
  /**
   * The Constant QUERY_RESULT_EMAIL_CC.
   */
  public static final String QUERY_RESULT_EMAIL_CC = QUERY_PFX + "result.email.cc";

  /**
   * The Constant QUERY_RESULT_DEFAULT_EMAIL_CC.
   */
  public static final String QUERY_RESULT_DEFAULT_EMAIL_CC = "";

  // User session related config
  /**
   * The Constant SESSION_CLUSTER_USER.
   */
  public static final String SESSION_CLUSTER_USER = SESSION_PFX + "cluster.user";

  /**
   * The Constant MAPRED_JOB_QUEUE_NAME.
   */
  public static final String MAPRED_JOB_QUEUE_NAME = "mapred.job.queue.name";

  /**
   * The Constant SESSION_LOGGEDIN_USER.
   */
  public static final String SESSION_LOGGEDIN_USER = SESSION_PFX + "loggedin.user";

  // ldap user to cluster/hdfs accessing user resolver related configs
  /**
   * The Constant USER_RESOLVER_TYPE.
   */
  public static final String USER_RESOLVER_TYPE = SERVER_PFX + "user.resolver.type";

  /**
   * The Constant USER_RESOLVER_FIXED_VALUE.
   */
  public static final String USER_RESOLVER_FIXED_VALUE = SERVER_PFX + "user.resolver.fixed.value";

  /**
   * The Constant USER_RESOLVER_PROPERTYBASED_FILENAME.
   */
  public static final String USER_RESOLVER_PROPERTYBASED_FILENAME = SERVER_PFX + "user.resolver.propertybased.filename";

  /**
   * The Constant USER_RESOLVER_DB_KEYS.
   */
  public static final String USER_RESOLVER_DB_KEYS = SERVER_PFX + "user.resolver.db.keys";

  /**
   * The Constant USER_RESOLVER_DB_QUERY.
   */
  public static final String USER_RESOLVER_DB_QUERY = SERVER_PFX + "user.resolver.db.query";

  /**
   * The Constant USER_RESOLVER_CUSTOM_CLASS.
   */
  public static final String USER_RESOLVER_CUSTOM_CLASS = SERVER_PFX + "user.resolver.custom.class";

  /**
   * The Constant USER_RESOLVER_CACHE_EXPIRY.
   */
  public static final String USER_RESOLVER_CACHE_EXPIRY = SERVER_PFX + "user.resolver.cache.expiry";

  /**
   * The Constant USER_RESOLVER_CACHE_MAX_SIZE.
   */
  public static final String USER_RESOLVER_CACHE_MAX_SIZE = SERVER_PFX + "user.resolver.cache.max_size";

  /**
   * The Constant USER_RESOLVER_LDAP_URL.
   */
  public static final String USER_RESOLVER_LDAP_URL = SERVER_PFX + "user.resolver.ldap.url";

  /**
   * The Constant USER_RESOLVER_LDAP_INTERMEDIATE_DB_QUERY.
   */
  public static final String USER_RESOLVER_LDAP_INTERMEDIATE_DB_QUERY = SERVER_PFX
    + "user.resolver.ldap.intermediate.db.query";

  /**
   * The Constant USER_RESOLVER_LDAP_FIELDS.
   */
  public static final String USER_RESOLVER_LDAP_FIELDS = SERVER_PFX + "user.resolver.ldap.fields";

  /**
   * The Constant USER_RESOLVER_LDAP_INTERMEDIATE_DB_INSERT_SQL.
   */
  public static final String USER_RESOLVER_LDAP_INTERMEDIATE_DB_INSERT_SQL = SERVER_PFX
    + "user.resolver.ldap.intermediate.db.insert.sql";

  /**
   * The Constant USER_RESOLVER_LDAP_INTERMEDIATE_DB_DELETE_SQL.
   */
  public static final String USER_RESOLVER_LDAP_INTERMEDIATE_DB_DELETE_SQL = SERVER_PFX
    + "user.resolver.ldap.intermediate.db.delete.sql";

  /**
   * The Constant USER_RESOLVER_LDAP_BIND_DN.
   */
  public static final String USER_RESOLVER_LDAP_BIND_DN = SERVER_PFX + "user.resolver.ldap.bind.dn";

  /**
   * The Constant USER_RESOLVER_LDAP_BIND_PASSWORD.
   */
  public static final String USER_RESOLVER_LDAP_BIND_PASSWORD = SERVER_PFX + "user.resolver.ldap.bind.password";

  /**
   * The Constant USER_RESOLVER_LDAP_SEARCH_BASE.
   */
  public static final String USER_RESOLVER_LDAP_SEARCH_BASE = SERVER_PFX + "user.resolver.ldap.search.base";

  /**
   * The Constant USER_RESOLVER_LDAP_SEARCH_FILTER.
   */
  public static final String USER_RESOLVER_LDAP_SEARCH_FILTER = SERVER_PFX + "user.resolver.ldap.search.filter";

  /**
   * The Constant STORAGE_COST.
   */
  public static final String STORAGE_COST = METASTORE_PFX + "table.storage.cost";

  // These properties should be set in native tables if their underlying DB or table names are different
  /**
   * The Constant NATIVE_DB_NAME.
   */
  public static final String NATIVE_DB_NAME = METASTORE_PFX + "native.db.name";

  /**
   * The Constant NATIVE_TABLE_NAME.
   */
  public static final String NATIVE_TABLE_NAME = METASTORE_PFX + "native.table.name";

  /**
   * The property name for setting the column mapping, if column names in native table are different
   */
  public static final String NATIVE_TABLE_COLUMN_MAPPING = METASTORE_PFX + "native.table.column.mapping";

  /**
   * The property name for setting the column mapping, if column names in cubes are different
   */
  public static final String CUBE_COLUMN_MAPPING = METASTORE_PFX + "cube.column.mapping";

  /**
   * The Constant ES_INDEX_NAME.
   */
  public static final String ES_INDEX_NAME = METASTORE_PFX + "es.index.name";

  /**
   * The Constant ES_TYPE_NAME.
   */
  public static final String ES_TYPE_NAME = METASTORE_PFX + "es.type.name";

  /**
   * Gets the service impl conf key.
   *
   * @param sName the s name
   * @return the service impl conf key
   */
  public static String getServiceImplConfKey(String sName) {
    return SERVER_PFX + sName + SERVICE_IMPL_SFX;
  }

  /**
   * Gets the WS resource impl conf key.
   *
   * @param rName the r name
   * @return the WS resource impl conf key
   */
  public static String getWSResourceImplConfKey(String rName) {
    return SERVER_PFX + rName + WS_RESOURCE_IMPL_SFX;
  }

  /**
   * Gets the WS feature impl conf key.
   *
   * @param featureName the feature name
   * @return the WS feature impl conf key
   */
  public static String getWSFeatureImplConfKey(String featureName) {
    return SERVER_PFX + featureName + WS_FEATURE_IMPL_SFX;
  }

  /**
   * Gets the WS listener impl conf key.
   *
   * @param listenerName the listener name
   * @return the WS listener impl conf key
   */
  public static String getWSListenerImplConfKey(String listenerName) {
    return SERVER_PFX + listenerName + WS_LISTENER_IMPL_SFX;
  }

  /**
   * Gets the WS filter impl conf key.
   *
   * @param filterName the filter name
   * @return the WS filter impl conf key
   */
  public static String getWSFilterImplConfKey(String filterName) {
    return SERVER_PFX + filterName + WS_FILTER_IMPL_SFX;
  }

  /**
   * The Constant ENABLE_CONSOLE_METRICS.
   */
  public static final String ENABLE_CONSOLE_METRICS = SERVER_PFX + "enable.console.metrics";

  /** Whether to enable CSV metrics */
  public static final String ENABLE_CSV_METRICS = SERVER_PFX + "enable.csv.metrics";

  /** The directory in which to send CSV metrics */
  public static final String CSV_METRICS_DIRECTORY_PATH = SERVER_PFX + "metrics.csv.directory.path";

  /**
   * The Constant ENABLE_GANGLIA_METRICS.
   */
  public static final String ENABLE_GANGLIA_METRICS = SERVER_PFX + "enable.ganglia.metrics";

  /**
   * The Constant GANGLIA_SERVERNAME.
   */
  public static final String GANGLIA_SERVERNAME = SERVER_PFX + "metrics.ganglia.host";

  /**
   * The Constant GANGLIA_PORT.
   */
  public static final String GANGLIA_PORT = SERVER_PFX + "metrics.ganglia.port";

  /** default ganglia port */
  public static final int DEFAULT_GANGLIA_PORT = 8080;

  /** whether to report metrics to graphite or not */
  public static final String ENABLE_GRAPHITE_METRICS = SERVER_PFX + "enable.graphite.metrics";

  /** graphite server hostname */
  public static final String GRAPHITE_SERVERNAME = SERVER_PFX + "metrics.graphite.host";

  /** graphite server port */
  public static final String GRAPHITE_PORT = SERVER_PFX + "metrics.graphite.port";

  /** default graphite port */
  public static final int DEFAULT_GRAPHITE_PORT = 8080;

  /** whether to enable per resource method metering */
  public static final String ENABLE_RESOURCE_METHOD_METERING = SERVER_PFX + "enable.resource.method.metering";

  /**
   * The Constant REPORTING_PERIOD.
   */
  public static final String REPORTING_PERIOD = SERVER_PFX + "metrics.reporting.period";

  /**
   * The Constant SERVER_MODE.
   */
  public static final String SERVER_MODE = SERVER_PFX + "mode";

  /**
   * The Constant DEFAULT_SERVER_MODE.
   */
  public static final String DEFAULT_SERVER_MODE = "OPEN";

  /**
   * The Constant SERVER_DOMAIN.
   */
  public static final String SERVER_DOMAIN = SERVER_PFX + "domain";

  // resultset output options
  /**
   * The Constant QUERY_PERSISTENT_RESULT_SET.
   */
  public static final String QUERY_PERSISTENT_RESULT_SET = QUERY_PFX + "enable.persistent.resultset";

  /**
   * The Constant DEFAULT_PERSISTENT_RESULT_SET.
   */
  public static final boolean DEFAULT_PERSISTENT_RESULT_SET = false;

  /**
   * The Constant RESULT_SET_PARENT_DIR.
   */
  public static final String RESULT_SET_PARENT_DIR = QUERY_PFX + "result.parent.dir";

  /**
   * The Constant RESULT_SET_PARENT_DIR_DEFAULT.
   */
  public static final String RESULT_SET_PARENT_DIR_DEFAULT = "/tmp/lensreports";

  /**
   * The Constant QUERY_ADD_INSERT_OVEWRITE.
   */
  public static final String QUERY_ADD_INSERT_OVEWRITE = QUERY_PFX + "add.insert.overwrite";

  /**
   * The Constant DEFAULT_ADD_INSERT_OVEWRITE.
   */
  public static final boolean DEFAULT_ADD_INSERT_OVEWRITE = true;

  /**
   * The Constant QUERY_PERSISTENT_RESULT_INDRIVER.
   */
  public static final String QUERY_PERSISTENT_RESULT_INDRIVER = QUERY_PFX + "enable.persistent.resultset.indriver";

  /**
   * The Constant DEFAULT_DRIVER_PERSISTENT_RESULT_SET.
   */
  public static final boolean DEFAULT_DRIVER_PERSISTENT_RESULT_SET = true;

  /**
   * The Constant QUERY_HDFS_OUTPUT_PATH.
   */
  public static final String QUERY_HDFS_OUTPUT_PATH = QUERY_PFX + "hdfs.output.path";

  /**
   * The Constant DEFAULT_HDFS_OUTPUT_PATH.
   */
  public static final String DEFAULT_HDFS_OUTPUT_PATH = "hdfsout";

  /**
   * The Constant QUERY_OUTPUT_DIRECTORY_FORMAT.
   */
  public static final String QUERY_OUTPUT_DIRECTORY_FORMAT = QUERY_PFX + "result.output.dir.format";

  /**
   * The Constant QUERY_OUTPUT_SQL_FORMAT.
   */
  public static final String QUERY_OUTPUT_SQL_FORMAT = QUERY_PFX + "result.output.sql.format";

  /**
   * The Constant QUERY_OUTPUT_FORMATTER.
   */
  public static final String QUERY_OUTPUT_FORMATTER = QUERY_PFX + "output.formatter";

  /**
   * The Constant DEFAULT_INMEMORY_OUTPUT_FORMATTER.
   */
  public static final String DEFAULT_INMEMORY_OUTPUT_FORMATTER = "org.apache.lens.lib.query.FileSerdeFormatter";

  /**
   * The Constant DEFAULT_PERSISTENT_OUTPUT_FORMATTER.
   */
  public static final String DEFAULT_PERSISTENT_OUTPUT_FORMATTER = "org.apache.lens.lib.query.FilePersistentFormatter";

  /**
   * The Constant QUERY_OUTPUT_SERDE.
   */
  public static final String QUERY_OUTPUT_SERDE = QUERY_PFX + "result.output.serde";

  /**
   * The Constant DEFAULT_OUTPUT_SERDE.
   */
  public static final String DEFAULT_OUTPUT_SERDE = "org.apache.lens.lib.query.CSVSerde";

  /**
   * The Constant QUERY_OUTPUT_FILE_EXTN.
   */
  public static final String QUERY_OUTPUT_FILE_EXTN = QUERY_PFX + "output.file.extn";

  /**
   * The Constant DEFAULT_OUTPUT_FILE_EXTN.
   */
  public static final String DEFAULT_OUTPUT_FILE_EXTN = ".csv";

  /**
   * The Constant QUERY_OUTPUT_CHARSET_ENCODING.
   */
  public static final String QUERY_OUTPUT_CHARSET_ENCODING = QUERY_PFX + "output.charset.encoding";

  /**
   * The Constant DEFAULT_OUTPUT_CHARSET_ENCODING.
   */
  public static final String DEFAULT_OUTPUT_CHARSET_ENCODING = "UTF-8";

  /**
   * The Constant QUERY_OUTPUT_ENABLE_COMPRESSION.
   */
  public static final String QUERY_OUTPUT_ENABLE_COMPRESSION = QUERY_PFX + "output.enable.compression";

  /**
   * The Constant DEFAULT_OUTPUT_ENABLE_COMPRESSION.
   */
  public static final boolean DEFAULT_OUTPUT_ENABLE_COMPRESSION = false;

  /**
   * The Constant QUERY_OUTPUT_COMPRESSION_CODEC.
   */
  public static final String QUERY_OUTPUT_COMPRESSION_CODEC = QUERY_PFX + "output.compression.codec";

  /**
   * The Constant DEFAULT_OUTPUT_COMPRESSION_CODEC.
   */
  public static final String DEFAULT_OUTPUT_COMPRESSION_CODEC = "org.apache.hadoop.io.compress.GzipCodec";

  /**
   * The Constant QUERY_OUTPUT_WRITE_HEADER.
   */
  public static final String QUERY_OUTPUT_WRITE_HEADER = QUERY_PFX + "output.write.header";

  /**
   * The Constant DEFAULT_OUTPUT_WRITE_HEADER.
   */
  public static final boolean DEFAULT_OUTPUT_WRITE_HEADER = false;

  /**
   * The Constant QUERY_OUTPUT_HEADER.
   */
  public static final String QUERY_OUTPUT_HEADER = QUERY_PFX + "output.header";

  /**
   * The Constant QUERY_OUTPUT_WRITE_FOOTER.
   */
  public static final String QUERY_OUTPUT_WRITE_FOOTER = QUERY_PFX + "output.write.footer";

  /**
   * The Constant DEFAULT_OUTPUT_WRITE_FOOTER.
   */
  public static final boolean DEFAULT_OUTPUT_WRITE_FOOTER = false;

  /**
   * The Constant QUERY_OUTPUT_FOOTER.
   */
  public static final String QUERY_OUTPUT_FOOTER = QUERY_PFX + "output.footer";

  /**
   * The Constant RESULT_FORMAT_SIZE_THRESHOLD.
   */
  public static final String RESULT_FORMAT_SIZE_THRESHOLD = QUERY_PFX + "result.size.format.threshold";

  /**
   * The Constant DEFAULT_RESULT_FORMAT_SIZE_THRESHOLD.
   */
  public static final long DEFAULT_RESULT_FORMAT_SIZE_THRESHOLD = 10737418240L; // 10GB

  /**
   * The Constant RESULT_SPLIT_INTO_MULTIPLE.
   */
  public static final String RESULT_SPLIT_INTO_MULTIPLE = QUERY_PFX + "result.split.multiple";

  /**
   * The Constant DEFAULT_RESULT_SPLIT_INTO_MULTIPLE.
   */
  public static final boolean DEFAULT_RESULT_SPLIT_INTO_MULTIPLE = false;

  /**
   * The Constant RESULT_SPLIT_MULTIPLE_MAX_ROWS.
   */
  public static final String RESULT_SPLIT_MULTIPLE_MAX_ROWS = QUERY_PFX + "result.split.multiple.maxrows";

  /**
   * The Constant DEFAULT_RESULT_SPLIT_MULTIPLE_MAX_ROWS.
   */
  public static final long DEFAULT_RESULT_SPLIT_MULTIPLE_MAX_ROWS = 100000;

  /**
   * The Constant RESULT_FS_READ_URL.
   */
  public static final String RESULT_FS_READ_URL = QUERY_PFX + "result.fs.read.url";

  /**
   * The Constant AUX_JARS.
   */
  public static final String AUX_JARS = SESSION_PFX + "aux.jars";

  /**
   * Interval at which lens session expiry service runs
   */
  public static final String SESSION_EXPIRY_SERVICE_INTERVAL_IN_SECS = SERVER_PFX
    + "session.expiry.service.interval.secs";

  public static final int DEFAULT_SESSION_EXPIRY_SERVICE_INTERVAL_IN_SECS = 3600;

  // Statistics Store configuration keys
  /**
   * The Constant STATS_STORE_CLASS.
   */
  public static final String STATS_STORE_CLASS = SERVER_PFX + "statistics.store.class";

  /**
   * The Constant STATISTICS_WAREHOUSE_KEY.
   */
  public static final String STATISTICS_WAREHOUSE_KEY = SERVER_PFX + "statistics.warehouse.dir";

  /**
   * The Constant DEFAULT_STATISTICS_WAREHOUSE.
   */
  public static final String DEFAULT_STATISTICS_WAREHOUSE = "file:///tmp/lens/statistics/warehouse";

  /**
   * The Constant STATISTICS_DATABASE_KEY.
   */
  public static final String STATISTICS_DATABASE_KEY = SERVER_PFX + "statistics.db";

  /**
   * The Constant DEFAULT_STATISTICS_DATABASE.
   */
  public static final String DEFAULT_STATISTICS_DATABASE = "lensstats";

  /**
   * The Constant STATS_ROLLUP_SCAN_RATE.
   */
  public static final String STATS_ROLLUP_SCAN_RATE = SERVER_PFX + "statistics.log.rollover.interval";

  /**
   * The Constant DEFAULT_STATS_ROLLUP_SCAN_RATE.
   */
  public static final long DEFAULT_STATS_ROLLUP_SCAN_RATE = 3600000;

  // Query Purge Configuration

  /**
   * The Constant PURGE_INTERVAL.
   */
  public static final String PURGE_INTERVAL = SERVER_PFX + "querypurger.sleep.interval";

  /**
   * The Constant DEFAULT_PURGE_INTERVAL.
   */
  public static final int DEFAULT_PURGE_INTERVAL = 10000;

  // Server DB configuration
  /**
   * The Constant SERVER_DB_DRIVER_NAME.
   */
  public static final String SERVER_DB_DRIVER_NAME = SERVER_PFX + "db.driver.name";

  /**
   * The Constant DEFAULT_SERVER_DB_DRIVER_NAME.
   */
  public static final String DEFAULT_SERVER_DB_DRIVER_NAME = "org.hsqldb.jdbcDriver";

  /**
   * The Constant SERVER_DB_JDBC_URL.
   */
  public static final String SERVER_DB_JDBC_URL = SERVER_PFX + "db.jdbc.url";

  /**
   * The Constant DEFAULT_SERVER_DB_JDBC_URL.
   */
  public static final String DEFAULT_SERVER_DB_JDBC_URL = "jdbc:hsqldb:/tmp/lensserver/queries.db";

  /**
   * The Constant SERVER_DB_JDBC_USER.
   */
  public static final String SERVER_DB_JDBC_USER = SERVER_PFX + "db.jdbc.user";

  /**
   * The Constant DEFAULT_SERVER_DB_USER.
   */
  public static final String DEFAULT_SERVER_DB_USER = "SA";

  /**
   * The Constant SERVER_DB_JDBC_PASS.
   */
  public static final String SERVER_DB_JDBC_PASS = SERVER_PFX + "db.jdbc.pass";

  /** Validation query to check db pool is valid before passing to the application */
  public static final String SERVER_DB_VALIDATION_QUERY = SERVER_PFX + "db.validation.query";

  /** default value of the validation query */
  public static final String DEFAULT_SERVER_DB_VALIDATION_QUERY = "select 1 from INFORMATION_SCHEMA.SYSTEM_USERS";


  /**
   * The Constant DEFAULT_SERVER_DB_PASS.
   */
  public static final String DEFAULT_SERVER_DB_PASS = "";

  /**
   * The Constant SERVICE_PROVIDER_FACTORY.
   */
  public static final String SERVICE_PROVIDER_FACTORY = SERVER_PFX + "service.provider.factory";

  /**
   * Key for reading Output Stream Buffer Size used in writing lens server state to file system
   */
  public static final String STATE_PERSIST_OUT_STREAM_BUFF_SIZE = SERVER_PFX + "state.persist.out.stream.buffer.size";

  /**
   * Default Output Stream Buffer Size used in writing lens server state to file system: 1MB
   */
  public static final int DEFAULT_STATE_PERSIST_OUT_STREAM_BUFF_SIZE = 1048576;

  /**
   * Key for top level dir of database specific resources
   */
  public static final String DATABASE_RESOURCE_DIR = SERVER_PFX + "database.resource.dir";
  /**
   * Default value of top level dir for database specific resources
   */
  public static final String DEFAULT_DATABASE_RESOURCE_DIR = "/tmp/lens/resources";

  /**
   * Key for enabling metrics for each query to be different
   */
  public static final String ENABLE_QUERY_METRICS = QUERY_PFX + "enable.metrics.per.query";

  /**
   * Default value for query wise metrics
   */
  public static final boolean DEFAULT_ENABLE_QUERY_METRICS = false;

  /**
   * Key used to hold value of unique id for query metrics. This wont be passed by user, will be generated and set.
   * This is to pass unique id for query across the code flow.
   */
  public static final String QUERY_METRIC_UNIQUE_ID_CONF_KEY = QUERY_PFX + "metric.unique.id";

  /**
   * Key used to hold value query metric name in the stack. This wont be passed by user, will be generated and set.
   * When each query looked at by driver, the metric needs to be different for each driver. This name capture the stack
   * from which driver the code reached there.
   */
  public static final String QUERY_METRIC_DRIVER_STACK_NAME = QUERY_PFX + "metric.driver.stack.name";

  /**
   * Timeout for parallel query estimate calls. A driver needs to comeback with a query estimate within this timeout.
   */
  public static final String ESTIMATE_TIMEOUT_MILLIS = SERVER_PFX + "estimate.timeout.millis";

  /**
   * Default value for timeout for parallel estimate calls.
   */
  public static final long DEFAULT_ESTIMATE_TIMEOUT_MILLIS = 300000L; // 5 minutes


  /**
   * Key used to get minimum number of threads in the estimate thread pool
   */
  public static final String ESTIMATE_POOL_MIN_THREADS = SERVER_PFX + "estimate.pool.min.threads";
  public static final int DEFAULT_ESTIMATE_POOL_MIN_THREADS = 3;

  /**
   * Key used to get maximum number of threads in the estimate thread pool
   */
  public static final String ESTIMATE_POOL_MAX_THREADS = SERVER_PFX + "estimate.pool.max.threads";
  public static final int DEFAULT_ESTIMATE_POOL_MAX_THREADS = 100;

  /**
   * Key used to get keep alive time for threads in the estimate thread pool
   */
  public static final String ESTIMATE_POOL_KEEP_ALIVE_MILLIS = SERVER_PFX + "estimate.pool.keepalive.millis";
  public static final int DEFAULT_ESTIMATE_POOL_KEEP_ALIVE_MILLIS = 60000; // 1 minute

  /**
   * Key used to get minimum number of threads in the launcher thread pool
   */
  public static final String LAUNCHER_POOL_MIN_THREADS = SERVER_PFX + "launcher.pool.min.threads";
  public static final int DEFAULT_LAUNCHER_POOL_MIN_THREADS = 3;

  /**
   * Key used to get maximum number of threads in the launcher thread pool
   */
  public static final String LAUNCHER_POOL_MAX_THREADS = SERVER_PFX + "launcher.pool.max.threads";
  // keeping the default to hundred, we may never grow till there, it would go to max for concurrent queries allowed on
  // all drivers together.
  public static final int DEFAULT_LAUNCHER_POOL_MAX_THREADS = 100;

  /**
   * Key used to get keep alive time for threads in the launcher thread pool
   */
  public static final String LAUNCHER_POOL_KEEP_ALIVE_MILLIS = SERVER_PFX + "launcher.pool.keepalive.millis";
  public static final int DEFAULT_LAUNCHER_POOL_KEEP_ALIVE_MILLIS = 60000; // 1 minute

  public static final String QUERY_PHASE1_REWRITERS = SERVER_PFX + "query.phase1.rewriters";

  /**
   * Key to get the implementations of query constraint factories.
   */
  public static final String QUERY_LAUNCHING_CONSTRAINT_FACTORIES_SFX = "query.launching.constraint.factories";
  public static final String QUERY_LAUNCHING_CONSTRAINT_FACTORIES_KEY = SERVER_PFX
    + QUERY_LAUNCHING_CONSTRAINT_FACTORIES_SFX;

  /**
   * Key to get the total query cost ceiling per user.
   */
  public static final String TOTAL_QUERY_COST_CEILING_PER_USER_KEY = SERVER_PFX
      + "total.query.cost.ceiling.per.user";

  /**
   * Key to get the implementations of waiting queries selection policy factories.
   */
  public static final String WAITING_QUERIES_SELECTION_POLICY_FACTORIES_SFX =
    "waiting.queries.selection.policy.factories";
  public static final String WAITING_QUERIES_SELECTION_POLICY_FACTORIES_KEY = SERVER_PFX
      + WAITING_QUERIES_SELECTION_POLICY_FACTORIES_SFX;

  /**
   * Key denoting the dialect class property of saved query service.
   */
  public static final String JDBC_DIALECT_PROVIDER_CLASS_KEY = "lens.server.savedquery.jdbc.dialectclass";

  /**
   * Key denoting the default fetch value of saved query list api.
   */
  public static final String FETCH_COUNT_SAVED_QUERY_LIST_KEY = "lens.server.savedquery.list.default.count";

  /**
   * Default fetch count of saved query list api.
   */
  public static final int DEFAULT_FETCH_COUNT_SAVED_QUERY_LIST = 20;

  /**
   * This is the base directory where all drivers are available under lens-server's Conf directory.
   */
  public static final String DRIVERS_BASE_DIR = "drivers";

  /**
   * The driver weight property
   */
  public static final String DRIVER_WEIGHT = DRIVER_PFX + "weight";

  /**
   * Key for specifying Retry policy class
   */
  public static final String RETRY_POLICY_CLASSES_SFX = "query.retry.policy.classes";

  public static final String QUERY_RETRY_POLICY_CLASSES = SERVER_PFX + RETRY_POLICY_CLASSES_SFX;

  /**
   * Driver hook property
   */
  public static final String DRIVER_HOOK_CLASSES_SFX = "query.hook.classes";

  /**
   * Default driver weight
   */
  public static final int DEFAULT_DRIVER_WEIGHT = 1;

  /**
   * Name of the property that holds the path of "conf" directory of server
   */
  public static final String CONFIG_LOCATION = "config.location";

  /**
   * Default location of "conf" directory (wrt to lens-server/bin)
   */
  public static final String DEFAULT_CONFIG_LOCATION = "../conf";

  /**
   * The Constant RESULTSET_PURGE_ENABLED.
   */
  public static final String RESULTSET_PURGE_ENABLED = SERVER_PFX + "resultset.purge.enabled";

  /**
   * The Constant DEFAULT_RESULTSET_PURGE_ENABLED
   */
  public static final boolean DEFAULT_RESULTSET_PURGE_ENABLED = false;

  /**
   * The Constant RESULTSET_PURGE_INTERVAL_IN_SECONDS.
   */
  public static final String RESULTSET_PURGE_INTERVAL_IN_SECONDS = SERVER_PFX + "resultsetpurger.sleep.interval.secs";

  /*
   * The Constant DEFAULT_RESULTSET_PURGE_INTERVAL_IN_SECONDS.
   */
  public static final int DEFAULT_RESULTSET_PURGE_INTERVAL_IN_SECONDS = 3600;

  /**
   * The Constant QUERY_RESULTSET_RETENTION.
   */
  public static final String QUERY_RESULTSET_RETENTION = SERVER_PFX + "query.resultset.retention";

  /**
   * The Constant DEFAULT_QUERY_RESULTSET_RETENTION.
   */
  public static final String DEFAULT_QUERY_RESULTSET_RETENTION = "1 day";

  /**
   * The Constant HDFS_OUTPUT_RETENTION.
   */
  public static final String HDFS_OUTPUT_RETENTION = SERVER_PFX + "hdfs.output.retention";

  /**
   * The Constant DEFAULT_HDFS_OUTPUT_RETENTION.
   */
  public static final String DEFAULT_HDFS_OUTPUT_RETENTION = "1 day";

  /**
   * Pre Fetch results in case of in memory result sets.
   */
  public static final String PREFETCH_INMEMORY_RESULTSET = QUERY_PFX + "prefetch.inmemory.resultset";

  /**
   * Pre Fetch results in case of in memory result sets is enabled by default
   */
  public static final boolean DEFAULT_PREFETCH_INMEMORY_RESULTSET = true;

  /**
   * Pre-Fetch size for in memory results. Makes sense only if {@link #PREFETCH_INMEMORY_RESULTSET} set to true
   */
  public static final String PREFETCH_INMEMORY_RESULTSET_ROWS = QUERY_PFX + "prefetch.inmemory.resultset.rows";

  /**
   * Default Pre-Fetch size for in memory results.
   */
  public static final int DEFAULT_PREFETCH_INMEMORY_RESULTSET_ROWS = 100;

  /**
   * The Constant EXCLUDE_CUBE_TABLES.
   */
  public static final String EXCLUDE_CUBE_TABLES = SESSION_PFX + "metastore.exclude.cubetables.from.nativetables";

  /**
   * The Constant DEFAULT_EXCLUDE_CUBE_TABLES.
   */
  public static final boolean DEFAULT_EXCLUDE_CUBE_TABLES = true;

  /**
   * This property defines the TTL secs for all result sets of
   * type {@link org.apache.lens.server.api.driver.InMemoryResultSet} beyond which they are eligible for purging
   */
  public static final String INMEMORY_RESULT_SET_TTL_SECS = SERVER_PFX + "inmemory.resultset.ttl.secs";

  /**
   * Default value of  INMEMORY_RESULT_SET_TTL_SECS is 300 secs (5 minutes)
   */
  public static final int DEFAULT_INMEMORY_RESULT_SET_TTL_SECS = 300;

  /**
   * Number of retries status update will be retried, in case of transient failures
   */
  public static final String STATUS_UPDATE_EXPONENTIAL_RETRIES = SERVER_PFX + "status.update.num.retries";

  /**
   * Default value of STATUS_UPDATE_EXPONENTIAL_RETRIES is 10
   */
  public static final int DEFAULT_STATUS_UPDATE_EXPONENTIAL_RETRIES = 10;

  /**
   * Maximum delay a status update can wait for next update, in case of transient failures
   */
  public static final String MAXIMUM_STATUS_UPDATE_DELAY = SERVER_PFX + "status.update.maximum.delay.secs";

  /**
   * Default value of MAXIMUM_STATUS_UPDATE_DELAY is 1800 secs (30 minutes)
   */
  public static final long DEFAULT_MAXIMUM_STATUS_UPDATE_DELAY = 1800;

  /**
   * Number of seconds that would grow exponentially for next update, incase of transient failures.
   */
  public static final String STATUS_UPDATE_EXPONENTIAL_WAIT_FACTOR = SERVER_PFX
    + "status.update.exponential.wait.millis";

  /**
   * Default value of DEFAULT_STATUS_UPDATE_EXPONENTIAL_WAIT_FACTOR is 30000 millis (30 seconds)
   */
  public static final long DEFAULT_STATUS_UPDATE_EXPONENTIAL_WAIT_FACTOR = 30000;

  /**
   * Specifies whether to attempt cancellation of a query whose execution takes longer than the timeout value
   * specified while submitting the query for execution.
   */
  public static final String CANCEL_QUERY_ON_TIMEOUT = QUERY_PFX + "cancel.on.timeout";

  /**
   * Default value of "lens.query.cancel.on.timeout"
   */
  public static final boolean DEFAULT_CANCEL_QUERY_ON_TIMEOUT = true;

  /**
   * Scheduler store class
   */
  public static final java.lang.String SCHEDULER_STORE_CLASS = SERVER_PFX + "scheduler.store.class";

  /**
   * Query current time for the scheduled query.
   */
  public static final String QUERY_CURRENT_TIME_IN_MILLIS = QUERY_PFX + "current.time.millis";

  /**
   * This is the connection timeout for all HTTP Notifications sent by lens server
   */
  public static final String HTTP_NOTIFICATION_CONN_TIMEOUT_MILLIS = SERVER_PFX
    + "http.notification.conn.timeout.millis";

  /**
   * Default connection timeout is 5 secs
   */
  public static final int DEFAULT_HTTP_NOTIFICATION_CONN_TIMEOUT_MILLIS = 5000; //5 secs

  /**
   * This is the read timeout for all HTTP Notifications sent by lens server
   */
  public static final String HTTP_NOTIFICATION_READ_TIMEOUT_MILLIS = SERVER_PFX
    + "http.notification.read.timeout.millis";

  /**
   * Default read timeout is 5 secs
   */
  public static final int DEFAULT_HTTP_NOTIFICATION_READ_TIMEOUT_MILLIS = 10000; //10 secs

  /**
   * This is the media type for Query Http notifications
   */
  public static final String QUERY_HTTP_NOTIFICATION_MEDIATYPE = QUERY_PFX + "http.notification.mediatype";

  /**
   * This is the default media type for all Query Http notifications
   */
  public static final String DEFAULT_QUERY_HTTP_NOTIFICATION_MEDIATYPE = MediaType.APPLICATION_JSON;

  /**
   * These are the end points for Query http notifications. Users can specify more than one comma separated end points
   */
  public static final String QUERY_HTTP_NOTIFICATION_URLS = QUERY_PFX + "http.notification.urls";

  /**
   * This is the prefix for Query http Notification. User is expected to add notification type along with prefix
   */
  public static final String QUERY_HTTP_NOTIFICATION_TYPE_PFX = QUERY_PFX + "http.notification.type.";

  /**
   * This is the property for enabling Query finished Http notification. This will include successful, failed and
   * cancelled queries.
   */
  public static final String QUERY_HTTP_NOTIFICATION_TYPE_FINISHED = QUERY_HTTP_NOTIFICATION_TYPE_PFX + "FINISHED";

  /**
   * This is the property to specify the timeout for a query after running for configured time.
   */
  public static final String QUERY_TIMEOUT_MILLIS = QUERY_PFX + "timeout.millis";

  /**
   * This is the default timeout for query to get killed after running for configured time.
   */
  public static final int DEFAULT_QUERY_TIMEOUT_MILLIS = 24 * 60 * 60 * 1000; // 1day

  /**
   * Specifies how often query expiry will run
   */
  public static final String QUERY_EXPIRY_INTERVAL_MILLIS = SERVER_PFX + "query.expiry.check.interval.millis";
  /**
   * Default value for query expiry interval
   */
  public static final long DEFAULT_QUERY_EXPIRY_INTERVAL_MILLIS = 1 * 60 * 60 * 1000; // 1 hour

  /**
   * The Constant GRIZZLY_CORE_POOL_SIZE.
   */
  public static final String GRIZZLY_CORE_POOL_SIZE = SERVER_PFX + "grizzly.core.pool.size";

  /**
   * The Constant DEFAULT_GRIZZLY_CORE_POOL_SIZE.
   */
  public static final int DEFAULT_GRIZZLY_CORE_POOL_SIZE = 20;

  /**
   * The Constant GRIZZLY_MAX_POOL_SIZE.
   */
  public static final String GRIZZLY_MAX_POOL_SIZE = SERVER_PFX + "grizzly.max.pool.size";

  /**
   * The Constant DEFAULT_GRIZZLY_MAX_POOL_SIZE.
   */
  public static final int DEFAULT_GRIZZLY_MAX_POOL_SIZE = 40;

  /**
   * Thread interval for checking the waiting instances
   */
  public static final String SCHEDULED_INSTANCE_WAITING_THREAD_INTERVAL_MILLIS =
    SERVER_PFX + "scheduler.instance.waiting.thread.interval";

  /**
   * Default waiting thread interval in milliseconds
   */
  public static final long DEFAULT_SCHEDULED_INSTANCE_WAITING_THREAD_INTERVAL_MILLIS = 60 * 5 * 1000;

  /**
   * Default value is less than zero, that means an user can scheduler unlimited number of jobs.
   */
  public static final int DEFAULT_MAX_SCHEDULED_JOB_PER_USER = -1;

  public static final String QUERY_COST_PARSER = SERVER_PFX + "query.cost.parser.class";
  public static final Class<? extends Parser<? extends QueryCost>> DEFAULT_QUERY_COST_PARSER
    = FactPartitionBasedQueryCost.Parser.class;

  /**
   * Maximum number of scheduled job per user.
   */
  public static final String MAX_SCHEDULED_JOB_PER_USER  = SERVER_PFX + "scheduler.max.job.per.user";

  /**
   * The class that implements the DataCompletenessChecker Interface. This will take effect if the flag
   * "lens.cube.metastore.enable.datacompleteness.check" is set.
   */
  public static final String COMPLETENESS_CHECKER_CLASS = "lens.cube.metastore.completeness.checker.class";

  /**
   * The default implementation of DataCompletenessChecker
   */
  public static final Class<? extends DataCompletenessChecker> DEFAULT_COMPLETENESS_CHECKER =
          DefaultChecker.class.asSubclass(DataCompletenessChecker.class);

  /**
   * This property is to enable Data Completeness Checks while resolving partitions.
   */
  public static final String ENABLE_DATACOMPLETENESS_CHECK = "lens.cube.metastore.enable.datacompleteness.check";

  /**
   * Default Value of the config "lens.cube.metastore.enable.datacompleteness.check"
   */
  public static final boolean DEFAULT_ENABLE_DATACOMPLETENESS_CHECK = false;

  /**
   * This property is for setting static cost to driver
   */
  public static final String DRIVER_QUERY_COST = DRIVER_PFX + "query.cost";

  /**
   * Config param for defining query type ranges.
   */
  public static final String DRIVER_COST_TYPE_RANGES = "lens.driver.cost.type.ranges";

  /*
  * Default query cost range
  * */
  public static final String DRIVER_QUERY_COST_TYPE_DEFAULT_RANGES = "LOW,0.0,HIGH";

  /**
   * Default Value of the config "lens.driver.query.cost"
   */
  public static final double DEFAULT_DRIVER_QUERY_COST = 0.0;

  public static final String DRIVER_COST_QUERY_DECIDER = DRIVER_PFX + "cost.query.decider.class";
}
