Program: 107930
Project: 107930
Buggy source:
/** 
 * Creates the design of this page along with the appropriate listeners.
 * @param parent
 */
public void createControl(Composite parent){
  Composite container=new Composite(parent,SWT.NULL);
  setControl(container);
  container.setLayout(new GridLayout(1,false));
  tableViewer=SWTUtil.createTableViewer(container,SWT.BORDER | SWT.FULL_SELECTION);
  tableViewer.setContentProvider(new ArrayContentProvider());
  ColumnViewerToolTipSupport.enableFor(tableViewer,ToolTip.NO_RECREATE);
  tableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    /** 
 * Reads in the columns and preview data for selected table
 */
    @Override public void selectionChanged(    SelectionChangedEvent arg0){
      int index=table.getSelectionIndex();
      String selectedTable=wizardImport.getData().getJdbcTables().get(index);
      wizardImport.getData().setSelectedJdbcTable(selectedTable);
      readColumns();
      readPreview();
      setPageComplete(true);
    }
  }
);
  table=tableViewer.getTable();
  table.setHeaderVisible(true);
  table.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
  TableViewerColumn tableViewerColumnName=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnName.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns table name 
 */
    @Override public String getText(    Object element){
      return (String)element;
    }
  }
);
  TableColumn tblclmnColumnName=tableViewerColumnName.getColumn();
  tblclmnColumnName.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnColumnName.setWidth(300);
  tblclmnColumnName.setText(Resources.getMessage("String_Node_Str"));
  TableViewerColumn tableViewerColumnColumns=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnColumns.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns number of columns for table If the number of columns couldn't be determined, three question marks are returned.
 */
    @Override public String getText(    Object element){
      int columns=getNumberOfColumns((String)element);
      if (columns != -1) {
        return "String_Node_Str" + columns;
      }
 else {
        return "String_Node_Str";
      }
    }
  }
);
  TableColumn tblclmnColumns=tableViewerColumnColumns.getColumn();
  tblclmnColumns.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnColumns.setWidth(100);
  tblclmnColumns.setText(Resources.getMessage("String_Node_Str"));
  TableViewerColumn tableViewerColumnRows=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnRows.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns number of rows for table If the number of rows couldn't be determined, three question marks are returned.
 */
    @Override public String getText(    Object element){
      long rows=getNumberOfRows((String)element);
      if (rows != -1) {
        return "String_Node_Str" + humanReadableRowCount(rows);
      }
 else {
        return "String_Node_Str";
      }
    }
    /** 
 * Returns the exact number of rows as tooltip This will return the exact number of rows for tables with a row count greater than thousand, as the column itself will only show a human readable string.
 * @see #getText(Object)
 * @see #getNumberOfRows(String)
 */
    @Override public String getToolTipText(    Object element){
      long rows=getNumberOfRows((String)element);
      if (rows > 1000) {
        return "String_Node_Str" + rows;
      }
 else {
        return null;
      }
    }
  }
);
  TableColumn tblclmnRows=tableViewerColumnRows.getColumn();
  tblclmnRows.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnRows.setWidth(100);
  tblclmnRows.setText(Resources.getMessage("String_Node_Str"));
  setPageComplete(false);
}

Fixed version (ground truth):
/** 
 * Creates the design of this page along with the appropriate listeners.
 * @param parent
 */
public void createControl(Composite parent){
  Composite container=new Composite(parent,SWT.NULL);
  setControl(container);
  container.setLayout(new GridLayout(1,false));
  tableViewer=SWTUtil.createTableViewer(container,SWT.BORDER | SWT.FULL_SELECTION);
  tableViewer.setContentProvider(new ArrayContentProvider());
  ColumnViewerToolTipSupport.enableFor(tableViewer,ToolTip.NO_RECREATE);
  tableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
    /** 
 * Reads in the columns and preview data for selected table
 */
    @Override public void selectionChanged(    SelectionChangedEvent arg0){
      int index=table.getSelectionIndex();
      String selectedTable=wizardImport.getData().getJdbcTables().get(index);
      wizardImport.getData().setSelectedJdbcTable(selectedTable);
      readColumns();
      setPageComplete(readPreview());
    }
  }
);
  table=tableViewer.getTable();
  table.setHeaderVisible(true);
  table.setLayoutData(new GridData(SWT.FILL,SWT.FILL,true,true,1,1));
  TableViewerColumn tableViewerColumnName=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnName.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns table name 
 */
    @Override public String getText(    Object element){
      return (String)element;
    }
  }
);
  TableColumn tblclmnColumnName=tableViewerColumnName.getColumn();
  tblclmnColumnName.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnColumnName.setWidth(300);
  tblclmnColumnName.setText(Resources.getMessage("String_Node_Str"));
  TableViewerColumn tableViewerColumnColumns=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnColumns.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns number of columns for table If the number of columns couldn't be determined, three question marks are returned.
 */
    @Override public String getText(    Object element){
      int columns=getNumberOfColumns((String)element);
      if (columns != -1) {
        return "String_Node_Str" + columns;
      }
 else {
        return "String_Node_Str";
      }
    }
  }
);
  TableColumn tblclmnColumns=tableViewerColumnColumns.getColumn();
  tblclmnColumns.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnColumns.setWidth(100);
  tblclmnColumns.setText(Resources.getMessage("String_Node_Str"));
  TableViewerColumn tableViewerColumnRows=new TableViewerColumn(tableViewer,SWT.NONE);
  tableViewerColumnRows.setLabelProvider(new ColumnLabelProvider(){
    /** 
 * Returns number of rows for table If the number of rows couldn't be determined, three question marks are returned.
 */
    @Override public String getText(    Object element){
      long rows=getNumberOfRows((String)element);
      if (rows != -1) {
        return "String_Node_Str" + getHumanReadableCount(rows);
      }
 else {
        return "String_Node_Str";
      }
    }
    /** 
 * Returns the exact number of rows as tooltip This will return the exact number of rows for tables with a row count greater than thousand, as the column itself will only show a human readable string.
 * @see #getText(Object)
 * @see #getNumberOfRows(String)
 */
    @Override public String getToolTipText(    Object element){
      long rows=getNumberOfRows((String)element);
      if (rows > 1000) {
        return "String_Node_Str" + rows;
      }
 else {
        return null;
      }
    }
  }
);
  TableColumn tblclmnRows=tableViewerColumnRows.getColumn();
  tblclmnRows.setToolTipText(Resources.getMessage("String_Node_Str"));
  tblclmnRows.setWidth(100);
  tblclmnRows.setText(Resources.getMessage("String_Node_Str"));
  setPageComplete(false);
}