OqlInExpression.class.php

Go to the documentation of this file.
00001 <?php
00002 /****************************************************************************
00003  *   Copyright (C) 2008 by Vladlen Y. Koshelev                              *
00004  *                                                                          *
00005  *   This program is free software; you can redistribute it and/or modify   *
00006  *   it under the terms of the GNU Lesser General Public License as         *
00007  *   published by the Free Software Foundation; either version 3 of the     *
00008  *   License, or (at your option) any later version.                        *
00009  *                                                                          *
00010  ****************************************************************************/
00011 
00015     final class OqlInExpression extends OqlQueryExpression
00016     {
00017         private $logic = null;
00018         
00019         public function __construct(
00020             OqlQueryParameter $left, OqlQueryParameter $right, $logic
00021         )
00022         {
00023             $this->
00024                 addParameter($left)->
00025                 addParameter($right);
00026             
00027             $this->logic = $logic;
00028         }
00029         
00033         public function evaluate($values)
00034         {
00035             switch ($this->logic) {
00036                 case InExpression::IN:
00037                     return Expression::in(
00038                         $this->getParameter(0)->evaluate($values),
00039                         $this->getParameter(1)->evaluate($values)
00040                     );
00041                 
00042                 case InExpression::NOT_IN:
00043                     return Expression::notIn(
00044                         $this->getParameter(0)->evaluate($values),
00045                         $this->getParameter(1)->evaluate($values)
00046                     );
00047                 
00048                 default:
00049                     throw new UnsupportedMethodException(
00050                         "'{$this->logic}' doesn't supported yet"
00051                     );
00052             }
00053         }
00054     }
00055 ?>