public function countDatasetRecords(DataControllerCallContext $callcontext, DatasetCountRequest $request, ResultFormatter $resultFormatter) { $datasetName = $request->getDatasetName(); $handler = $this->getDatasetHandler($callcontext, $datasetName); return $handler->countDatasetRecords($callcontext, $request, $resultFormatter); }
public function countDatasetRecords(DataControllerCallContext $callcontext, DatasetCountRequest $request) { $datasetName = $request->getDatasetName(); LogHelper::log_notice(t('Counting script-based dataset records: @datasetName', array('@datasetName' => $datasetName))); $metamodel = data_controller_get_metamodel(); $dataset = $metamodel->getDataset($datasetName); $serializer = new DatasetCountUIRequestSerializer(); $parameters = $serializer->serialize($request); $count = $this->executeScriptFunction($dataset, 'countDatasetRecords', $parameters); LogHelper::log_info(t('Counted @count record(s)', array('@count' => $count))); return $count; }
public function countDatasetRecords(DataControllerCallContext $callcontext, DatasetCountRequest $request, ResultFormatter $resultFormatter) { $datasetName = $request->getDatasetName(); LogHelper::log_notice(t('Counting SQL-based dataset records: @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); return $this->countRecords($callcontext, $datasource, $statements); }
public function countDatasetRecords(DataControllerCallContext $callcontext, DatasetCountRequest $request, ResultFormatter $resultFormatter) { $count = 0; $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); // preparing keys to access records $keys = $this->prepareDocumentIdentifiers($request); $isKeyDefined = isset($keys); $isKeySingle = $isKeyDefined && (count($keys) === 1); $isKeyList = $isKeyDefined && (count($keys) > 1); // preparing URL $url = '/' . $dataset->source->database; if ($isKeyDefined) { $url .= '/'; if ($isKeySingle) { $url .= $keys[0]; } else { $url .= '_all_docs?include_docs=false'; } } // preparing property name to access server side calculated value $recordNumberPropertyName = $isKeyDefined ? NULL : 'doc_count'; // preparing request body if any $requestBody = NULL; if ($isKeyList) { $requestBody = '{"keys": ["' . implode('", "', $keys) . '"]}'; } $serverRequest->url = $url; $serverRequest->body = $requestBody; // executing the server request $serverResponse = $this->communicateWithServer($datasource, $serverRequest); // calculating number of records if (isset($recordNumberPropertyName)) { // server-calculated value $count = $serverResponse->$recordNumberPropertyName; } else { // manual record counting if (isset($serverResponse->rows)) { foreach ($serverResponse->rows as $record) { $count += ($this->checkDocumentExistence($record, FALSE) ? 1 : 0); } } else { $count = $this->checkDocumentExistence($serverResponse, FALSE) ? 1 : 0; } } return $count; }