Program: 121374
Project: 121374
Buggy source:
private void getSchemaFromSPSSFile(){
  try {
    List<IMetadataTable> metadataList=getMetadataList();
    MetadataTable metaTable=(MetadataTable)metadataList.get(0);
    metaTable.getListColumns().clear();
    MetadataTableEditor tableEditor=new MetadataTableEditor(metaTable,"String_Node_Str");
    spss spssIn=new spss();
    spssfile spssFile=spssIn.openFile(strFileName,spssfile.SPSS_READ);
    String strComponentName=this.getComponent().getName();
    spssvariables spssVars=spssFile.getVariables();
    spssvariable spssVar;
    for (int i=0; i < spssVars.getNumberOfVariables(); i++) {
      spssVar=spssVars.getVariabelAtPos(i);
      IMetadataColumn column=tableEditor.createNewMetadataColumn();
      column.setLabel(spssVar.getName());
      column.setOriginalDbColumnName(spssVar.getName());
      if (spssVar.hasLabels() && strTranslateLabels.toLowerCase().equals("String_Node_Str")) {
        column.setLength(spssVar.getMaxLengthByLableTranslation());
        column.setPrecision(0);
        column.setTalendType("String_Node_Str");
      }
 else {
switch (spssVar.getJAVAType()) {
case spssvariable.JAVA_TYPE_DOUBLE:
          column.setTalendType("String_Node_Str");
        break;
case spssvariable.JAVA_TYPE_STRING:
      column.setTalendType("String_Node_Str");
    break;
case spssvariable.JAVA_TYPE_DATE:
  column.setTalendType("String_Node_Str");
break;
}
column.setLength(spssVar.getDecimals());
column.setPrecision(spssVar.getPrecision());
}
String strLabel=spssVar.getLabel();
if (null != strLabel && strLabel.length() > 0) column.setComment(strLabel);
 else column.setComment("String_Node_Str");
if (null == strComponentName || strComponentName.toLowerCase().equals("String_Node_Str")) column.setReadOnly(true);
 else column.setReadOnly(false);
metaTable.getListColumns().add(column);
}
spssFile.close();
}
 catch (Exception e) {
log.error("String_Node_Str",e);
}
}

Fixed version (ground truth):
private void getSchemaFromSPSSFile(){
  try {
    List<IMetadataTable> metadataList=getMetadataList();
    MetadataTable metaTable=(MetadataTable)metadataList.get(0);
    metaTable.getListColumns().clear();
    MetadataTableEditor tableEditor=new MetadataTableEditor(metaTable,"String_Node_Str");
    spss spssIn=new spss();
    spssfile spssFile=spssIn.openFile(strFileName,spssfile.SPSS_READ);
    String strComponentName=this.getComponent().getName();
    spssvariables spssVars=spssFile.getVariables();
    spssvariable spssVar;
    for (int i=0; i < spssVars.getNumberOfVariables(); i++) {
      spssVar=spssVars.getVariabelAtPos(i);
      IMetadataColumn column=tableEditor.createNewMetadataColumn();
      String lableName=MetadataToolHelper.validateColumnName(spssVar.getName(),i);
      column.setLabel(lableName);
      column.setOriginalDbColumnName(spssVar.getName());
      if (spssVar.hasLabels() && strTranslateLabels.toLowerCase().equals("String_Node_Str")) {
        column.setLength(spssVar.getMaxLengthByLableTranslation());
        column.setPrecision(0);
        column.setTalendType("String_Node_Str");
      }
 else {
switch (spssVar.getJAVAType()) {
case spssvariable.JAVA_TYPE_DOUBLE:
          column.setTalendType("String_Node_Str");
        break;
case spssvariable.JAVA_TYPE_STRING:
      column.setTalendType("String_Node_Str");
    break;
case spssvariable.JAVA_TYPE_DATE:
  column.setTalendType("String_Node_Str");
break;
}
column.setLength(spssVar.getDecimals());
column.setPrecision(spssVar.getPrecision());
}
String strLabel=spssVar.getLabel();
if (null != strLabel && strLabel.length() > 0) column.setComment(strLabel);
 else column.setComment("String_Node_Str");
if (null == strComponentName || strComponentName.toLowerCase().equals("String_Node_Str")) column.setReadOnly(true);
 else column.setReadOnly(false);
metaTable.getListColumns().add(column);
}
spssFile.close();
}
 catch (Exception e) {
log.error("String_Node_Str",e);
}
}