/**
  * Parses result rows (as an associative array) into the model instance by creating
  * TableRowModels containing TableCellModels. These models will contain the name and value
  * at minimum, but might contain more properties like "visible", "safeName" or their dataTypes
  *
  * @see TableRowModel
  * @see TableModel::tableRows
  * @param array $rowData containing TableRowModel objects
  * @throws \Exception
  */
 public function addRows(array $rowData)
 {
     if (empty($this->tableHeaders)) {
         throw new \Exception("Please provide the table model with table header information first");
     }
     foreach ($rowData as $row) {
         $tableRow = new TableRowModel();
         $tableRow->setCells($this->parseCells($row));
         $this->tableRows[] = $tableRow;
     }
 }