Program: 167423
Project: 167423
Buggy source:
protected void calculateDiff(ISendMessageCallback callback){
  for (  ModelEntity entity : entities) {
    Component component=context.getFlowStep().getComponent();
    ComponentEntitySetting add=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_ADD_ENABLED);
    ComponentEntitySetting chg=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_CHG_ENABLED);
    ComponentEntitySetting del=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_DEL_ENABLED);
    boolean addEnabled=add != null ? Boolean.parseBoolean(add.getValue()) : true;
    boolean chgEnabled=chg != null ? Boolean.parseBoolean(chg.getValue()) : true;
    boolean delEnabled=del != null ? Boolean.parseBoolean(del.getValue()) : true;
    StringBuilder addSql=new StringBuilder("String_Node_Str");
    StringBuilder chgSql=new StringBuilder(addSql);
    StringBuilder delSql=new StringBuilder(addSql);
    appendColumns(addSql,"String_Node_Str",entity);
    appendColumns(delSql,"String_Node_Str",entity);
    appendColumns(chgSql,"String_Node_Str",entity);
    addSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    delSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    chgSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    boolean secondPk=false;
    for (    ModelAttribute attribute : entity.getModelAttributes()) {
      if (attribute.isPk()) {
        if (secondPk) {
          addSql.append("String_Node_Str");
          delSql.append("String_Node_Str");
          chgSql.append("String_Node_Str");
        }
        addSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        delSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        chgSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        secondPk=true;
      }
    }
    addSql.append("String_Node_Str");
    delSql.append("String_Node_Str");
    chgSql.append("String_Node_Str");
    secondPk=false;
    boolean secondCol=false;
    for (    ModelAttribute attribute : entity.getModelAttributes()) {
      if (attribute.isPk()) {
        if (secondPk) {
          addSql.append("String_Node_Str");
          delSql.append("String_Node_Str");
        }
        addSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str");
        delSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str");
        secondPk=true;
      }
 else {
        if (secondCol) {
          chgSql.append("String_Node_Str");
        }
        chgSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        secondCol=true;
      }
    }
    if (entity.hasOnlyPrimaryKeys()) {
      chgSql.append("String_Node_Str");
    }
    log(LogLevel.INFO,"String_Node_Str",addSql);
    log(LogLevel.INFO,"String_Node_Str",chgSql);
    log(LogLevel.INFO,"String_Node_Str",delSql);
    RdbmsReader reader=new RdbmsReader();
    reader.setDataSource(databasePlatform.getDataSource());
    reader.setContext(context);
    reader.setComponentDefinition(componentDefinition);
    reader.setRowsPerMessage(rowsPerMessage);
    if (addEnabled) {
      reader.setSql(addSql.toString());
      reader.setEntityChangeType(ChangeType.ADD);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
    if (chgEnabled) {
      reader.setSql(chgSql.toString());
      reader.setEntityChangeType(ChangeType.CHG);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
    if (delEnabled) {
      reader.setSql(delSql.toString());
      reader.setEntityChangeType(ChangeType.DEL);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
  }
  ResettableBasicDataSource ds=databasePlatform.getDataSource();
  ds.close();
  databasePlatform=null;
  if (!inMemoryCompare) {
    try {
      Files.list(Paths.get(System.getProperty("String_Node_Str"))).filter(path -> path.toFile().getName().startsWith(databaseName)).forEach(path -> deleteDatabaseFile(path.toFile()));
    }
 catch (    IOException e) {
      log.warn("String_Node_Str",e);
    }
  }
}

Fixed version (ground truth):
protected void calculateDiff(ISendMessageCallback callback){
  for (  ModelEntity entity : entities) {
    Component component=context.getFlowStep().getComponent();
    ComponentEntitySetting add=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_ADD_ENABLED);
    ComponentEntitySetting chg=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_CHG_ENABLED);
    ComponentEntitySetting del=component.getSingleEntitySetting(entity.getId(),DataDiff.ENTITY_DEL_ENABLED);
    boolean addEnabled=add != null ? Boolean.parseBoolean(add.getValue()) : true;
    boolean chgEnabled=chg != null ? Boolean.parseBoolean(chg.getValue()) : true;
    boolean delEnabled=del != null ? Boolean.parseBoolean(del.getValue()) : true;
    StringBuilder addSql=new StringBuilder("String_Node_Str");
    StringBuilder chgSql=new StringBuilder(addSql);
    StringBuilder delSql=new StringBuilder(addSql);
    appendColumns(addSql,"String_Node_Str",entity);
    appendColumns(delSql,"String_Node_Str",entity);
    appendColumns(chgSql,"String_Node_Str",entity);
    addSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    delSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    chgSql.append("String_Node_Str" + entity.getName() + "String_Node_Str"+ entity.getName()+ "String_Node_Str");
    boolean secondPk=false;
    for (    ModelAttribute attribute : entity.getModelAttributes()) {
      if (attribute.isPk()) {
        if (secondPk) {
          addSql.append("String_Node_Str");
          delSql.append("String_Node_Str");
          chgSql.append("String_Node_Str");
        }
        addSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        delSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        chgSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        secondPk=true;
      }
    }
    addSql.append("String_Node_Str");
    delSql.append("String_Node_Str");
    chgSql.append("String_Node_Str");
    secondPk=false;
    boolean secondCol=false;
    for (    ModelAttribute attribute : entity.getModelAttributes()) {
      if (attribute.isPk()) {
        if (secondPk) {
          addSql.append("String_Node_Str");
          delSql.append("String_Node_Str");
        }
        addSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str");
        delSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str");
        secondPk=true;
      }
 else {
        if (secondCol) {
          chgSql.append("String_Node_Str");
        }
        chgSql.append("String_Node_Str").append(attribute.getName()).append("String_Node_Str").append("String_Node_Str").append(attribute.getName());
        secondCol=true;
      }
    }
    if (entity.hasOnlyPrimaryKeys()) {
      chgSql.append("String_Node_Str");
    }
    log(LogLevel.INFO,"String_Node_Str",addSql);
    log(LogLevel.INFO,"String_Node_Str",chgSql);
    log(LogLevel.INFO,"String_Node_Str",delSql);
    RdbmsReader reader=new RdbmsReader();
    reader.setDataSource(databasePlatform.getDataSource());
    reader.setContext(context);
    reader.setComponentDefinition(componentDefinition);
    reader.setRowsPerMessage(rowsPerMessage);
    if (addEnabled) {
      reader.setSql(addSql.toString());
      reader.setEntityChangeType(ChangeType.ADD);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
    if (chgEnabled) {
      reader.setSql(chgSql.toString());
      reader.setEntityChangeType(ChangeType.CHG);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
    if (delEnabled) {
      reader.setSql(delSql.toString());
      reader.setEntityChangeType(ChangeType.DEL);
      reader.handle(new ControlMessage(this.context.getFlowStep().getId()),callback,false);
    }
  }
  ResettableBasicDataSource ds=databasePlatform.getDataSource();
  ds.close();
  if (!inMemoryCompare) {
    try {
      Files.list(Paths.get(System.getProperty("String_Node_Str"))).filter(path -> path.toFile().getName().startsWith(databaseName)).forEach(path -> deleteDatabaseFile(path.toFile()));
    }
 catch (    IOException e) {
      log.warn("String_Node_Str",e);
    }
  }
  databasePlatform=null;
  databaseName=null;
  databaseWriter=null;
}