Program: 57102
Project: 57102
Buggy source:
@Override protected void parseFile(BufferedReader reader) throws IOException {
  initializTables();
  swtGuiManager.setProgressBarText("String_Node_Str" + dataSetDescription.getDataSetName());
  float progressBarFactor=100f / numberOfLinesInFile;
  for (int countHeaderLines=0; countHeaderLines < dataSetDescription.getNumberOfHeaderLines(); countHeaderLines++) {
    reader.readLine();
  }
  ArrayList<ColumnDescription> parsingPattern=dataSetDescription.getOrCreateParsingPattern();
  int lineCounter=0;
  String numberParsingErrorMessage="String_Node_Str" + dataSetDescription.getDataSetName() + "String_Node_Str"+ filePath+ "String_Node_Str";
  boolean parsingErrorOccured=false;
  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();
  while ((line=reader.readLine()) != null) {
    String splitLine[]=line.split(dataSetDescription.getDelimiter());
    String id=splitLine[columnOfRowIDs];
    id=convertID(id,parsingRules);
    rowIDMappingManager.addMapping(mappingType,id,lineCounter - startParsingAtLine);
    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 {
        floatValue=Float.parseFloat(cellContent);
        targetColumn.add(floatValue);
      }
 catch (      NumberFormatException nfe) {
        parsingErrorOccured=true;
        numberParsingErrorMessage+="String_Node_Str" + (columnDescription.getColumn()) + "String_Node_Str"+ (lineCounter + dataSetDescription.getNumberOfHeaderLines())+ "String_Node_Str"+ cellContent+ "String_Node_Str";
        targetColumn.addUnknown();
      }
    break;
case INTEGER:
  Integer intValue;
@SuppressWarnings("String_Node_Str") IContainer<Integer> targetIntColumn=(IContainer<Integer>)targetRawContainer.get(count);
try {
intValue=Integer.parseInt(cellContent);
targetIntColumn.add(intValue);
}
 catch (NumberFormatException nfe) {
parsingErrorOccured=true;
numberParsingErrorMessage+="String_Node_Str" + (columnDescription.getColumn()) + "String_Node_Str"+ (lineCounter + dataSetDescription.getNumberOfHeaderLines())+ "String_Node_Str"+ cellContent+ "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();
parsingErrorOccured=true;
}
 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));
}
}
if (lineCounter % 100 == 0) {
swtGuiManager.setProgressBarPercentage((int)(progressBarFactor * lineCounter));
}
lineCounter++;
}
if (parsingErrorOccured) {
Logger.log(new Status(IStatus.ERROR,GeneralManager.PLUGIN_ID,numberParsingErrorMessage));
}
}

Fixed version (ground truth):
@Override protected void parseFile(BufferedReader reader) throws IOException {
  initializTables();
  swtGuiManager.setProgressBarText("String_Node_Str" + dataSetDescription.getDataSetName());
  float progressBarFactor=100f / numberOfLinesInFile;
  for (int countHeaderLines=0; countHeaderLines < dataSetDescription.getNumberOfHeaderLines(); countHeaderLines++) {
    reader.readLine();
  }
  ArrayList<ColumnDescription> parsingPattern=dataSetDescription.getOrCreateParsingPattern();
  int lineCounter=0;
  String numberParsingErrorMessage="String_Node_Str" + dataSetDescription.getDataSetName() + "String_Node_Str"+ filePath+ "String_Node_Str";
  boolean parsingErrorOccured=false;
  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();
  while ((line=reader.readLine()) != null) {
    String splitLine[]=line.split(dataSetDescription.getDelimiter());
    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 {
        floatValue=Float.parseFloat(cellContent);
        targetColumn.add(floatValue);
      }
 catch (      NumberFormatException nfe) {
        parsingErrorOccured=true;
        numberParsingErrorMessage+="String_Node_Str" + (columnDescription.getColumn()) + "String_Node_Str"+ (lineCounter + dataSetDescription.getNumberOfHeaderLines())+ "String_Node_Str"+ cellContent+ "String_Node_Str";
        targetColumn.addUnknown();
      }
    break;
case INTEGER:
  Integer intValue;
@SuppressWarnings("String_Node_Str") IContainer<Integer> targetIntColumn=(IContainer<Integer>)targetRawContainer.get(count);
try {
intValue=Integer.parseInt(cellContent);
targetIntColumn.add(intValue);
}
 catch (NumberFormatException nfe) {
parsingErrorOccured=true;
numberParsingErrorMessage+="String_Node_Str" + (columnDescription.getColumn()) + "String_Node_Str"+ (lineCounter + dataSetDescription.getNumberOfHeaderLines())+ "String_Node_Str"+ cellContent+ "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();
parsingErrorOccured=true;
}
 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) {
swtGuiManager.setProgressBarPercentage((int)(progressBarFactor * lineCounter));
}
lineCounter++;
}
if (parsingErrorOccured) {
Logger.log(new Status(IStatus.ERROR,this.toString(),numberParsingErrorMessage));
}
}