Program: 138117
Project: 138117
Buggy source:
@Override public void saveAnalysis() throws DataprofilerCoreException {
  List<DQRule> oldDqRules=getDqRules(analysis);
  analysis.setName(analysis.getName().replace("String_Node_Str","String_Node_Str"));
  for (  Domain domain : this.analysis.getParameters().getDataFilter()) {
    domain.setName(this.analysis.getName());
  }
  IRepositoryViewObject reposObject=null;
  analysisHandler.clearAnalysis();
  TableIndicator[] tableIndicators=treeViewer.getTableIndicator();
  Connection tdProvider=null;
  Analysis analysis=analysisHandler.getAnalysis();
  analysis.getParameters().setExecutionLanguage(ExecutionLanguage.get(execLang));
  if (tableIndicators != null && tableIndicators.length != 0) {
    tdProvider=ConnectionHelper.getDataProvider(tableIndicators[0].getColumnSet());
    if (tdProvider.eIsProxy()) {
      tdProvider=(Connection)EObjectHelper.resolveObject(tdProvider);
    }
    analysis.getContext().setConnection(tdProvider);
    for (    TableIndicator tableIndicator : tableIndicators) {
      analysisHandler.addIndicator(tableIndicator.getColumnSet(),tableIndicator.getIndicators());
    }
  }
 else {
    tdProvider=(Connection)analysis.getContext().getConnection();
    if (tdProvider != null && tdProvider.getSupplierDependency().size() > 0) {
      tdProvider.getSupplierDependency().get(0).getClient().remove(analysis);
      analysis.getContext().setConnection(null);
      analysis.getClientDependency().clear();
    }
  }
  analysisHandler.setStringDataFilter(dataFilterComp.getDataFilterString());
  String urlString=analysis.eResource() != null ? analysis.eResource().getURI().toFileString() : PluginConstant.EMPTY_STRING;
  this.updateAnalysisClientDependency();
  ReturnCode saved=new ReturnCode(false);
  IEditorInput editorInput=this.getEditorInput();
  if (editorInput instanceof AnalysisItemEditorInput) {
    AnalysisItemEditorInput analysisInput=(AnalysisItemEditorInput)editorInput;
    TDQAnalysisItem tdqAnalysisItem=analysisInput.getTDQAnalysisItem();
    tdqAnalysisItem.getProperty().setLabel(analysisHandler.getName());
    this.nameText.setText(analysisHandler.getName());
    saved=ElementWriterFactory.getInstance().createAnalysisWrite().save(tdqAnalysisItem);
  }
  if (saved.isOk()) {
    RepositoryNode node=RepositoryNodeHelper.recursiveFind(tdProvider);
    if (node != null) {
      ElementWriterFactory.getInstance().createDataProviderWriter().save(node.getObject().getProperty().getItem());
    }
    if (log.isDebugEnabled()) {
      log.debug("String_Node_Str" + urlString + "String_Node_Str");
    }
    this.updateDQRuleDependency(oldDqRules);
  }
 else {
    throw new DataprofilerCoreException(DefaultMessagesImpl.getString("String_Node_Str",analysis.getName(),urlString,saved.getMessage()));
  }
  treeViewer.setDirty(false);
  dataFilterComp.setDirty(false);
}

Fixed version (ground truth):
@Override public void saveAnalysis() throws DataprofilerCoreException {
  List<DQRule> oldDqRules=getDqRules(analysis);
  analysis.setName(analysis.getName().replace("String_Node_Str","String_Node_Str"));
  for (  Domain domain : this.analysis.getParameters().getDataFilter()) {
    domain.setName(this.analysis.getName());
  }
  IRepositoryViewObject reposObject=null;
  analysisHandler.clearAnalysis();
  TableIndicator[] tableIndicators=treeViewer.getTableIndicator();
  Connection tdProvider=null;
  Analysis analysis=analysisHandler.getAnalysis();
  analysis.getParameters().setExecutionLanguage(ExecutionLanguage.get(execLang));
  if (tableIndicators != null && tableIndicators.length != 0) {
    tdProvider=ConnectionHelper.getDataProvider(tableIndicators[0].getColumnSet());
    if (tdProvider.eIsProxy()) {
      tdProvider=(Connection)EObjectHelper.resolveObject(tdProvider);
    }
    analysis.getContext().setConnection(tdProvider);
    for (    TableIndicator tableIndicator : tableIndicators) {
      analysisHandler.addIndicator(tableIndicator.getColumnSet(),tableIndicator.getIndicators());
    }
  }
 else {
    tdProvider=(Connection)analysis.getContext().getConnection();
    if (tdProvider != null && tdProvider.getSupplierDependency().size() > 0) {
      tdProvider.getSupplierDependency().get(0).getClient().remove(analysis);
      analysis.getContext().setConnection(null);
      analysis.getClientDependency().clear();
    }
  }
  analysisHandler.setStringDataFilter(dataFilterComp.getDataFilterString());
  String urlString=analysis.eResource() != null ? (analysis.eResource().getURI().isFile() ? analysis.eResource().getURI().toFileString() : analysis.eResource().getURI().toString()) : PluginConstant.EMPTY_STRING;
  this.updateAnalysisClientDependency();
  ReturnCode saved=new ReturnCode(false);
  IEditorInput editorInput=this.getEditorInput();
  if (editorInput instanceof AnalysisItemEditorInput) {
    AnalysisItemEditorInput analysisInput=(AnalysisItemEditorInput)editorInput;
    TDQAnalysisItem tdqAnalysisItem=analysisInput.getTDQAnalysisItem();
    tdqAnalysisItem.getProperty().setLabel(analysisHandler.getName());
    this.nameText.setText(analysisHandler.getName());
    saved=ElementWriterFactory.getInstance().createAnalysisWrite().save(tdqAnalysisItem);
  }
  if (saved.isOk()) {
    RepositoryNode node=RepositoryNodeHelper.recursiveFind(tdProvider);
    if (node != null) {
      ElementWriterFactory.getInstance().createDataProviderWriter().save(node.getObject().getProperty().getItem());
    }
    if (log.isDebugEnabled()) {
      log.debug("String_Node_Str" + urlString + "String_Node_Str");
    }
    this.updateDQRuleDependency(oldDqRules);
  }
 else {
    throw new DataprofilerCoreException(DefaultMessagesImpl.getString("String_Node_Str",analysis.getName(),urlString,saved.getMessage()));
  }
  treeViewer.setDirty(false);
  dataFilterComp.setDirty(false);
}