Beispiel #1
0
 /**
  * @param SQLTokenIterator $tokens
  * @return Operator
  */
 protected function parseCondition(SQLTokenIterator $tokens)
 {
     switch (true) {
         case $tokens->seekTokenText('='):
             return Operator::OP_EQUAL();
         case $tokens->seekTokenText('<=>'):
             return Operator::OP_EQUAL_NULLSAFE();
         case $tokens->seekTokenText('!='):
             return Operator::OP_NOT_EQUAL();
         case $tokens->seekTokenText('<>'):
             return Operator::OP_LESSERGREATER();
         case $tokens->seekTokenText('<='):
             return Operator::OP_LESSEREQUAL();
         case $tokens->seekTokenText('<'):
             return Operator::OP_LESSER();
         case $tokens->seekTokenText('>='):
             return Operator::OP_GREATEREQUAL();
         case $tokens->seekTokenText('>'):
             return Operator::OP_GREATER();
         case $tokens->seekTokenText('+'):
             return Operator::OP_ADDITION();
         case $tokens->seekTokenText('-'):
             return Operator::OP_SUBTRACTION();
         case $tokens->seekTokenText('*'):
             return Operator::OP_MULTIPLICATION();
         case $tokens->seekTokenText('/'):
             return Operator::OP_DIVISION();
         case $tokens->seekTokenNum(SqlToken::T_IS()):
             if ($tokens->seekTokenNum(SqlToken::T_NOT())) {
                 return Operator::OP_IS_NOT();
             } else {
                 return Operator::OP_IS();
             }
             break;
         case $tokens->seekTokenNum(SqlToken::T_AND()):
             return Operator::OP_AND();
         case $tokens->seekTokenNum(SqlToken::T_OR()):
             return Operator::OP_OR();
         case $tokens->seekTokenNum(SqlToken::T_BETWEEN(), TokenIterator::NEXT, SqlToken::T_NOT()):
             if ($tokens->isTokenNum(SqlToken::T_NOT(), TokenIterator::PREVIOUS)) {
                 return Operator::OP_NOT_BETWEEN();
             } else {
                 return Operator::OP_BETWEEN();
             }
         default:
             return null;
     }
 }
Beispiel #2
0
 public function resolveCondition(ConditionJob $conditionJob, ExecutionContext $context)
 {
     $firstValueUnresolved = $conditionJob->getFirstParameter();
     $lastValueUnresolved = $conditionJob->getLastParameter();
     $firstValue = $this->resolveValue($firstValueUnresolved, $context);
     $lastValue = $this->resolveValue($lastValueUnresolved, $context);
     switch ($conditionJob->getOperator()) {
         case Operator::OP_ADDITION():
             return $firstValue + $lastValue;
         case Operator::OP_SUBTRACTION():
             return $firstValue - $lastValue;
         case Operator::OP_MULTIPLICATION():
             return $firstValue * $lastValue;
         case Operator::OP_DIVISION():
             return $firstValue / $lastValue;
         case Operator::OP_AND():
             return $firstValue && $lastValue;
         case Operator::OP_OR():
             return $firstValue || $lastValue;
         case Operator::OP_GREATER():
             return $firstValue > $lastValue;
         case Operator::OP_GREATEREQUAL():
             return $firstValue >= $lastValue;
         case Operator::OP_BETWEEN():
             return;
         case Operator::OP_NOT_BETWEEN():
             return;
         case Operator::OP_EQUAL():
             return $firstValue === $lastValue;
         case Operator::OP_NOT_EQUAL():
             return $firstValue !== $lastValue;
         case Operator::OP_EQUAL_NULLSAFE():
             return;
         case Operator::OP_LESSER():
             return $firstValue < $lastValue;
         case Operator::OP_LESSEREQUAL():
             return $firstValue <= $lastValue;
         case Operator::OP_LESSERGREATER():
             return true;
         case Operator::OP_IS():
             return $firstValue === $lastValue;
         case Operator::OP_IS_NOT():
             return $firstValue !== $lastValue;
         case Operator::OP_IS_NOT_NULL():
             return !is_null($firstValue);
         case Operator::OP_IS_NULL():
             return is_null($firstValue);
     }
 }