/**
  * Retrieve an new TableModel
  * based on your data configuration in this object
  * @return Table
  */
 public function getTable()
 {
     if (empty($this->queryBuilder->getSelectedTableColumns())) {
         $this->filtersPrepared = false;
         $this->selectColumns($this->getModuleOptions()->getDefaultColumns());
     }
     $dataTypes = array_merge($this->queryBuilder->getTableColumnTypes(), $this->moduleOptions->getRenders());
     $filterValues = $this->resolveAssociationColumns ? $this->queryBuilder->preLoadAllAssociationFields() : array();
     $tableHeaders = $this->sortColumns($this->queryBuilder->getAvailableTableColumns(), $this->moduleOptions->getDefaultColumns());
     $table = new Table();
     $table->setDataTypes($dataTypes);
     $table->addHeaders($tableHeaders, $this->queryBuilder->getSelectedTableColumns(), $this->moduleOptions->getColumnWidths());
     $table->addRows($this->queryBuilder->getResultSet());
     $table->setPrefetchedFilterValues($filterValues);
     $table->addFilters($this->searchFilterHelper->getFilters(), $this->usedFilters);
     $table->setPageNumber($this->page);
     $table->setMaxPageNumber($this->calculateMaxPages());
     $table->setOptionRoutes($this->moduleOptions->getOptionRoutes());
     return $table;
 }