Program: 126679
Project: 126679
Buggy source:
/** 
 * Parse SF field to Talend data type <p> DOC YeXiaowei Comment method "parseFieldToMetadataColumn".
 * @param field
 * @return
 */
private IMetadataColumn parseFieldToMetadataColumn(Field field){
  if (field == null) {
    return null;
  }
  IMetadataColumn mdColumn=new org.talend.core.model.metadata.MetadataColumn();
  mdColumn.setLabel(field.getName());
  mdColumn.setKey(false);
  String type=field.getType().toString();
  String talendType="String_Node_Str";
  if (type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else {
    talendType="String_Node_Str";
  }
  mdColumn.setTalendType("String_Node_Str" + talendType);
  mdColumn.setNullable(field.getNillable());
  if (type.equals("String_Node_Str")) {
    mdColumn.setPattern("String_Node_Str");
  }
 else   if (type.equals("String_Node_Str")) {
    mdColumn.setPattern("String_Node_Str");
  }
 else {
    mdColumn.setPattern(null);
  }
  if ("String_Node_Str".equals(talendType)) {
    mdColumn.setLength(field.getLength());
    mdColumn.setPrecision(field.getPrecision());
  }
 else {
    mdColumn.setLength(field.getPrecision());
    mdColumn.setPrecision(field.getScale());
  }
  mdColumn.setDefault(field.getDefaultValueFormula());
  return mdColumn;
}

Fixed version (ground truth):
/** 
 * Parse SF field to Talend data type <p> DOC YeXiaowei Comment method "parseFieldToMetadataColumn".
 * @param field
 * @return
 */
private IMetadataColumn parseFieldToMetadataColumn(Field field){
  if (field == null) {
    return null;
  }
  IMetadataColumn mdColumn=new org.talend.core.model.metadata.MetadataColumn();
  mdColumn.setLabel(field.getName());
  mdColumn.setKey(false);
  String type=field.getType().toString();
  String talendType="String_Node_Str";
  if (type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else   if (type.equals("String_Node_Str") || type.equals("String_Node_Str") || type.equals("String_Node_Str")) {
    talendType="String_Node_Str";
  }
 else {
    talendType="String_Node_Str";
  }
  mdColumn.setTalendType("String_Node_Str" + talendType);
  mdColumn.setNullable(field.getNillable());
  if (type.equals("String_Node_Str")) {
    mdColumn.setPattern("String_Node_Str");
  }
 else   if (type.equals("String_Node_Str")) {
    mdColumn.setPattern("String_Node_Str");
  }
 else {
    mdColumn.setPattern(null);
  }
  if ("String_Node_Str".equals(talendType)) {
    mdColumn.setLength(field.getLength());
    mdColumn.setPrecision(field.getPrecision());
  }
 else {
    mdColumn.setLength(field.getPrecision());
    mdColumn.setPrecision(field.getScale());
  }
  mdColumn.setDefault(field.getDefaultValueFormula());
  return mdColumn;
}