Program: 90486
Project: 90486
Buggy source:
/** 
 * 返回当前条件对象表示的sql语句.
 * @return sql语句
 */
public String getSql(){
  StringBuilder SQL=new StringBuilder();
  if (orCond != null && orCond.length > 0) {
    SQL.append("String_Node_Str");
    for (    Condition cond : orCond) {
      SQL.append(cond.getSql()).append("String_Node_Str");
    }
    SQL.delete(SQL.lastIndexOf("String_Node_Str"),SQL.length());
    SQL.append("String_Node_Str");
    return SQL.toString();
  }
 else {
    SQL.append(field).append("String_Node_Str").append(opt.getSymbol()).append("String_Node_Str");
switch (opt) {
case IN:
      SQL.append("String_Node_Str");
    for (int i=0; i < Array.getLength(this.value); i++) {
      Object val=Array.get(this.value,i);
      Class<?> clazz=val.getClass();
      if (clazz == String.class) {
        SQL.append("String_Node_Str").append(val).append("String_Node_Str");
      }
 else       if (clazz == Boolean.class || clazz == Boolean.TYPE) {
        if ((Boolean)val) {
          SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
        }
 else {
          SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
        }
      }
 else {
        SQL.append(val);
      }
      SQL.append("String_Node_Str");
    }
  SQL.deleteCharAt(SQL.length() - 1);
SQL.append("String_Node_Str");
break;
case ISNULL:
break;
case ISNOTNULL:
break;
default :
Object value=this.value;
if (value instanceof String) {
SQL.append(value);
}
 else if (value instanceof Boolean) {
if ((Boolean)value) {
SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
}
 else {
SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
}
}
 else {
SQL.append(value);
}
break;
}
return SQL.toString();
}
}

Fixed version (ground truth):
/** 
 * 返回当前条件对象表示的sql语句.
 * @return sql语句
 */
public String getSql(){
  StringBuilder SQL=new StringBuilder();
  if (orCond != null && orCond.length > 0) {
    SQL.append("String_Node_Str");
    for (    Condition cond : orCond) {
      SQL.append(cond.getSql()).append("String_Node_Str");
    }
    SQL.delete(SQL.lastIndexOf("String_Node_Str"),SQL.length());
    SQL.append("String_Node_Str");
    return SQL.toString();
  }
 else {
    SQL.append(field).append("String_Node_Str").append(opt.getSymbol()).append("String_Node_Str");
switch (opt) {
case IN:
      SQL.append("String_Node_Str");
    for (int i=0; i < Array.getLength(this.value); i++) {
      Object val=Array.get(this.value,i);
      Class<?> clazz=val.getClass();
      if (clazz == String.class) {
        SQL.append("String_Node_Str").append(val).append("String_Node_Str");
      }
 else       if (clazz == Boolean.class || clazz == Boolean.TYPE) {
        if ((Boolean)val) {
          SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
        }
 else {
          SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
        }
      }
 else {
        SQL.append(val);
      }
      SQL.append("String_Node_Str");
    }
  SQL.deleteCharAt(SQL.length() - 1);
SQL.append("String_Node_Str");
break;
case ISNULL:
break;
case ISNOTNULL:
break;
default :
Object value=this.value;
if (value instanceof String) {
SQL.append(value);
}
 else if (value instanceof Boolean) {
if ((Boolean)value) {
SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
}
 else {
SQL.append("String_Node_Str").append("String_Node_Str").append("String_Node_Str");
}
}
 else {
SQL.append(value);
}
break;
}
return SQL.toString().trim();
}
}