OqlGroupByParser.class.php

Go to the documentation of this file.
00001 <?php
00002 /****************************************************************************
00003  *   Copyright (C) 2009 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 
00012     final class OqlGroupByParser extends OqlParser
00013     {
00014         const CLASS_NAME = 'GroupByPropertyProjection';
00015         
00019         public static function create()
00020         {
00021             return new self;
00022         }
00023         
00027         protected function makeOqlObject()
00028         {
00029             return OqlProjectionClause::create();
00030         }
00031         
00032         protected function handleState()
00033         {
00034             if ($this->state == self::INITIAL_STATE) {
00035                 $list = $this->getCommaSeparatedList(
00036                     array($this, 'getLogicExpression'),
00037                     "expecting expression in 'group by' clause"
00038                 );
00039                 
00040                 foreach ($list as $argument) {
00041                     $this->oqlObject->add(
00042                         $this->makeQueryExpression(self::CLASS_NAME, $argument)
00043                     );
00044                 }
00045             }
00046             
00047             return self::FINAL_STATE;
00048         }
00049     }
00050 ?>