# 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 ?>