statementexpression.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 222 行

SCALA
222
字号
/*                     __                                               *\**     ________ ___   / /  ___     Scala API                            ****    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             ****  __\ \/ /__/ __ |/ /__/ __ |                                         **** /____/\___/_/ |_/____/_/ | |                                         ****                          |/                                          **\*                                                                      */// $Id:StatementExpression.scala 6853 2006-03-20 16:58:47 +0100 (Mon, 20 Mar 2006) dubochet $package scala.dbc.syntax;import java.math.BigDecimal;import java.math.BigInteger;abstract class StatementExpression {  def toStatement: statement.Expression;  def and (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "AND";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def or (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "OR";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def == (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "=";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def < (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "<";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def > (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = ">";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def <= (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "<=";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def >= (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = ">=";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def <> (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "<>";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def isNull: StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "IS NULL";      val operatorIsLeft = false;      val operand = StatementExpression.this.toStatement;    }  }  def isNotNull: StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "IS NOT NULL";      val operatorIsLeft = false;      val operand = StatementExpression.this.toStatement;    }  }  def + (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "+";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def - (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "-";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def * (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "*";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def / (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "/";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def % (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "%";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def ^ (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "^";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def not : StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "!";      val operatorIsLeft = false;      val operand = StatementExpression.this.toStatement;    }  }  def || (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "||";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def like (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "LIKE";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def similar (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "SIMILAR";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = se.toStatement;    }  }  def in  (se:statement.Select): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.BinaryOperator {      val operator = "IN";      val leftOperand = StatementExpression.this.toStatement;      val rightOperand = new statement.expression.Select {        val selectStatement = se;      };    }  }}object StatementExpression {  def not (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "NOT";      val operatorIsLeft = true;      val operand = se.toStatement;    }  }  def abs (se:StatementExpression): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "@";      val operatorIsLeft = true;      val operand = se.toStatement;    }  }  def exists (se:statement.Select): StatementExpression = new StatementExpression {    val toStatement = new statement.expression.UnaryOperator {      val operator = "EXISTS";      val operatorIsLeft = true;      val operand = new statement.expression.Select {        val selectStatement = se;      };    }  }    abstract class StatementField extends StatementExpression {    def fieldName: String;    def tableName: Option[String] = None;    def in (tn:String): StatementField = new StatementField {      val fieldName = StatementField.this.fieldName;      override val tableName = Some(tn);    }    def toStatement: statement.expression.Field = new statement.expression.Field {      override val schemaName = None;      val tableName = StatementField.this.tableName;      val fieldName = StatementField.this.fieldName;    }  }  implicit def stringToStatementField (ef:String): StatementField = new StatementField {    val fieldName = ef;  }        }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?