Program: 56781
Project: 56781
Buggy source:
@Override protected void parseFile(BufferedReader reader) throws IOException {
  SubMonitor monitor=GeneralManager.get().createSubProgressMonitor();
  monitor.beginTask("String_Node_Str" + dataSetDescription.getDataSetName(),calculateNumberOfLinesInFile());
  initializTables();
  for (int countHeaderLines=0; countHeaderLines < dataSetDescription.getNumberOfHeaderLines(); countHeaderLines++) {
    reader.readLine();
  }
  monitor.worked(dataSetDescription.getNumberOfHeaderLines());
  List<ColumnDescription> parsingPattern=dataSetDescription.getOrCreateParsingPattern();
  int lineCounter=0;
  StringBuilder numberParsingErrorMessage=new StringBuilder("String_Node_Str").append(dataSetDescription.getDataSetName()).append("String_Node_Str").append(filePath).append("String_Node_Str");
  final int numberParsingErrorMessageEmpty=numberParsingErrorMessage.length();
  IDSpecification rowIDSpecification=dataSetDescription.getRowIDSpecification();
  IDCategory rowIDCategory=IDCategory.getIDCategory(rowIDSpecification.getIdCategory());
  IDType fromIDType=IDType.getIDType(rowIDSpecification.getIdType());
  IDType toIDType;
  if (dataDomain.isColumnDimension())   toIDType=dataDomain.getRecordIDType();
 else   toIDType=dataDomain.getDimensionIDType();
  IDMappingManager rowIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(rowIDCategory);
  int columnOfRowIDs=dataSetDescription.getColumnOfRowIds();
  MappingType mappingType=rowIDMappingManager.createMap(fromIDType,toIDType,false,true);
  IDTypeParsingRules parsingRules=null;
  if (rowIDSpecification.getIdTypeParsingRules() != null)   parsingRules=rowIDSpecification.getIdTypeParsingRules();
 else   if (toIDType.getIdTypeParsingRules() != null)   parsingRules=fromIDType.getIdTypeParsingRules();
  String line;
  DataDescription dataDescription=dataSetDescription.getDataDescription();
  int naCounter=0;
  while ((line=reader.readLine()) != null) {
    String splitLine[]=line.split(dataSetDescription.getDelimiter(),-1);
    String id=splitLine[columnOfRowIDs];
    id=convertID(id,parsingRules);
    rowIDMappingManager.addMapping(mappingType,id,lineCounter);
    for (int count=0; count < parsingPattern.size(); count++) {
      ColumnDescription columnDescription=parsingPattern.get(count);
      if (columnDescription.getDataDescription() != null) {
        dataDescription=columnDescription.getDataDescription();
      }
      String cellContent=splitLine[columnDescription.getColumn()];
      try {
switch (dataDescription.getRawDataType()) {
case FLOAT:
          float floatValue;
        FloatContainer targetColumn=(FloatContainer)targetRawContainer.get(count);
      try {
        if ("String_Node_Str".equals(cellContent)) {
          naCounter++;
          targetColumn.addUnknown();
          break;
        }
        floatValue=Float.parseFloat(cellContent);
        targetColumn.add(floatValue);
      }
 catch (      NumberFormatException nfe) {
        numberParsingErrorMessage.append("String_Node_Str").append(columnDescription.getColumn()).append("String_Node_Str").append(lineCounter + dataSetDescription.getNumberOfHeaderLines()).append("String_Node_Str").append(cellContent).append("String_Node_Str");
        targetColumn.addUnknown();
      }
    break;
case INTEGER:
  Integer intValue;
@SuppressWarnings("String_Node_Str") IContainer<Integer> targetIntColumn=(IContainer<Integer>)targetRawContainer.get(count);
try {
if ("String_Node_Str".equals(cellContent)) {
  naCounter++;
  targetIntColumn.addUnknown();
  break;
}
intValue=Integer.parseInt(cellContent);
targetIntColumn.add(intValue);
}
 catch (NumberFormatException nfe) {
numberParsingErrorMessage.append("String_Node_Str").append(columnDescription.getColumn()).append("String_Node_Str").append(lineCounter + dataSetDescription.getNumberOfHeaderLines()).append("String_Node_Str").append(cellContent).append("String_Node_Str");
targetIntColumn.addUnknown();
}
break;
case STRING:
String stringValue=cellContent.trim();
@SuppressWarnings("String_Node_Str") IContainer<String> targetStringColumn=(IContainer<String>)targetRawContainer.get(count);
if (stringValue.length() == 0) {
targetStringColumn.addUnknown();
}
 else {
targetStringColumn.add(stringValue);
}
break;
default :
throw new IllegalStateException("String_Node_Str" + dataDescription.getRawDataType());
}
}
 catch (IndexOutOfBoundsException ioobe) {
Logger.log(new Status(IStatus.ERROR,this.toString(),"String_Node_Str" + lineCounter + "String_Node_Str"+ count,ioobe));
}
}
if (lineCounter % 100 == 0) {
monitor.worked(100);
}
lineCounter++;
}
if (naCounter > 0) {
numberParsingErrorMessage.append("String_Node_Str").append(naCounter);
}
if (numberParsingErrorMessage.length() > numberParsingErrorMessageEmpty) {
Logger.log(new Status(IStatus.ERROR,this.toString(),numberParsingErrorMessage.toString()));
}
monitor.done();
}

Fixed version (ground truth):
@Override protected void parseFile(BufferedReader reader) throws IOException {
  SubMonitor monitor=GeneralManager.get().createSubProgressMonitor();
  monitor.beginTask("String_Node_Str" + dataSetDescription.getDataSetName(),calculateNumberOfLinesInFile());
  initializTables();
  for (int countHeaderLines=0; countHeaderLines < dataSetDescription.getNumberOfHeaderLines(); countHeaderLines++) {
    reader.readLine();
  }
  monitor.worked(dataSetDescription.getNumberOfHeaderLines());
  List<ColumnDescription> parsingPattern=dataSetDescription.getOrCreateParsingPattern();
  int lineCounter=0;
  StringBuilder numberParsingErrorMessage=new StringBuilder("String_Node_Str").append(dataSetDescription.getDataSetName()).append("String_Node_Str").append(filePath).append("String_Node_Str");
  final int numberParsingErrorMessageEmpty=numberParsingErrorMessage.length();
  IDSpecification rowIDSpecification=dataSetDescription.getRowIDSpecification();
  IDCategory rowIDCategory=IDCategory.getIDCategory(rowIDSpecification.getIdCategory());
  IDType fromIDType=IDType.getIDType(rowIDSpecification.getIdType());
  IDType toIDType;
  if (dataDomain.isColumnDimension())   toIDType=dataDomain.getRecordIDType();
 else   toIDType=dataDomain.getDimensionIDType();
  IDMappingManager rowIDMappingManager=IDMappingManagerRegistry.get().getIDMappingManager(rowIDCategory);
  int columnOfRowIDs=dataSetDescription.getColumnOfRowIds();
  MappingType mappingType=rowIDMappingManager.createMap(fromIDType,toIDType,false,true);
  IDTypeParsingRules parsingRules=null;
  if (rowIDSpecification.getIdTypeParsingRules() != null)   parsingRules=rowIDSpecification.getIdTypeParsingRules();
 else   if (toIDType.getIdTypeParsingRules() != null)   parsingRules=fromIDType.getIdTypeParsingRules();
  String line;
  DataDescription dataDescription=dataSetDescription.getDataDescription();
  int naCounter=0;
  while ((line=reader.readLine()) != null) {
    String splitLine[]=line.split(dataSetDescription.getDelimiter(),-1);
    String id=splitLine[columnOfRowIDs];
    id=convertID(id,parsingRules);
    rowIDMappingManager.addMapping(mappingType,id,lineCounter);
    for (int count=0; count < parsingPattern.size(); count++) {
      ColumnDescription columnDescription=parsingPattern.get(count);
      if (columnDescription.getDataDescription() != null) {
        dataDescription=columnDescription.getDataDescription();
      }
      int columnIndex=columnDescription.getColumn();
      String cellContent=null;
      if (columnIndex >= splitLine.length) {
        cellContent="String_Node_Str";
        Logger.log(new Status(IStatus.WARNING,this.toString(),"String_Node_Str" + lineCounter + "String_Node_Str"));
      }
 else {
        cellContent=splitLine[columnIndex];
      }
      try {
switch (dataDescription.getRawDataType()) {
case FLOAT:
          float floatValue;
        FloatContainer targetColumn=(FloatContainer)targetRawContainer.get(count);
      try {
        if ("String_Node_Str".equals(cellContent)) {
          naCounter++;
          targetColumn.addUnknown();
          break;
        }
        floatValue=Float.parseFloat(cellContent);
        targetColumn.add(floatValue);
      }
 catch (      NumberFormatException nfe) {
        numberParsingErrorMessage.append("String_Node_Str").append(columnDescription.getColumn()).append("String_Node_Str").append(lineCounter + dataSetDescription.getNumberOfHeaderLines()).append("String_Node_Str").append(cellContent).append("String_Node_Str");
        targetColumn.addUnknown();
      }
    break;
case INTEGER:
  Integer intValue;
@SuppressWarnings("String_Node_Str") IContainer<Integer> targetIntColumn=(IContainer<Integer>)targetRawContainer.get(count);
try {
if ("String_Node_Str".equals(cellContent)) {
  naCounter++;
  targetIntColumn.addUnknown();
  break;
}
intValue=Integer.parseInt(cellContent);
targetIntColumn.add(intValue);
}
 catch (NumberFormatException nfe) {
numberParsingErrorMessage.append("String_Node_Str").append(columnDescription.getColumn()).append("String_Node_Str").append(lineCounter + dataSetDescription.getNumberOfHeaderLines()).append("String_Node_Str").append(cellContent).append("String_Node_Str");
targetIntColumn.addUnknown();
}
break;
case STRING:
String stringValue=cellContent.trim();
@SuppressWarnings("String_Node_Str") IContainer<String> targetStringColumn=(IContainer<String>)targetRawContainer.get(count);
if (stringValue.length() == 0) {
targetStringColumn.addUnknown();
}
 else {
targetStringColumn.add(stringValue);
}
break;
default :
throw new IllegalStateException("String_Node_Str" + dataDescription.getRawDataType());
}
}
 catch (IndexOutOfBoundsException ioobe) {
Logger.log(new Status(IStatus.ERROR,this.toString(),"String_Node_Str" + lineCounter + "String_Node_Str"+ count,ioobe));
}
}
if (lineCounter % 100 == 0) {
monitor.worked(100);
}
lineCounter++;
}
if (naCounter > 0) {
numberParsingErrorMessage.append("String_Node_Str").append(naCounter);
}
if (numberParsingErrorMessage.length() > numberParsingErrorMessageEmpty) {
Logger.log(new Status(IStatus.ERROR,this.toString(),numberParsingErrorMessage.toString()));
}
monitor.done();
}