/**
  * @param DocumentCollection $documents
  * @return DocumentCollection
  */
 private function decorateDocuments(DocumentCollection $documents)
 {
     $newCollection = new DocumentCollection();
     $newCollection->setTotalCount($documents->getTotalCount());
     foreach ($documents as $document) {
         $newCollection->append($this->checkTypeAndDecorate($document));
     }
     return $newCollection;
 }
 /**
  * @param \SimpleXMLElement $xml
  *
  * @return \Searchperience\Api\Client\Domain\Document\DocumentCollection
  */
 protected function buildDocumentsFromXml(\SimpleXMLElement $xml)
 {
     $documentArray = new DocumentCollection();
     if ($xml->totalCount instanceof \SimpleXMLElement) {
         $documentArray->setTotalCount((int) $xml->totalCount->__toString());
     }
     $documents = $xml->xpath('document');
     foreach ($documents as $document) {
         $documentAttributeArray = (array) $document->attributes();
         $mimeType = (string) $document->mimeType;
         $className = $this->getClassNameForMimeType($mimeType);
         $documentObject = new $className();
         $documentObject->__setProperty('id', (int) $documentAttributeArray['@attributes']['id']);
         $documentObject->__setProperty('url', (string) $document->url);
         $documentObject->__setProperty('foreignId', (string) $document->foreignId);
         $documentObject->__setProperty('source', (string) $document->source);
         $documentObject->__setProperty('boostFactor', (int) $document->boostFactor);
         $documentObject->__setProperty('content', (string) $document->content);
         $documentObject->__setProperty('generalPriority', (int) $document->generalPriority);
         $documentObject->__setProperty('temporaryPriority', (int) $document->temporaryPriority);
         $documentObject->__setProperty('mimeType', (string) $document->mimeType);
         $documentObject->__setProperty('isMarkedForProcessing', (int) $document->isMarkedForProcessing);
         $documentObject->__setProperty('isMarkedForDeletion', (int) $document->isMarkedForDeletion);
         $documentObject->__setProperty('isProminent', (int) $document->isProminent);
         $documentObject->__setProperty('isRedirectTo', (int) $document->isRedirectTo);
         $documentObject->__setProperty('isDuplicateOf', (int) $document->isDuplicateOf);
         $documentObject->__setProperty('errorCount', (int) $document->errorCount);
         $documentObject->__setProperty('lastErrorMessage', (string) $document->lastErrorMessage);
         $documentObject->__setProperty('recrawlTimeSpan', (string) $document->recrawlTimeSpan);
         $documentObject->__setProperty('internalNoIndex', (string) $document->internalNoIndex);
         $documentObject->__setProperty('pageRank', (double) $document->pageRank);
         $documentObject->__setProperty('solrCoreHints', (string) $document->solrCoreHints);
         if (trim($document->lastProcessingTime) != '') {
             //we assume that the restapi allways return y-m-d H:i:s in the utc format
             $lastProcessingDate = $this->dateTimeService->getDateTimeFromApiDateString($document->lastProcessingTime);
             $documentObject->__setProperty('lastProcessingDate', $lastProcessingDate);
         }
         if (trim($document->lastCrawlingTime) != '') {
             //we assume that the restapi allways return y-m-d H:i:s in the utc format
             $lastCrawlingDateTime = $this->dateTimeService->getDateTimeFromApiDateString($document->lastCrawlingTime);
             $documentObject->__setProperty('lastCrawlingDateTime', $lastCrawlingDateTime);
         }
         $documentObject->__setProperty('noIndex', (int) $document->noIndex);
         $documentArray[] = $documentObject;
         $documentObject->afterReconstitution();
     }
     return $documentArray;
 }