Program: 25050
Project: 25050
Buggy source:
/** 
 * Parse the given string representation of a datatype.
 * @param datatype	String representation of a datatype.<i>Note: This string must not contain the length parameter or any other parameter. These latter should have been separated from the datatype before calling this function.</i>
 * @param length	Length of this datatype.<i>Note: This length will be used only for binary (BINARY and VARBINARY) and character (CHAR and VARCHAR) types.</i> 
 * @return	The object representation of the specified datatypeor NULL if the specified datatype can not be resolved.
 */
private static DBType parseType(String datatype,int length){
  if (datatype == null)   return null;
  try {
    DBDatatype dbDatatype=DBDatatype.valueOf(datatype.toUpperCase());
    length=(length <= 0) ? DBType.NO_LENGTH : length;
switch (dbDatatype) {
case CHAR:
case VARCHAR:
case BINARY:
case VARBINARY:
      return new DBType(dbDatatype,length);
default :
    return new DBType(dbDatatype);
}
}
 catch (IllegalArgumentException iae) {
datatype=datatype.toLowerCase();
if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.SMALLINT);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.SMALLINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.INTEGER);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BIGINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.REAL);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.DOUBLE);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BINARY,length);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.VARBINARY,length);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.CHAR,length);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.VARCHAR,length);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BLOB);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.CLOB);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.TIMESTAMP);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.POINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.REGION);
 else return null;
}
}

Fixed version (ground truth):
/** 
 * Parse the given string representation of a datatype.
 * @param datatype	String representation of a datatype.<i>Note: This string must not contain the length parameter or any other parameter. These latter should have been separated from the datatype before calling this function. It can however contain space(s) in first, last or intern position.</i>
 * @param length	Length of this datatype.<i>Note: This length will be used only for binary (BINARY and VARBINARY) and character (CHAR and VARCHAR) types.</i> 
 * @return	The object representation of the specified datatypeor NULL if the specified datatype can not be resolved.
 */
private static DBType parseType(String datatype,int length){
  if (datatype == null)   return null;
  datatype=datatype.trim().replaceAll("String_Node_Str","String_Node_Str");
  try {
    DBDatatype dbDatatype=DBDatatype.valueOf(datatype.toUpperCase());
    length=(length <= 0) ? DBType.NO_LENGTH : length;
switch (dbDatatype) {
case CHAR:
case VARCHAR:
case BINARY:
case VARBINARY:
      return new DBType(dbDatatype,length);
default :
    return new DBType(dbDatatype);
}
}
 catch (IllegalArgumentException iae) {
datatype=datatype.toLowerCase();
if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")) return new DBType(DBDatatype.SMALLINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")) return new DBType(DBDatatype.INTEGER);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BIGINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.REAL);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.DOUBLE);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BINARY,length);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.VARBINARY,length);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.CHAR,length);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.VARCHAR,length);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.BLOB);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.CLOB);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")|| datatype.equals("String_Node_Str")) return new DBType(DBDatatype.TIMESTAMP);
 else if (datatype.equals("String_Node_Str")) return new DBType(DBDatatype.POINT);
 else if (datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str") || datatype.equals("String_Node_Str")) return new DBType(DBDatatype.REGION);
 else return null;
}
}