public function assemble(AbstractSQLDataSourceQueryHandler $datasourceHandler, DataControllerCallContext $callcontext, DatasetMetaData $dataset, array $columnNames = NULL)
 {
     $statement = new Statement();
     $requestedColumnNames = self::prepareRequestedColumnNames($columnNames);
     ArrayHelper::mergeArrays($statement->tables, self::prepareTableSections4Statement($datasourceHandler, $callcontext, $requestedColumnNames, TRUE));
     return $statement;
 }
Ejemplo n.º 2
0
 public function initiateHandler($operatorName)
 {
     $values = func_get_args();
     array_shift($values);
     $handlerConfiguration = $this->getHandlerConfiguration($operatorName);
     $classname = $handlerConfiguration['handler']['classname'];
     $handlerClass = new ReflectionClass($classname);
     $params = NULL;
     // first parameter is the operator configuration
     $operatorMetaData = $this->getOperatorMetaData($operatorName);
     $params[] = $operatorMetaData;
     // next are parameters which represent values
     if (count($values) === 1 && is_array($values[0])) {
         $parameterCount = count($values[0]);
         $expectedMinimumParameterCount = isset($operatorMetaData) ? $operatorMetaData->getRequiredParameterCount() : 0;
         $expectedTotalParameterCount = isset($operatorMetaData) ? $operatorMetaData->getParameterCount() : 0;
         if ($parameterCount == $expectedTotalParameterCount) {
             ArrayHelper::mergeArrays($params, $values[0]);
         } elseif ($expectedTotalParameterCount === 1) {
             $params[] = $values[0];
         } elseif ($parameterCount < $expectedTotalParameterCount && $parameterCount >= $expectedMinimumParameterCount) {
             // we have some optional parameters which do not need to be provided
             ArrayHelper::mergeArrays($params, $values[0]);
         } else {
             throw new IllegalArgumentException(t("Inconsistent number of arguments for '@name' operator", array('@name' => $operatorName)));
         }
     } else {
         ArrayHelper::mergeArrays($params, $values);
     }
     return $handlerClass->newInstanceArgs($params);
 }
Ejemplo n.º 3
0
 public function merge(Statement $statement)
 {
     ArrayHelper::mergeArrays($this->tables, $statement->tables);
     ArrayHelper::mergeArrays($this->conditions, $statement->conditions);
     ArrayHelper::mergeArrays($this->groupByColumns, $statement->groupByColumns);
     ArrayHelper::mergeArrays($this->havingConditions, $statement->havingConditions);
 }
    protected function mergeQueryValues(&$parameters, $request) {
        $this->checkRequestQuery($request);

        if (isset($request->queries)) {
            $query = $request->queries[0];

            ArrayHelper::mergeArrays($parameters, $query);
        }
    }
Ejemplo n.º 5
0
 public function log($level, &$message)
 {
     if ($message instanceof StatementLogMessage) {
         $statementLogMessage = $message;
         if (is_array($statementLogMessage->statement)) {
             ArrayHelper::mergeArrays(self::$statements, $statementLogMessage->statement);
         } else {
             self::$statements[$statementLogMessage->type][] = $statementLogMessage->statement;
         }
     }
 }
Ejemplo n.º 6
0
 public function getHandler($type)
 {
     if (isset($this->handlerInstances[$type])) {
         return $this->handlerInstances[$type];
     }
     $handlerConfiguration = $this->getHandlerConfiguration($type);
     $extensionConfiguration = $this->getExtensionConfiguration($type);
     $combinedExtensionConfigurations = NULL;
     // adding generic configuration
     ArrayHelper::mergeArrays($combinedExtensionConfigurations, $extensionConfiguration['extensions']);
     // adding handler specific configurations
     if (isset($handlerConfiguration['extensions'])) {
         ArrayHelper::mergeArrays($combinedExtensionConfigurations, $handlerConfiguration['extensions']);
         unset($handlerConfiguration['extensions']);
     }
     $classname = $handlerConfiguration['handler'];
     $handler = new $classname($type, $combinedExtensionConfigurations);
     $this->handlerInstances[$type] = $handler;
     return $handler;
 }
 public function assemble(AbstractSQLDataSourceQueryHandler $datasourceHandler, DataControllerCallContext $callcontext, DatasetMetaData $dataset, array $columnNames = NULL)
 {
     $statement = new Statement();
     $requestedColumnNames = self::prepareRequestedColumnNames($columnNames);
     $tableDates = self::prepareTableSection($datasourceHandler, $callcontext, $requestedColumnNames);
     $statement->tables[] = $tableDates;
     $tableDayOfWeek = self::prepareDefTableSection($datasourceHandler, $callcontext, $requestedColumnNames);
     $isDayOfWeekRequired = isset($tableDayOfWeek->columns);
     $monthTableSections = DateDimensionMonthDatasetAssembler::prepareTableSections4Statement($datasourceHandler, $callcontext, $requestedColumnNames, FALSE);
     $isMonthRequired = isset($monthTableSections);
     if ($isDayOfWeekRequired) {
         $tableDayOfWeek->conditions[] = new JoinConditionSection('day_of_week_def_id', new TableColumnConditionSectionValue(self::$TABLE_ALIAS_SUFFIX__DATES, 'day_of_week_def_id'));
         $statement->tables[] = $tableDayOfWeek;
     }
     if ($isMonthRequired) {
         $tableMonths = $monthTableSections[0];
         $tableMonths->conditions[] = new JoinConditionSection('month_id', new TableColumnConditionSectionValue(self::$TABLE_ALIAS_SUFFIX__DATES, 'month_id'));
         ArrayHelper::mergeArrays($statement->tables, $monthTableSections);
     }
     return $statement;
 }
Ejemplo n.º 8
0
 public function combineFrom(ReferenceRoute $route)
 {
     ArrayHelper::mergeArrays($this->segmentLinkIds, $route->segmentLinkIds);
     $this->weight += $route->weight;
 }