private void createTableColumns() {

    if (getTableName() == null) {
      return;
    }

    try {

      Connection connection = null;
      try {
        connection =
            DataSourceFacade.getInstance()
                .getDataSource(CommonParameters.getRequest())
                .getConnection();

        List<TableColumn> availableTableColumns = new ArrayList<TableColumn>();

        ResultSet primaryKeys = DBUtils.getPrimaryKeys(connection, getTableName());
        while (primaryKeys.next()) {
          String columnName = primaryKeys.getString("COLUMN_NAME"); // $NON-NLS-1$
          TableColumn tableColumn = new TableColumn(columnName, 0, true, true);
          availableTableColumns.add(tableColumn);
        }

        ResultSet columns = DBUtils.getColumns(connection, getTableName());
        while (columns.next()) {
          // columns
          String columnName = columns.getString("COLUMN_NAME"); // $NON-NLS-1$
          int columnType = columns.getInt("DATA_TYPE"); // $NON-NLS-1$

          TableColumn tableColumn = new TableColumn(columnName, columnType, false, true);
          if (!exists(availableTableColumns, tableColumn)) {
            availableTableColumns.add(tableColumn);
          }
        }

        setTableColumns(availableTableColumns.toArray(new TableColumn[] {}));
      } finally {
        if (connection != null) {
          connection.close();
        }
      }
    } catch (Exception e) {
      logger.error(ERROR_ON_LOADING_TABLE_COLUMNS_FROM_DATABASE_FOR_GENERATION, e);
    }
  }