public function finalize() { parent::finalize(); foreach ($this->columns as $column) { $column->finalize(); } // soring columns by columnIndex sort_records($this->columns, new PropertyBasedComparator_DefaultSortingConfiguration('columnIndex')); }
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; }