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

tech.mlsql.dsl.processor.PreProcessListener.scala Maven / Gradle / Ivy

The newest version!
package tech.mlsql.dsl.processor

import streaming.dsl.parser.DSLSQLParser.SqlContext
import streaming.dsl.{ScriptSQLExecListener, SetAdaptor}
import streaming.parser.lisener.BaseParseListenerextends
import tech.mlsql.dsl.adaptor.{CommandAdaptor, StatementAdaptor}

import scala.collection.mutable.ArrayBuffer

/**
  * 2019-04-11 WilliamZhu([email protected])
  */
class PreProcessListener(val scriptSQLExecListener: ScriptSQLExecListener) extends BaseParseListenerextends {

  private val _statements = new ArrayBuffer[String]()

  def toScript = {
    _statements.mkString(";") + ";"
  }

  def addStatement(v: String) = {
    _statements += v
    this
  }

  override def exitSql(ctx: SqlContext): Unit = {

    ctx.getChild(0).getText.toLowerCase() match {
      case item if item.startsWith("!") =>
        new CommandAdaptor(this).parse(ctx)
      case "set" => {
        new SetAdaptor(scriptSQLExecListener).parse(ctx)
        new StatementAdaptor(this).parse(ctx)
      }
      case _ => new StatementAdaptor(this).parse(ctx)
    }

  }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy