Program: 120642
Project: 120642
Buggy source:
public void drop(DropTargetEvent event){
  super.drop(event);
  retrieveInsertionIndicator().setVisible(false);
  UIManager uiManager=getUiManager();
  DraggedData draggedData=TableEntriesTransfer.getInstance().getDraggedData();
  DropContextAnalyzer analyzer=analyzeDropTarget(event,draggedData);
  Point cursorPosition=new Point(event.x,event.y);
  int startInsertAtThisIndex=TableUtils.getItemIndexWhereInsertFromPosition(draggableTable,cursorPosition);
  IDbLanguage currentLanguage=getMapperManager().getCurrentLanguage();
  DataMapTableView dataMapTableViewTarget=getMapperManager().retrieveDataMapTableView(draggableTable);
  Zone zoneTarget=dataMapTableViewTarget.getZone();
  uiManager.selectDataMapTableView(dataMapTableViewTarget,true,false);
  MetadataTableEditorView metadataEditorView=getUiManager().getMetadataEditorView(dataMapTableViewTarget.getZone());
  List<TransferableEntry> transferableEntryList=draggedData.getTransferableEntryList();
  int currentIndex=startInsertAtThisIndex;
  uiManager.clearLastCreatedInOutColumnEntries();
  draggableTable.deselectAll();
  ITableEntry currentEntryTarget=getEntryFromPosition(cursorPosition);
  ArrayList<String> columnsBeingAdded=new ArrayList<String>();
  ArrayList<Integer> columnIndicesToSelect=new ArrayList<Integer>();
  ArrayList<ITableEntry> sourceEntriesOfEntriesBeingAdded=new ArrayList<ITableEntry>();
  ArrayList<IMetadataColumn> metadataColumnsBeingAdded=new ArrayList<IMetadataColumn>();
  boolean targetTableIsFiltersTable=analyzer.targetTableIsFiltersTable();
  boolean atLeastOneEntryInserted=false;
  boolean insertionEntryMode=analyzer.isInsertionEntryMode();
  boolean mapEachSourceToNextTargets=analyzer.isMapOneToOneMode();
  TableViewerCreator tableViewerCreatorTarget=null;
  if (targetTableIsFiltersTable) {
    tableViewerCreatorTarget=dataMapTableViewTarget.getTableViewerCreatorForFilters();
  }
 else {
    tableViewerCreatorTarget=dataMapTableViewTarget.getTableViewerCreatorForColumns();
  }
  ITableEntry lastEntryTarget=null;
  for (  TransferableEntry transferableEntry : transferableEntryList) {
    ITableEntry tableEntrySource=transferableEntry.getTableEntrySource();
    IMetadataColumn metadataColumnDragged=transferableEntry.getMetadataColumn();
    Zone zoneSourceEntry=(Zone)transferableEntry.getZoneSourceEntry();
    TableEntryLocation tableEntryLocationTarget=new TableEntryLocation(dataMapTableViewTarget.getDataMapTable().getName(),tableEntrySource.getName());
    if (zoneSourceEntry == Zone.INPUTS && zoneTarget == Zone.INPUTS && tableEntrySource.getParentName().equals(tableEntryLocationTarget.tableName)) {
      continue;
    }
 else     if (currentEntryTarget != null && !insertionEntryMode) {
      modifyExistingEntry(uiManager,analyzer,currentLanguage,currentEntryTarget,columnIndicesToSelect,tableViewerCreatorTarget,lastEntryTarget,tableEntrySource,zoneSourceEntry);
    }
 else {
      String columnName=transferableEntry.getTableEntrySource().getName();
      tableEntryLocationTarget=getMapperManager().findUniqueLocation(tableEntryLocationTarget,columnsBeingAdded.toArray(new String[0]));
      columnName=tableEntryLocationTarget.columnName;
      if (currentEntryTarget == null && analyzer.isMapOneToOneMode()) {
        currentIndex=tableViewerCreatorTarget.getInputList().size();
        columnIndicesToSelect.add(currentIndex);
      }
      if (zoneSourceEntry == Zone.INPUTS && zoneTarget == Zone.OUTPUTS) {
        insertNewInOutEntryFromInputEntry(sourceEntriesOfEntriesBeingAdded,metadataColumnsBeingAdded,tableEntrySource,metadataColumnDragged,columnName);
        atLeastOneEntryInserted=true;
      }
 else       if (zoneSourceEntry == Zone.OUTPUTS && zoneTarget == Zone.OUTPUTS) {
        insertOutpuEntryCopyToOtherOutput(sourceEntriesOfEntriesBeingAdded,metadataColumnsBeingAdded,tableEntrySource,metadataColumnDragged,columnName);
        atLeastOneEntryInserted=true;
      }
 else {
      }
      columnsBeingAdded.add(columnName);
    }
    lastEntryTarget=currentEntryTarget;
    if (mapEachSourceToNextTargets && currentEntryTarget != null) {
      currentEntryTarget=getNextEntryTarget(currentEntryTarget,tableViewerCreatorTarget);
    }
  }
  if (!atLeastOneEntryInserted) {
    tableViewerCreatorTarget.getTableViewer().refresh();
  }
 else {
    updateExpressionsOfInsertedEntries(currentLanguage,metadataEditorView,currentIndex,sourceEntriesOfEntriesBeingAdded,targetTableIsFiltersTable,tableViewerCreatorTarget,metadataColumnsBeingAdded);
    for (int i=currentIndex; i < currentIndex + sourceEntriesOfEntriesBeingAdded.size(); i++) {
      columnIndicesToSelect.add(i);
    }
  }
  dataMapTableViewTarget.resizeAtExpandedSize();
  uiManager.unselectAllEntriesOfAllTables();
  uiManager.refreshBackground(true,false);
  if (metadataEditorView != null && !targetTableIsFiltersTable) {
    metadataEditorView.getTableViewerCreator().getTableViewer().refresh();
  }
  int[] selection=ArrayUtils.toPrimitive((Integer[])columnIndicesToSelect.toArray(new Integer[0]));
  tableViewerCreatorTarget.getSelectionHelper().setSelection(selection);
  ISelection iselection=tableViewerCreatorTarget.getTableViewer().getSelection();
  List<ITableEntry> selectedEntries=uiManager.extractSelectedTableEntries(iselection);
  uiManager.unselectAllOutputMetaDataEntries();
  uiManager.unselectAllInputMetaDataEntries();
  uiManager.parseAllExpressionsForAllTables();
  getMapperManager().getProblemsManager().checkProblemsForAllEntriesOfAllTables(true);
  getUiManager().refreshSqlExpression();
  uiManager.selectLinks(dataMapTableViewTarget,selectedEntries,targetTableIsFiltersTable,true);
  tableViewerCreatorTarget.getTable().setFocus();
  uiManager.setDragging(false);
}

Fixed version (ground truth):
public void drop(DropTargetEvent event){
  super.drop(event);
  retrieveInsertionIndicator().setVisible(false);
  UIManager uiManager=getUiManager();
  DraggedData draggedData=TableEntriesTransfer.getInstance().getDraggedData();
  DropContextAnalyzer analyzer=analyzeDropTarget(event,draggedData);
  Point cursorPosition=new Point(event.x,event.y);
  int startInsertAtThisIndex=TableUtils.getItemIndexWhereInsertFromPosition(draggableTable,cursorPosition);
  IDbLanguage currentLanguage=getMapperManager().getCurrentLanguage();
  DataMapTableView dataMapTableViewTarget=getMapperManager().retrieveDataMapTableView(draggableTable);
  Zone zoneTarget=dataMapTableViewTarget.getZone();
  uiManager.selectDataMapTableView(dataMapTableViewTarget,true,false);
  MetadataTableEditorView metadataEditorView=getUiManager().getMetadataEditorView(dataMapTableViewTarget.getZone());
  List<TransferableEntry> transferableEntryList=draggedData.getTransferableEntryList();
  int currentIndex=startInsertAtThisIndex;
  uiManager.clearLastCreatedInOutColumnEntries();
  draggableTable.deselectAll();
  ITableEntry currentEntryTarget=getEntryFromPosition(cursorPosition);
  ArrayList<String> columnsBeingAdded=new ArrayList<String>();
  ArrayList<Integer> columnIndicesToSelect=new ArrayList<Integer>();
  ArrayList<ITableEntry> sourceEntriesOfEntriesBeingAdded=new ArrayList<ITableEntry>();
  ArrayList<IMetadataColumn> metadataColumnsBeingAdded=new ArrayList<IMetadataColumn>();
  boolean targetTableIsFiltersTable=analyzer.targetTableIsFiltersTable();
  boolean atLeastOneEntryInserted=false;
  boolean insertionEntryMode=analyzer.isInsertionEntryMode();
  boolean mapEachSourceToNextTargets=analyzer.isMapOneToOneMode();
  TableViewerCreator tableViewerCreatorTarget=null;
  if (targetTableIsFiltersTable) {
    tableViewerCreatorTarget=dataMapTableViewTarget.getTableViewerCreatorForFilters();
  }
 else {
    tableViewerCreatorTarget=dataMapTableViewTarget.getTableViewerCreatorForColumns();
  }
  ITableEntry lastEntryTarget=null;
  for (  TransferableEntry transferableEntry : transferableEntryList) {
    ITableEntry tableEntrySource=transferableEntry.getTableEntrySource();
    IMetadataColumn metadataColumnDragged=transferableEntry.getMetadataColumn();
    Zone zoneSourceEntry=(Zone)transferableEntry.getZoneSourceEntry();
    TableEntryLocation tableEntryLocationTarget=new TableEntryLocation(dataMapTableViewTarget.getDataMapTable().getName(),tableEntrySource.getName());
    if (zoneSourceEntry == Zone.INPUTS && zoneTarget == Zone.INPUTS && tableEntrySource.getParentName().equals(tableEntryLocationTarget.tableName)) {
      continue;
    }
 else     if (currentEntryTarget != null && !insertionEntryMode) {
      modifyExistingEntry(uiManager,analyzer,currentLanguage,currentEntryTarget,columnIndicesToSelect,tableViewerCreatorTarget,lastEntryTarget,tableEntrySource,zoneSourceEntry);
    }
 else {
      String columnName=transferableEntry.getTableEntrySource().getName();
      tableEntryLocationTarget=getMapperManager().findUniqueLocation(tableEntryLocationTarget);
      columnName=tableEntryLocationTarget.columnName;
      if (currentEntryTarget == null && analyzer.isMapOneToOneMode()) {
        currentIndex=tableViewerCreatorTarget.getInputList().size();
        columnIndicesToSelect.add(currentIndex);
      }
      if (zoneSourceEntry == Zone.INPUTS && zoneTarget == Zone.OUTPUTS) {
        insertNewInOutEntryFromInputEntry(sourceEntriesOfEntriesBeingAdded,metadataColumnsBeingAdded,tableEntrySource,metadataColumnDragged,columnName);
        atLeastOneEntryInserted=true;
      }
 else       if (zoneSourceEntry == Zone.OUTPUTS && zoneTarget == Zone.OUTPUTS) {
        insertOutpuEntryCopyToOtherOutput(sourceEntriesOfEntriesBeingAdded,metadataColumnsBeingAdded,tableEntrySource,metadataColumnDragged,columnName);
        atLeastOneEntryInserted=true;
      }
 else {
      }
      columnsBeingAdded.add(columnName);
    }
    lastEntryTarget=currentEntryTarget;
    if (mapEachSourceToNextTargets && currentEntryTarget != null) {
      currentEntryTarget=getNextEntryTarget(currentEntryTarget,tableViewerCreatorTarget);
    }
  }
  if (!atLeastOneEntryInserted) {
    tableViewerCreatorTarget.getTableViewer().refresh();
  }
 else {
    updateExpressionsOfInsertedEntries(currentLanguage,metadataEditorView,currentIndex,sourceEntriesOfEntriesBeingAdded,targetTableIsFiltersTable,tableViewerCreatorTarget,metadataColumnsBeingAdded);
    for (int i=currentIndex; i < currentIndex + sourceEntriesOfEntriesBeingAdded.size(); i++) {
      columnIndicesToSelect.add(i);
    }
  }
  dataMapTableViewTarget.resizeAtExpandedSize();
  uiManager.unselectAllEntriesOfAllTables();
  uiManager.refreshBackground(true,false);
  if (metadataEditorView != null && !targetTableIsFiltersTable) {
    metadataEditorView.getTableViewerCreator().getTableViewer().refresh();
  }
  int[] selection=ArrayUtils.toPrimitive((Integer[])columnIndicesToSelect.toArray(new Integer[0]));
  tableViewerCreatorTarget.getSelectionHelper().setSelection(selection);
  ISelection iselection=tableViewerCreatorTarget.getTableViewer().getSelection();
  List<ITableEntry> selectedEntries=uiManager.extractSelectedTableEntries(iselection);
  uiManager.unselectAllOutputMetaDataEntries();
  uiManager.unselectAllInputMetaDataEntries();
  uiManager.parseAllExpressionsForAllTables();
  getMapperManager().getProblemsManager().checkProblemsForAllEntriesOfAllTables(true);
  getUiManager().refreshSqlExpression();
  uiManager.selectLinks(dataMapTableViewTarget,selectedEntries,targetTableIsFiltersTable,true);
  tableViewerCreatorTarget.getTable().setFocus();
  uiManager.setDragging(false);
}