Program: 129561
Project: 129561
Buggy source:
/** 
 * This method determine if the 'Finish' button is enable This method is called when 'Finish' button is pressed in the wizard. We will create an operation and run it using wizard as execution context.
 */
@Override public boolean performFinish(){
  if (tableWizardpage.isPageComplete()) {
    DatabaseConnection connection=(DatabaseConnection)connectionItem.getConnection();
    EList<Package> dataPackageTemConnection=temConnection.getDataPackage();
    EList<Package> dataPackageFromOrignalConnection=connection.getDataPackage();
    if (PluginChecker.isTDQLoaded()) {
      saveMetaData();
      ITDQRepositoryService tdqRepositoryService=null;
      boolean needUpdateAnalysis=false;
      if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
        tdqRepositoryService=(ITDQRepositoryService)org.talend.core.GlobalServiceRegister.getDefault().getService(ITDQRepositoryService.class);
        needUpdateAnalysis=isNeedUpdateDQ(temConnection,connection,tdqRepositoryService);
      }
      if (tdqRepositoryService != null && needUpdateAnalysis) {
        if (!tdqRepositoryService.confirmUpdateAnalysis(connectionItem)) {
          return true;
        }
      }
      generateOriginalColumnsMap(dataPackageFromOrignalConnection);
      Collection<Package> copyDataPackage=EcoreUtil.copyAll(dataPackageTemConnection);
      ConnectionHelper.addPackages(copyDataPackage,connection);
      replaceUUidsForColumnsAndTables(copyDataPackage);
      saveMetaData();
      if (tdqRepositoryService != null && needUpdateAnalysis) {
        tdqRepositoryService.updateImpactOnAnalysis(connectionItem);
      }
    }
 else {
      Collection<Package> copyDataPackage=EcoreUtil.copyAll(dataPackageTemConnection);
      ConnectionHelper.addPackages(copyDataPackage,connection);
      saveMetaData();
    }
    RepositoryUpdateManager.updateMultiSchema(connectionItem,oldMetadataTable,oldTableMap);
    closeLockStrategy();
    List<IRepositoryViewObject> list=new ArrayList<IRepositoryViewObject>();
    list.add(repositoryObject);
    CoreRuntimePlugin.getInstance().getRepositoryService().notifySQLBuilder(list);
    temConnection=null;
    return true;
  }
 else {
    return false;
  }
}

Fixed version (ground truth):
/** 
 * This method determine if the 'Finish' button is enable This method is called when 'Finish' button is pressed in the wizard. We will create an operation and run it using wizard as execution context.
 */
@Override public boolean performFinish(){
  if (tableWizardpage.isPageComplete()) {
    IWorkspace workspace=ResourcesPlugin.getWorkspace();
    IWorkspaceRunnable operation=new IWorkspaceRunnable(){
      public void run(      IProgressMonitor monitor) throws CoreException {
        DatabaseConnection connection=(DatabaseConnection)connectionItem.getConnection();
        EList<Package> dataPackageTemConnection=temConnection.getDataPackage();
        EList<Package> dataPackageFromOrignalConnection=connection.getDataPackage();
        if (PluginChecker.isTDQLoaded()) {
          saveMetaData();
          ITDQRepositoryService tdqRepositoryService=null;
          boolean needUpdateAnalysis=false;
          if (GlobalServiceRegister.getDefault().isServiceRegistered(ITDQRepositoryService.class)) {
            tdqRepositoryService=(ITDQRepositoryService)org.talend.core.GlobalServiceRegister.getDefault().getService(ITDQRepositoryService.class);
            needUpdateAnalysis=isNeedUpdateDQ(temConnection,connection,tdqRepositoryService);
          }
          if (tdqRepositoryService != null && needUpdateAnalysis) {
            if (!tdqRepositoryService.confirmUpdateAnalysis(connectionItem)) {
              return;
            }
          }
          generateOriginalColumnsMap(dataPackageFromOrignalConnection);
          Collection<Package> copyDataPackage=EcoreUtil.copyAll(dataPackageTemConnection);
          ConnectionHelper.addPackages(copyDataPackage,connection);
          replaceUUidsForColumnsAndTables(copyDataPackage);
          saveMetaData();
          if (tdqRepositoryService != null && needUpdateAnalysis) {
            tdqRepositoryService.updateImpactOnAnalysis(connectionItem);
          }
        }
 else {
          Collection<Package> copyDataPackage=EcoreUtil.copyAll(dataPackageTemConnection);
          ConnectionHelper.addPackages(copyDataPackage,connection);
          saveMetaData();
        }
        RepositoryUpdateManager.updateMultiSchema(connectionItem,oldMetadataTable,oldTableMap);
        closeLockStrategy();
        List<IRepositoryViewObject> list=new ArrayList<IRepositoryViewObject>();
        list.add(repositoryObject);
        CoreRuntimePlugin.getInstance().getRepositoryService().notifySQLBuilder(list);
        temConnection=null;
      }
    }
;
    try {
      workspace.run(operation,null);
    }
 catch (    CoreException e) {
      e.printStackTrace();
    }
    return true;
  }
 else {
    return false;
  }
}