original_string: public function getExpandedDataTable($resultIndices, $idSubTable = null, $depth = null, $addMetadataSubTableId = false)
      {
          if ($this->dataType != 'blob') {
              throw new Exception("DataCollection: cannot call getExpandedDataTable with "
                  . "{$this->dataType} data types. Only works with blob data.");
          }
  
          if (count($this->dataNames) !== 1) {
              throw new Exception("DataCollection: cannot call getExpandedDataTable with "
                  . "more than one record.");
          }
  
          $dataTableFactory = new DataTableFactory(
              $this->dataNames, 'blob', $this->sitesId, $this->periods, $this->defaultRow);
          $dataTableFactory->expandDataTable($depth, $addMetadataSubTableId);
          $dataTableFactory->useSubtable($idSubTable);
  
          $index = $this->getIndexedArray($resultIndices);
  
          return $dataTableFactory->make($index, $resultIndices);
      }
code: public function getExpandedDataTable($resultIndices, $idSubTable = null, $depth = null, $addMetadataSubTableId = false)
      {
          if ($this->dataType != 'blob') {
              throw new Exception("DataCollection: cannot call getExpandedDataTable with "
                  . "{$this->dataType} data types. Only works with blob data.");
          }
  
          if (count($this->dataNames) !== 1) {
              throw new Exception("DataCollection: cannot call getExpandedDataTable with "
                  . "more than one record.");
          }
  
          $dataTableFactory = new DataTableFactory(
              $this->dataNames, 'blob', $this->sitesId, $this->periods, $this->defaultRow);
          $dataTableFactory->expandDataTable($depth, $addMetadataSubTableId);
          $dataTableFactory->useSubtable($idSubTable);
  
          $index = $this->getIndexedArray($resultIndices);
  
          return $dataTableFactory->make($index, $resultIndices);
      }
code_tokens: public function getExpandedDataTable ( $ resultIndices , $ idSubTable = null , $ depth = null , $ addMetadataSubTableId = false ) { if ( $ this -> dataType != 'blob' ) { throw new Exception ( "DataCollection: cannot call getExpandedDataTable with " . "{$this->dataType} data types. Only works with blob data." ) ; } if ( count ( $ this -> dataNames ) !== 1 ) { throw new Exception ( "DataCollection: cannot call getExpandedDataTable with " . "more than one record." ) ; } $ dataTableFactory = new DataTableFactory ( $ this -> dataNames , 'blob' , $ this -> sitesId , $ this -> periods , $ this -> defaultRow ) ; $ dataTableFactory -> expandDataTable ( $ depth , $ addMetadataSubTableId ) ; $ dataTableFactory -> useSubtable ( $ idSubTable ) ; $ index = $ this -> getIndexedArray ( $ resultIndices ) ; return $ dataTableFactory -> make ( $ index , $ resultIndices ) ; }
docstring: Returns archive data as a DataTable indexed by metadata. Indexed data will
  be represented by Map instances. Each DataTable will have
  its subtable IDs set.
  
  This function will only work if blob data was loaded and only one record
  was loaded (not including subtables of the record).
  
  @param array $resultIndices An array mapping metadata names to pretty labels
  for them. Each archive data row will be indexed
  by the metadata specified here.
  
  Eg, array('site' => 'idSite', 'period' => 'Date')
  @param int|null $idSubTable The subtable to return.
  @param int|null $depth max depth for subtables.
  @param bool $addMetadataSubTableId Whether to add the DB subtable ID as metadata
  to each datatable, or not.
  @throws Exception
  @return DataTable|DataTable\Map
docstring_tokens: Returns archive data as a DataTable indexed by metadata . Indexed data will be represented by Map instances . Each DataTable will have its subtable IDs set .