コード例 #1
0
 protected function executeDatasetCountRequest(DataQueryControllerDatasetRequest $request)
 {
     $callcontext = $this->prepareCallContext();
     $requestPreparer = new DataSourceDatasetQueryRequestPreparer();
     $datasetCountRequest = $requestPreparer->prepareDatasetCountRequest($request);
     $this->prepareDatasetRequestMetaData($datasetCountRequest);
     $datasetResultFormatter = isset($request->resultFormatter) ? $request->resultFormatter : $this->getDefaultResultFormatter();
     $datasetResultFormatter->adjustDatasetCountRequest($callcontext, $datasetCountRequest);
     LogHelper::log_debug($request);
     $datasetName = $datasetCountRequest->getDatasetName();
     return $this->getDataSourceQueryHandlerByDatasetName($datasetName)->countDatasetRecords($callcontext, $datasetCountRequest, $datasetResultFormatter);
 }
    protected function executeDatasetCountRequest(DataQueryControllerDatasetRequest $request) {
        $environment_metamodel = data_controller_get_environment_metamodel();
        $metamodel = data_controller_get_metamodel();

        $callcontext = $this->prepareCallContext();

        $requestPreparer = new DataSourceDatasetQueryRequestPreparer();
        $datasetCountRequest = $requestPreparer->prepareCountRequest($request);

        $this->prepareDatasetRequestMetaData($datasetCountRequest);

        if (isset($request->resultFormatter)) {
            $request->resultFormatter->adjustDatasetCountRequest($callcontext, $datasetCountRequest);
        }

        LogHelper::log_debug($datasetCountRequest);

        $datasetName = $datasetCountRequest->getDatasetName();

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

        $isCacheSupported = $this->isCacheSupported($datasource);
        $cache = $isCacheSupported ? new DataQueryControllerCacheProxy($datasetCountRequest) : NULL;

        list($data, $cacheHit) = isset($cache) ? $cache->getCachedResult() : array(NULL, FALSE);
        if (!$cacheHit) {
            $data = RequestChainFactory::getInstance()->initializeChain()->countDatasetRecords(
                $this->lookupDataSourceHandler($datasource->type), $callcontext, $datasetCountRequest);
            if ($isCacheSupported) {
                $cache->cacheResult($data);
            }
        }

        return $data;
    }