Program: 118578
Project: 118578
Buggy source:
@Override protected AddPushButton createAddPushButton(){
  final AddPushButton addPushButton=new AddPushButtonForExtendedTable(this.toolbar,getExtendedTableViewer()){
    @Override public boolean getEnabledState(){
      if (model != null && !model.getElemParameter().getElement().isReadOnly() && (model.getElemParameter().getName().equals("String_Node_Str") || model.getElemParameter().getName().equals("String_Node_Str"))) {
        return true;
      }
      return super.getEnabledState() && (model == null || !model.getElemParameter().isBasedOnSubjobStarts());
    }
    @Override protected Object getObjectToAdd(){
      PropertiesTableEditorModel tableEditorModel=(PropertiesTableEditorModel)getExtendedTableViewer().getExtendedControlModel();
      if (!tableEditorModel.isButtonEnabled()) {
        MessageDialog.openInformation(tableEditorModel.getTableViewer().getControl().getShell(),"String_Node_Str","String_Node_Str");
        return null;
      }
      Object newEntry=tableEditorModel.createNewEntry();
      if (tableEditorModel.isAggregateRow() && newEntry instanceof Map) {
        List<ColumnInfo> tableInputs=new ArrayList<ColumnInfo>();
        String[] displayNames=tableEditorModel.getElemParameter().getListItemsDisplayName();
        Object[] itemsValue=tableEditorModel.getElemParameter().getListItemsValue();
        String paramColumnsName="String_Node_Str";
        for (int i=0; i < itemsValue.length; i++) {
          if (itemsValue[i] instanceof IElementParameter) {
            IElementParameter tableParameter=(IElementParameter)itemsValue[i];
            if (tableParameter.getFieldType().equals(EParameterFieldType.COLUMN_LIST)) {
              paramColumnsName=tableParameter.getName();
            }
 else {
              ColumnInfo row=new ColumnInfo();
              row.name=displayNames[i];
              row.parameter=tableParameter;
              row.defaultValue="String_Node_Str";
              tableInputs.add(row);
            }
          }
        }
        Node node=(Node)tableEditorModel.getElement();
        String outputTableName=null;
        if (node.getMetadataList() != null && !node.getMetadataList().isEmpty()) {
          IMetadataTable metadata=node.getMetadataList().get(0);
          if (metadata.getListColumns() != null) {
            for (            IMetadataColumn column : metadata.getListColumns()) {
              if (!tableEditorModel.exist(column.getLabel())) {
                outputTableName=column.getLabel();
                break;
              }
            }
          }
        }
        if (outputTableName != null) {
          Map mapObject=(Map)newEntry;
          if (mapObject.containsKey(paramColumnsName)) {
            mapObject.put(paramColumnsName,outputTableName);
          }
          for (          ColumnInfo col : tableInputs) {
            Object defaultValue=col.defaultValue;
            Object found=findDefaultName(outputTableName,col);
            if (found != null && !"String_Node_Str".equals(found)) {
              defaultValue=found;
            }
            if (defaultValue != null && !"String_Node_Str".equals(defaultValue)) {
              mapObject.put(col.parameter.getName(),defaultValue);
            }
          }
        }
      }
      return newEntry;
    }
  }
;
  addPushButton.addListener(getPropertyChangeListener(),false);
  return addPushButton;
}

Fixed version (ground truth):
@Override protected AddPushButton createAddPushButton(){
  final AddPushButton addPushButton=new AddPushButtonForExtendedTable(this.toolbar,getExtendedTableViewer()){
    @Override public boolean getEnabledState(){
      if (model != null && !model.getElemParameter().getElement().isReadOnly() && (model.getElemParameter().getName().equals("String_Node_Str") || model.getElemParameter().getName().equals("String_Node_Str")) && !model.getElemParameter().isRepositoryValueUsed()) {
        return true;
      }
      return super.getEnabledState() && (model == null || !model.getElemParameter().isBasedOnSubjobStarts());
    }
    @Override protected Object getObjectToAdd(){
      PropertiesTableEditorModel tableEditorModel=(PropertiesTableEditorModel)getExtendedTableViewer().getExtendedControlModel();
      if (!tableEditorModel.isButtonEnabled()) {
        MessageDialog.openInformation(tableEditorModel.getTableViewer().getControl().getShell(),"String_Node_Str","String_Node_Str");
        return null;
      }
      Object newEntry=tableEditorModel.createNewEntry();
      if (tableEditorModel.isAggregateRow() && newEntry instanceof Map) {
        List<ColumnInfo> tableInputs=new ArrayList<ColumnInfo>();
        String[] displayNames=tableEditorModel.getElemParameter().getListItemsDisplayName();
        Object[] itemsValue=tableEditorModel.getElemParameter().getListItemsValue();
        String paramColumnsName="String_Node_Str";
        for (int i=0; i < itemsValue.length; i++) {
          if (itemsValue[i] instanceof IElementParameter) {
            IElementParameter tableParameter=(IElementParameter)itemsValue[i];
            if (tableParameter.getFieldType().equals(EParameterFieldType.COLUMN_LIST)) {
              paramColumnsName=tableParameter.getName();
            }
 else {
              ColumnInfo row=new ColumnInfo();
              row.name=displayNames[i];
              row.parameter=tableParameter;
              row.defaultValue="String_Node_Str";
              tableInputs.add(row);
            }
          }
        }
        Node node=(Node)tableEditorModel.getElement();
        String outputTableName=null;
        if (node.getMetadataList() != null && !node.getMetadataList().isEmpty()) {
          IMetadataTable metadata=node.getMetadataList().get(0);
          if (metadata.getListColumns() != null) {
            for (            IMetadataColumn column : metadata.getListColumns()) {
              if (!tableEditorModel.exist(column.getLabel())) {
                outputTableName=column.getLabel();
                break;
              }
            }
          }
        }
        if (outputTableName != null) {
          Map mapObject=(Map)newEntry;
          if (mapObject.containsKey(paramColumnsName)) {
            mapObject.put(paramColumnsName,outputTableName);
          }
          for (          ColumnInfo col : tableInputs) {
            Object defaultValue=col.defaultValue;
            Object found=findDefaultName(outputTableName,col);
            if (found != null && !"String_Node_Str".equals(found)) {
              defaultValue=found;
            }
            if (defaultValue != null && !"String_Node_Str".equals(defaultValue)) {
              mapObject.put(col.parameter.getName(),defaultValue);
            }
          }
        }
      }
      return newEntry;
    }
  }
;
  addPushButton.addListener(getPropertyChangeListener(),false);
  return addPushButton;
}