public function queryDataset(DataControllerCallContext $callcontext, DatasetQueryRequest $request, ResultFormatter $resultFormatter) {
        $datasetName = $request->getDatasetName();

        $handler = $this->getDatasetHandler($callcontext, $datasetName);

        return $handler->queryDataset($callcontext, $request, $resultFormatter);
    }
    public function queryDataset(DataControllerCallContext $callcontext, DatasetQueryRequest $request) {
        $datasetName = $request->getDatasetName();
        LogHelper::log_info(t('Querying script-based dataset: @datasetName', array('@datasetName' => $datasetName)));

        $metamodel = data_controller_get_metamodel();

        $dataset = $metamodel->getDataset($datasetName);

        $serializer = new DatasetQueryUIRequestSerializer();
        $parameters = $serializer->serialize($request);

        $records = $this->executeScriptFunction($dataset, 'queryDataset', $parameters);
        LogHelper::log_info(t('Received @count records(s)', array('@count' => count($records))));
        // converting type of returned values
        if (isset($records)) {
            $columnTypeHandlers = NULL;
            foreach ($records as &$record) {
                foreach ($record as $columnName => $columnValue) {
                    if (!isset($columnTypeHandlers[$columnName])) {
                        $type = $dataset->getColumn($columnName)->type->applicationType;
                        $columnTypeHandlers[$columnName] = DataTypeFactory::getInstance()->getHandler($type);
                    }
                    $record[$columnName] = $columnTypeHandlers[$columnName]->castValue($columnValue);
                }
            }
            unset($record);
        }
        LogHelper::log_debug($records);

        return $records;
    }
    public function queryDataset(DataControllerCallContext $callcontext, DatasetQueryRequest $request, ResultFormatter $resultFormatter) {
        $records = NULL;

        $environment_metamodel = data_controller_get_environment_metamodel();
        $metamodel = data_controller_get_metamodel();

        $datasetName = $request->getDatasetName();
        $dataset = $metamodel->getDataset($datasetName);
        $datasource = $environment_metamodel->getDataSource($dataset->datasourceName);

        $databaseName = $dataset->source->database;

        list($url, $requestBody) = $this->prepareDatasetQuery($callcontext, $request, $databaseName);
        list($url, $manulSortingRequired) = $this->applyOrderBy($url, $request);
        $manualPaginationRequired = $manulSortingRequired;
        if (!$manualPaginationRequired) {
            $url = $this->applyPagination($url, $request);
        }

        $serverRequest->url = $url;
        $serverRequest->body = $requestBody;
        // executing the server request
        $serverResponse = $this->communicateWithServer($datasource, $serverRequest);

        if (isset($serverResponse->rows)) {
            foreach ($serverResponse->rows as $record) {
                $this->processRecord($records, $record, $request->columns, TRUE, $resultFormatter);
            }
        }
        else {
            $this->processRecord($records, $serverResponse, $request->columns, FALSE, $resultFormatter);
        }
        $resultFormatter->postFormatRecords($records);

        if ($manulSortingRequired) {
            sort_records($records, $request->sortingConfigurations);
        }

        if ($manualPaginationRequired) {
            $records = paginate_records($records, $request->startWith, $request->limit);
        }

        return $records;
    }
 public function queryDataset(DataControllerCallContext $callcontext, DatasetQueryRequest $request, ResultFormatter $resultFormatter)
 {
     $datasetName = $request->getDatasetName();
     LogHelper::log_notice(t('Querying SQL-based dataset: @datasetName', array('@datasetName' => $datasetName)));
     $environment_metamodel = data_controller_get_environment_metamodel();
     $metamodel = data_controller_get_metamodel();
     $dataset = $metamodel->getDataset($datasetName);
     $datasource = $environment_metamodel->getDataSource($dataset->datasourceName);
     $statements = $this->prepareDatasetQueryStatements($callcontext, $request);
     $sql = $this->assembleDatasetQueryStatements($callcontext, $request, $statements);
     // applying ordering
     $sql = $this->applyOrderBy($sql, $request);
     // applying pagination
     $this->applyPagination($request, $sql);
     LogHelper::log_info(new StatementLogMessage('dataset.query', $sql));
     return $this->executeQuery($callcontext, $datasource, $sql, $resultFormatter);
 }
    public function queryDataset(DataControllerCallContext $callcontext, DatasetQueryRequest $request) {
        $datasetName = $request->getDatasetName();
        LogHelper::log_info(t('Querying SQL-based dataset: @datasetName', array('@datasetName' => $datasetName)));

        $environment_metamodel = data_controller_get_environment_metamodel();
        $metamodel = data_controller_get_metamodel();

        $this->getExtension('adjustRequest')->adjustDatasetQueryRequest($this, $request);

        $dataset = $metamodel->getDataset($datasetName);
        $datasource = $environment_metamodel->getDataSource($dataset->datasourceName);

        $statements = $this->prepareDatasetQueryStatements($callcontext, $request);
        $sql = $this->assembleDatasetQueryStatements($callcontext, $request, $statements);

        // applying sorting
        if (isset($request->sortingConfigurations)) {
            $adjustedColumns = NULL;
            foreach ($request->sortingConfigurations as $sortingConfiguration) {
                // TODO try to use the same functionality for list and cube requests
                $adjustedColumn = DataSourceColumnNameHelper::generateFromParameterElements(
                    $this->getMaximumEntityNameLength(), $sortingConfiguration->getColumnName());
                // adjusting direction of the sorting
                if (!$sortingConfiguration->isSortAscending) {
                    $adjustedColumn = $adjustedColumn . ' DESC';
                }

                $adjustedColumns[] = $adjustedColumn;
            }

            if (count($adjustedColumns) > 0) {
                $sql .= "\n ORDER BY " . implode(', ', $adjustedColumns);
            }
        }

        // applying pagination
        $this->applyPagination($request, $sql);

        LogHelper::log_info(new StatementLogMessage('dataset.query', $sql));
        return $this->executeQuery($callcontext, $datasource, $sql);
    }