Program: 120812
Project: 120812
Buggy source:
/** 
 * Select a table view.
 * @param dataMapTableView
 * @param useNewCommand
 * @param selectAllEntries TODO
 */
public void selectDataMapTableView(final DataMapTableView dataMapTableView,boolean useNewCommand,boolean selectAllEntries){
  IDataMapTable dataMapTable=dataMapTableView.getDataMapTable();
  if (dataMapTable instanceof OutputTable && ((OutputTable)dataMapTable).isErrorRejectTable()) {
    OutputTable table=(OutputTable)dataMapTable;
    if (table.getMetadataTable() != null) {
      for (      IMetadataColumn column : table.getMetadataTable().getListColumns()) {
        if (mapperManager.ERROR_REJECT_MESSAGE.equals(column.getLabel()) || mapperManager.ERROR_REJECT_STACK_TRACE.equals(column.getLabel())) {
          column.setCustom(true);
        }
      }
    }
    CustomTableManager.addCustomManagementToTable(getOutputMetaEditorView(),true);
  }
  TabFolderEditors tabFolderEditors=mapperUI.getTabFolderEditors();
  MetadataTableEditorView metadataTableEditorView=null;
  MetadataTableEditorView otherMetadataTableEditorView=null;
  final Zone currentZone=dataMapTableView.getZone();
  List<? extends AbstractDataMapTable> tables=null;
  DataMapTableView previousSelectedTableView=null;
  if (currentZone == Zone.INPUTS) {
    metadataTableEditorView=tabFolderEditors.getInputMetaEditorView();
    otherMetadataTableEditorView=tabFolderEditors.getOutputMetaEditorView();
    tables=mapperManager.getInputTables();
    previousSelectedTableView=this.currentSelectedInputTableView;
    this.currentSelectedInputTableView=(InputDataMapTableView)dataMapTableView;
    metadataTableEditorView.setReadOnly(this.currentSelectedInputTableView.getInputTable().hasReadOnlyMetadataColumns() || mapperManager.componentIsReadOnly());
  }
 else   if (currentZone == Zone.OUTPUTS) {
    metadataTableEditorView=tabFolderEditors.getOutputMetaEditorView();
    otherMetadataTableEditorView=tabFolderEditors.getInputMetaEditorView();
    tables=mapperManager.getOutputTables();
    previousSelectedTableView=this.currentSelectedOutputTableView;
    this.currentSelectedOutputTableView=(OutputDataMapTableView)dataMapTableView;
    metadataTableEditorView.setReadOnly(this.currentSelectedOutputTableView.getOutputTable().hasReadOnlyMetadataColumns() || mapperManager.componentIsReadOnly());
  }
  if (currentZone != Zone.VARS) {
    updateToolbarButtonsStates(currentZone);
    final AbstractInOutTable abstractDataMapTable=(AbstractInOutTable)mapperManager.retrieveAbstractDataMapTable(dataMapTableView);
    MetadataTableEditor currentMetadataTableEditor=metadataTableEditorView.getMetadataTableEditor();
    final TableViewerCreator dataMapTVCreator=dataMapTableView.getTableViewerCreatorForColumns();
    final TableViewer dataMapTableViewer=dataMapTableView.getTableViewerCreatorForColumns().getTableViewer();
    if (currentMetadataTableEditor == null || currentMetadataTableEditor != null && oldSelectedView != dataMapTableView) {
      oldSelectedView=dataMapTableView;
      if (useNewCommand) {
        DataMapTableViewSelectedCommand command=new DataMapTableViewSelectedCommand(this,previousSelectedTableView,dataMapTableView);
        mapperManager.executeCommand(command);
      }
      currentMetadataTableEditor=new MetadataTableEditor(abstractDataMapTable.getMetadataTable(),abstractDataMapTable.getName());
      currentMetadataTableEditor.setModifiedBeanListenable(metadataTableEditorView.getTableViewerCreator());
      final MetadataTableEditorView metadataTableEditorViewFinal=metadataTableEditorView;
      final TableViewerCreator metadataTVCreator=metadataTableEditorViewFinal.getTableViewerCreator();
      final MetadataTableEditor metadataTableEditor=currentMetadataTableEditor;
      modifySelectionChangedListener(currentZone,metadataTableEditorViewFinal,metadataTVCreator,metadataTableEditor,dataMapTableView,previousSelectedTableView);
      metadataTableEditor.addAfterOperationListListener(new IListenableListListener(){
        /** 
 * DOC acer Comment method "handleEvent".
 * @param event
 */
        public void handleEvent(        ListenableListEvent event){
          DataMapTableView view=mapperManager.retrieveAbstractDataMapTableView(abstractDataMapTable);
          List<DataMapTableView> relatedOutputsTableView=getRelatedOutputsTableView(dataMapTableView);
          if (event.type == TYPE.ADDED) {
            List<IMetadataColumn> metadataColumns=(List<IMetadataColumn>)event.addedObjects;
            lastCreatedInOutColumnEntries.clear();
            if (event.index != null) {
              int index=event.index;
              for (              IMetadataColumn metadataColumn : metadataColumns) {
                lastCreatedInOutColumnEntries.add(mapperManager.addNewColumnEntry(dataMapTableView,metadataColumn,index));
                for (                DataMapTableView tableView : relatedOutputsTableView) {
                  IMetadataColumn relatedMetadata=metadataColumn;
                  if (!oldMappingMap.isEmpty()) {
                    IDataMapTable retrieveAbstractDataMapTable=mapperManager.retrieveAbstractDataMapTable(tableView);
                    relatedMetadata=metadataColumn.clone();
                    String label=relatedMetadata.getLabel();
                    String expression=oldMappingMap.get(retrieveAbstractDataMapTable.getName() + "String_Node_Str" + label);
                    relatedMetadata.setExpression(expression == null ? "String_Node_Str" : expression);
                  }
                  mapperManager.addNewColumnEntry(tableView,metadataColumn,index);
                }
                index=index + 1;
              }
            }
 else             if (event.indicesTarget != null) {
              List<Integer> indicesTarget=event.indicesTarget;
              int lstSize=indicesTarget.size();
              for (int i=0; i < lstSize; i++) {
                Integer indice=indicesTarget.get(i);
                IMetadataColumn metadataColumn=metadataColumns.get(i);
                lastCreatedInOutColumnEntries.add(mapperManager.addNewColumnEntry(dataMapTableView,metadataColumn,indice));
                for (                DataMapTableView tableView : relatedOutputsTableView) {
                  mapperManager.addNewColumnEntry(tableView,metadataColumn,indice);
                }
              }
            }
 else {
              throw new IllegalStateException(Messages.getString("String_Node_Str"));
            }
            refreshBackground(false,false);
            if (event.index != null) {
              dataMapTableViewer.refresh();
              dataMapTVCreator.getSelectionHelper().setSelection(event.index);
              if (dataMapTableView.canBeResizedAtPreferedSize()) {
                dataMapTableView.changeSize(view.getPreferredSize(true,false,false),true,true);
              }
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                if (tableView.canBeResizedAtPreferedSize()) {
                  tableView.changeSize(tableView.getPreferredSize(true,false,false),true,true);
                }
              }
            }
 else             if (event.indicesTarget != null) {
              dataMapTableViewer.refresh();
              dataMapTableView.changeSize(view.getPreferredSize(false,true,false),true,true);
              int[] selection=ArrayUtils.toPrimitive((Integer[])event.indicesTarget.toArray(new Integer[0]));
              dataMapTVCreator.getSelectionHelper().setSelection(selection);
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                tableView.changeSize(tableView.getPreferredSize(false,true,false),true,true);
              }
            }
          }
          if (event.type == TYPE.REMOVED) {
            List<IMetadataColumn> metadataColumns=(List<IMetadataColumn>)event.removedObjects;
            for (            IMetadataColumn metadataColumn : metadataColumns) {
              ITableEntry metadataTableEntry=mapperManager.retrieveTableEntry(new TableEntryLocation(abstractDataMapTable.getName(),metadataColumn.getLabel()));
              mapperManager.removeTableEntry(metadataTableEntry);
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                IDataMapTable retrieveAbstractDataMapTable=mapperManager.retrieveAbstractDataMapTable(tableView);
                metadataTableEntry=mapperManager.retrieveTableEntry(new TableEntryLocation(retrieveAbstractDataMapTable.getName(),metadataColumn.getLabel()));
                mapperManager.removeTableEntry(metadataTableEntry);
                if (tableView.canBeResizedAtPreferedSize()) {
                  tableView.resizeAtExpandedSize();
                }
              }
            }
            dataMapTableViewer.refresh();
            if (dataMapTableView.canBeResizedAtPreferedSize()) {
              dataMapTableView.resizeAtExpandedSize();
            }
            resizeTablesZoneViewAtComputedSize(dataMapTableView.getZone());
            moveScrollBarZoneAtSelectedTable(dataMapTableView.getZone());
            refreshBackground(true,false);
          }
          if (event.type == TYPE.SWAPED) {
            List<Integer> listIndexTarget=event.indicesTarget;
            abstractDataMapTable.swapColumnElements(event.indicesOrigin,listIndexTarget);
            for (            DataMapTableView tableView : relatedOutputsTableView) {
              AbstractDataMapTable relatedTable=(AbstractDataMapTable)tableView.getDataMapTable();
              relatedTable.swapColumnElements(event.indicesOrigin,listIndexTarget);
            }
            refreshBackground(true,false);
          }
        }
      }
);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
      metadataTableEditorView.setMetadataTableEditor(metadataTableEditor);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
      metadataTableEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
      dataMapTVCreator.getSelectionHelper().setActiveFireSelectionChanged(false);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setSelection(dataMapTableViewer.getTable().getSelectionIndices());
      dataMapTVCreator.getSelectionHelper().setActiveFireSelectionChanged(true);
      for (      IDataMapTable table : tables) {
        DataMapTableView otherDataMapTableView=mapperManager.retrieveAbstractDataMapTableView(table);
        otherDataMapTableView.setBackground(dataMapTableView.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
      }
      dataMapTableView.setBackground(dataMapTableView.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
    }
    if (selectAllEntries) {
      dataMapTVCreator.getTable().selectAll();
      selectAllLinks(dataMapTableView);
      if (currentZone != Zone.VARS) {
        metadataTableEditorView.getTableViewerCreator().getTable().selectAll();
        metadataTableEditorView.getToolBar().updateEnabledStateOfButtons();
      }
      if (currentZone == Zone.OUTPUTS) {
        dataMapTableView.getTableViewerCreatorForFilters().getTable().selectAll();
      }
    }
    boolean isMainSchemaRepository=false;
    if (abstractDataMapTable instanceof OutputTable) {
      OutputTable outputTable=(OutputTable)abstractDataMapTable;
      if (outputTable.getIsJoinTableOf() != null || !"String_Node_Str".equals(outputTable.getIsJoinTableOf())) {
        final OutputTable outputTableByName=mapperManager.getOutputTableByName(outputTable.getIsJoinTableOf());
        if (outputTableByName != null && outputTableByName.getId() != null) {
          isMainSchemaRepository=true;
        }
      }
    }
    dataMapTableView.enableDiaplayViewer(abstractDataMapTable.isRepository() || isMainSchemaRepository);
  }
  if (selectAllEntries && currentZone == Zone.VARS) {
    selectAllLinks(dataMapTableView);
    mapperManager.getUiManager().getVarsTablesView().get(0).getTableViewerCreatorForColumns().getTable().selectAll();
  }
  if (otherMetadataTableEditorView != null) {
    otherMetadataTableEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
  }
}

Fixed version (ground truth):
/** 
 * Select a table view.
 * @param dataMapTableView
 * @param useNewCommand
 * @param selectAllEntries TODO
 */
public void selectDataMapTableView(final DataMapTableView dataMapTableView,boolean useNewCommand,boolean selectAllEntries){
  IDataMapTable dataMapTable=dataMapTableView.getDataMapTable();
  if (dataMapTable instanceof OutputTable && ((OutputTable)dataMapTable).isErrorRejectTable()) {
    OutputTable table=(OutputTable)dataMapTable;
    if (table.getMetadataTable() != null) {
      for (      IMetadataColumn column : table.getMetadataTable().getListColumns()) {
        if (mapperManager.ERROR_REJECT_MESSAGE.equals(column.getLabel()) || mapperManager.ERROR_REJECT_STACK_TRACE.equals(column.getLabel())) {
          column.setCustom(true);
        }
      }
    }
    CustomTableManager.addCustomManagementToTable(getOutputMetaEditorView(),true);
  }
  TabFolderEditors tabFolderEditors=mapperUI.getTabFolderEditors();
  MetadataTableEditorView metadataTableEditorView=null;
  MetadataTableEditorView otherMetadataTableEditorView=null;
  final Zone currentZone=dataMapTableView.getZone();
  List<? extends AbstractDataMapTable> tables=null;
  DataMapTableView previousSelectedTableView=null;
  if (currentZone == Zone.INPUTS) {
    metadataTableEditorView=tabFolderEditors.getInputMetaEditorView();
    otherMetadataTableEditorView=tabFolderEditors.getOutputMetaEditorView();
    tables=mapperManager.getInputTables();
    previousSelectedTableView=this.currentSelectedInputTableView;
    this.currentSelectedInputTableView=(InputDataMapTableView)dataMapTableView;
    metadataTableEditorView.setReadOnly(this.currentSelectedInputTableView.getInputTable().hasReadOnlyMetadataColumns() || mapperManager.componentIsReadOnly());
  }
 else   if (currentZone == Zone.OUTPUTS) {
    metadataTableEditorView=tabFolderEditors.getOutputMetaEditorView();
    otherMetadataTableEditorView=tabFolderEditors.getInputMetaEditorView();
    tables=mapperManager.getOutputTables();
    previousSelectedTableView=this.currentSelectedOutputTableView;
    this.currentSelectedOutputTableView=(OutputDataMapTableView)dataMapTableView;
    metadataTableEditorView.setReadOnly(this.currentSelectedOutputTableView.getOutputTable().hasReadOnlyMetadataColumns() || mapperManager.componentIsReadOnly());
  }
  if (currentZone != Zone.VARS) {
    updateToolbarButtonsStates(currentZone);
    final AbstractInOutTable abstractDataMapTable=(AbstractInOutTable)mapperManager.retrieveAbstractDataMapTable(dataMapTableView);
    MetadataTableEditor currentMetadataTableEditor=metadataTableEditorView.getMetadataTableEditor();
    final TableViewerCreator dataMapTVCreator=dataMapTableView.getTableViewerCreatorForColumns();
    final TableViewer dataMapTableViewer=dataMapTableView.getTableViewerCreatorForColumns().getTableViewer();
    if (currentMetadataTableEditor == null || currentMetadataTableEditor != null && oldSelectedView != dataMapTableView) {
      oldSelectedView=dataMapTableView;
      if (useNewCommand) {
        DataMapTableViewSelectedCommand command=new DataMapTableViewSelectedCommand(this,previousSelectedTableView,dataMapTableView);
        mapperManager.executeCommand(command);
      }
      currentMetadataTableEditor=new MetadataTableEditor(abstractDataMapTable.getMetadataTable(),abstractDataMapTable.getName());
      currentMetadataTableEditor.setModifiedBeanListenable(metadataTableEditorView.getTableViewerCreator());
      final MetadataTableEditorView metadataTableEditorViewFinal=metadataTableEditorView;
      final TableViewerCreator metadataTVCreator=metadataTableEditorViewFinal.getTableViewerCreator();
      final MetadataTableEditor metadataTableEditor=currentMetadataTableEditor;
      modifySelectionChangedListener(currentZone,metadataTableEditorViewFinal,metadataTVCreator,metadataTableEditor,dataMapTableView,previousSelectedTableView);
      metadataTableEditor.addAfterOperationListListener(new IListenableListListener(){
        /** 
 * DOC acer Comment method "handleEvent".
 * @param event
 */
        public void handleEvent(        ListenableListEvent event){
          DataMapTableView view=mapperManager.retrieveAbstractDataMapTableView(abstractDataMapTable);
          List<DataMapTableView> relatedOutputsTableView=getRelatedOutputsTableView(dataMapTableView);
          if (event.type == TYPE.ADDED) {
            List<IMetadataColumn> metadataColumns=(List<IMetadataColumn>)event.addedObjects;
            lastCreatedInOutColumnEntries.clear();
            if (event.index != null) {
              int index=event.index;
              for (              IMetadataColumn metadataColumn : metadataColumns) {
                lastCreatedInOutColumnEntries.add(mapperManager.addNewColumnEntry(dataMapTableView,metadataColumn,index));
                for (                DataMapTableView tableView : relatedOutputsTableView) {
                  IMetadataColumn relatedMetadata=metadataColumn;
                  if (!oldMappingMap.isEmpty()) {
                    IDataMapTable retrieveAbstractDataMapTable=mapperManager.retrieveAbstractDataMapTable(tableView);
                    relatedMetadata=metadataColumn.clone();
                    String label=relatedMetadata.getLabel();
                    String expression=oldMappingMap.get(retrieveAbstractDataMapTable.getName() + "String_Node_Str" + label);
                    relatedMetadata.setExpression(expression == null ? "String_Node_Str" : expression);
                  }
                  mapperManager.addNewColumnEntry(tableView,relatedMetadata,index);
                }
                index=index + 1;
              }
            }
 else             if (event.indicesTarget != null) {
              List<Integer> indicesTarget=event.indicesTarget;
              int lstSize=indicesTarget.size();
              for (int i=0; i < lstSize; i++) {
                Integer indice=indicesTarget.get(i);
                IMetadataColumn metadataColumn=metadataColumns.get(i);
                lastCreatedInOutColumnEntries.add(mapperManager.addNewColumnEntry(dataMapTableView,metadataColumn,indice));
                for (                DataMapTableView tableView : relatedOutputsTableView) {
                  mapperManager.addNewColumnEntry(tableView,metadataColumn,indice);
                }
              }
            }
 else {
              throw new IllegalStateException(Messages.getString("String_Node_Str"));
            }
            refreshBackground(false,false);
            if (event.index != null) {
              dataMapTableViewer.refresh();
              dataMapTVCreator.getSelectionHelper().setSelection(event.index);
              if (dataMapTableView.canBeResizedAtPreferedSize()) {
                dataMapTableView.changeSize(view.getPreferredSize(true,false,false),true,true);
              }
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                if (tableView.canBeResizedAtPreferedSize()) {
                  tableView.changeSize(tableView.getPreferredSize(true,false,false),true,true);
                }
              }
            }
 else             if (event.indicesTarget != null) {
              dataMapTableViewer.refresh();
              dataMapTableView.changeSize(view.getPreferredSize(false,true,false),true,true);
              int[] selection=ArrayUtils.toPrimitive((Integer[])event.indicesTarget.toArray(new Integer[0]));
              dataMapTVCreator.getSelectionHelper().setSelection(selection);
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                tableView.changeSize(tableView.getPreferredSize(false,true,false),true,true);
              }
            }
          }
          if (event.type == TYPE.REMOVED) {
            List<IMetadataColumn> metadataColumns=(List<IMetadataColumn>)event.removedObjects;
            for (            IMetadataColumn metadataColumn : metadataColumns) {
              ITableEntry metadataTableEntry=mapperManager.retrieveTableEntry(new TableEntryLocation(abstractDataMapTable.getName(),metadataColumn.getLabel()));
              mapperManager.removeTableEntry(metadataTableEntry);
              for (              DataMapTableView tableView : relatedOutputsTableView) {
                IDataMapTable retrieveAbstractDataMapTable=mapperManager.retrieveAbstractDataMapTable(tableView);
                metadataTableEntry=mapperManager.retrieveTableEntry(new TableEntryLocation(retrieveAbstractDataMapTable.getName(),metadataColumn.getLabel()));
                mapperManager.removeTableEntry(metadataTableEntry);
                if (tableView.canBeResizedAtPreferedSize()) {
                  tableView.resizeAtExpandedSize();
                }
              }
            }
            dataMapTableViewer.refresh();
            if (dataMapTableView.canBeResizedAtPreferedSize()) {
              dataMapTableView.resizeAtExpandedSize();
            }
            resizeTablesZoneViewAtComputedSize(dataMapTableView.getZone());
            moveScrollBarZoneAtSelectedTable(dataMapTableView.getZone());
            refreshBackground(true,false);
          }
          if (event.type == TYPE.SWAPED) {
            List<Integer> listIndexTarget=event.indicesTarget;
            abstractDataMapTable.swapColumnElements(event.indicesOrigin,listIndexTarget);
            for (            DataMapTableView tableView : relatedOutputsTableView) {
              AbstractDataMapTable relatedTable=(AbstractDataMapTable)tableView.getDataMapTable();
              relatedTable.swapColumnElements(event.indicesOrigin,listIndexTarget);
            }
            refreshBackground(true,false);
          }
        }
      }
);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(false);
      metadataTableEditorView.setMetadataTableEditor(metadataTableEditor);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setActiveFireSelectionChanged(true);
      metadataTableEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
      dataMapTVCreator.getSelectionHelper().setActiveFireSelectionChanged(false);
      metadataTableEditorView.getTableViewerCreator().getSelectionHelper().setSelection(dataMapTableViewer.getTable().getSelectionIndices());
      dataMapTVCreator.getSelectionHelper().setActiveFireSelectionChanged(true);
      for (      IDataMapTable table : tables) {
        DataMapTableView otherDataMapTableView=mapperManager.retrieveAbstractDataMapTableView(table);
        otherDataMapTableView.setBackground(dataMapTableView.getDisplay().getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
      }
      dataMapTableView.setBackground(dataMapTableView.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
    }
    if (selectAllEntries) {
      dataMapTVCreator.getTable().selectAll();
      selectAllLinks(dataMapTableView);
      if (currentZone != Zone.VARS) {
        metadataTableEditorView.getTableViewerCreator().getTable().selectAll();
        metadataTableEditorView.getToolBar().updateEnabledStateOfButtons();
      }
      if (currentZone == Zone.OUTPUTS) {
        dataMapTableView.getTableViewerCreatorForFilters().getTable().selectAll();
      }
    }
    boolean isMainSchemaRepository=false;
    if (abstractDataMapTable instanceof OutputTable) {
      OutputTable outputTable=(OutputTable)abstractDataMapTable;
      if (outputTable.getIsJoinTableOf() != null || !"String_Node_Str".equals(outputTable.getIsJoinTableOf())) {
        final OutputTable outputTableByName=mapperManager.getOutputTableByName(outputTable.getIsJoinTableOf());
        if (outputTableByName != null && outputTableByName.getId() != null) {
          isMainSchemaRepository=true;
        }
      }
    }
    dataMapTableView.enableDiaplayViewer(abstractDataMapTable.isRepository() || isMainSchemaRepository);
  }
  if (selectAllEntries && currentZone == Zone.VARS) {
    selectAllLinks(dataMapTableView);
    mapperManager.getUiManager().getVarsTablesView().get(0).getTableViewerCreatorForColumns().getTable().selectAll();
  }
  if (otherMetadataTableEditorView != null) {
    otherMetadataTableEditorView.getExtendedToolbar().updateEnabledStateOfButtons();
  }
}