/**
  * Set columns (for the queries)
  *
  * @param array $flexFormSettings The Settings from the FlexForm
  * @return void
  */
 public function setColumns($flexFormSettings)
 {
     switch ($this->table->getTableType()) {
         case 'list':
             $selectedColumnsSettings = 'listColumns';
             break;
         case 'detail':
             $selectedColumnsSettings = 'detailColumns';
             break;
         case 'edit':
             $selectedColumnsSettings = 'editColumns';
             break;
         case 'new':
             $selectedColumnsSettings = 'newColumns';
             break;
         case 'search':
             $selectedColumnsSettings = 'searchColumns';
             break;
         case 'relation':
             $selectedColumnsSettings = 'relationColumns';
             break;
         default:
             $selectedColumnsSettings = NULL;
             break;
     }
     $columns = array();
     // Get selected columns and all columns
     if ($flexFormSettings[$selectedColumnsSettings]) {
         $selectedColumns = explode(',', $flexFormSettings[$selectedColumnsSettings]);
         foreach ($selectedColumns as $column) {
             $columns[$column]['cssName'] = str_replace('.', '_', $column);
             $columns[$column]['columnName'] = substr($column, strpos($column, '.') + 1, strlen($column) - strpos($column, '.') - 1);
             $columns[$column]['tableName'] = substr($column, 0, strpos($column, '.'));
             $columns[$column]['name'] = $column;
         }
         // Get primary key columns
         $primaryKeyColumns = $this->recordManagementRepository->getPrimaryKeyColumns($this->table->getTableNames());
         foreach ($primaryKeyColumns as $primaryKeyColumn) {
             $columns[$primaryKeyColumn['name']]['name'] = $primaryKeyColumn['name'];
         }
         // Get additional columns (for links, labels, ...)
         $columnTypes = $this->table->getColumnTypes();
         foreach ($columnTypes as $column => $name) {
             if (isset($columnTypes[$column]['filterColumn'])) {
                 $columns[$columnTypes[$column]['filterColumn']]['name'] = $columnTypes[$column]['filterColumn'];
             }
             if ($this->table->getTableType() == 'detail' || $this->table->getTableType() == 'edit') {
                 if (isset($columnTypes[$column]['labelFrom'])) {
                     $columns[$columnTypes[$column]['labelFrom']]['name'] = $columnTypes[$column]['labelFrom'];
                 }
             }
             if ($this->table->getTableType() == 'relation') {
                 if ($column == $this->table->getForeignKeyColumn()) {
                     $columns[$column]['name'] = $this->table->getForeignKeyColumn();
                 }
                 if ($column == $this->table->getForeignKeyRelationColumn()) {
                     $columns[$column]['name'] = $this->table->getForeignKeyRelationColumn();
                 }
             }
         }
         // Get additional columns (parameters, additional select, ...)
         foreach ($columns as $column => $name) {
             if (isset($columnTypes[$column]['parameters'])) {
                 $parameters = explode(',', $columnTypes[$column]['parameters']);
                 foreach ($parameters as $parameter) {
                     $parameter = trim($parameter);
                     $parameterValue = trim(substr($parameter, strpos($parameter, '=') + 1, strlen($parameter) - strpos($parameter, '=') - 1));
                     if ($parameterValue[0] != '"') {
                         $columns[$parameterValue]['name'] = $parameterValue;
                     }
                 }
             }
             if ($columnTypes[$column]['type'] == 'additional') {
                 unset($columns[$column]);
                 if (isset($columnTypes[$column]['select'])) {
                     $columns[$column]['cssName'] = str_replace('.', '_', $column);
                     $columns[$column]['name'] = $column;
                     $columns[$column]['query'] = $columnTypes[$column]['select'];
                 }
             }
         }
     } else {
         $columns = $this->recordManagementRepository->getColumnsFromTables($this->table->getTableNames());
     }
     $this->table->setColumns($columns);
 }