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

com.yahoo.maha.core.Engine.scala Maven / Gradle / Ivy

// Copyright 2017, Yahoo Holdings Inc.
// Licensed under the terms of the Apache License 2.0. Please see LICENSE file in project root for terms.
package com.yahoo.maha.core

/**
 * Created by hiral on 10/5/15.
 */
sealed trait Engine

case object HiveEngine extends Engine {
  override def toString = "Hive"
}
case object OracleEngine extends Engine {
  override def toString = "Oracle"
  val MAX_SIZE_IN_FILTER = 999
}
case object DruidEngine extends Engine {
  override def toString = "Druid"
}
case object PrestoEngine extends Engine {
  override def toString = "Presto"
}
case object PostgresEngine extends Engine {
  override def toString = "Postgres"
  val MAX_SIZE_IN_FILTER = 32766
}
case object BigqueryEngine extends Engine {
  override def toString = "Bigquery"
}

object Engine {
  //keep list in one place and derive from here so we only need to update in one place
  val engines: IndexedSeq[Engine] = IndexedSeq(DruidEngine, OracleEngine, PrestoEngine, HiveEngine, PostgresEngine, BigqueryEngine)
  require(engines.size == engines.toSet.size, "Engines list must be unique!")
  val enginesMap: Map[String, Engine] = engines.map(e => e.toString.toLowerCase -> e).toMap
  def from(s: String): Option[Engine] = enginesMap.get(s.toLowerCase)
}

sealed trait EngineRequirement {
  def engine: Engine
  def acceptEngine(engine: Engine) = engine == this.engine
}

trait WithHiveEngine extends EngineRequirement {
  final val engine: Engine = HiveEngine
}

trait WithOracleEngine extends EngineRequirement {
  final val engine: Engine = OracleEngine
}

trait WithDruidEngine extends EngineRequirement {
  final val engine: Engine = DruidEngine
}

trait WithPrestoEngine extends EngineRequirement {
  final val engine: Engine = PrestoEngine
}

trait WithPostgresEngine extends EngineRequirement {
  final val engine: Engine = PostgresEngine
}

trait WithBigqueryEngine extends EngineRequirement {
  final val engine: Engine = BigqueryEngine
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy