/** * Creates new instance of QueryProcessor * * @param RequestDescription &$requestDescription Description of the request * submitted by client. * @param DataService &$dataService Reference to the data service. */ private function __construct(RequestDescription &$requestDescription, DataService &$dataService) { $this->_requestDescription = $requestDescription; $this->_dataService = $dataService; $requestTargetKind = $requestDescription->getTargetKind(); $isSingleResult = $requestDescription->isSingleResult(); $requestCountOption = $requestDescription->getRequestCountOption(); $this->_setQueryApplicable = $requestTargetKind == RequestTargetKind::RESOURCE && !$isSingleResult || $requestCountOption == RequestCountOption::VALUE_ONLY; $this->_pagingApplicable = $this->_requestDescription->getTargetKind() == RequestTargetKind::RESOURCE && !$this->_requestDescription->isSingleResult() && $requestCountOption != RequestCountOption::VALUE_ONLY; $targetResourceType = $this->_requestDescription->getTargetResourceType(); $targetResourceSetWrapper = $this->_requestDescription->getTargetResourceSetWrapper(); $this->_expandSelectApplicable = !is_null($targetResourceType) && !is_null($targetResourceSetWrapper) && $targetResourceType->getResourceTypeKind() == ResourceTypeKind::ENTITY && !$this->_requestDescription->isLinkUri(); }