/**
  * {@inheritdoc}
  */
 public function getData(RequestInterface $request)
 {
     $data = new \SplDoublyLinkedList();
     $source = array_slice($this->source, $request->getLimit() * ($request->getPage() - 1), $request->getLimit());
     foreach ($source as $rowData) {
         $row = new Row();
         foreach ($rowData as $cellData) {
             $row->appendCell(new Cell($cellData));
         }
         $data[] = $row;
     }
     return $data;
 }
 /**
  * {@inheritdoc}
  */
 public function process($source)
 {
     $fields = $this->getFields();
     $row = new Row();
     foreach ($this->schemaProvider->getSchema()->getMetadataProperties() as $name) {
         $metaValue = $this->accessor->getValue($source, $name);
         $row->setMetadataProperty($name, $metaValue);
     }
     foreach ($fields as $property => $field) {
         $value = $this->accessor->getValue($source, $property);
         $row->appendCell(new Cell($value, $field));
     }
     return $row;
 }