Program: 44335
Project: 44335
Buggy source:
public static PreparedStatement prepareStatement(Connection con,String sql,ArrayList<BoundVariable> boundVariables) throws SQLException {
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str");
  }
  PreparedStatement statement=con.prepareStatement(sql);
  for (  BoundVariable bv : boundVariables) {
    if (bv.getPosition() == 0) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str");
      }
      bv.setPosition(boundVariables.size());
    }
    if (bv.getValue() == null) {
      statement.setNull(bv.getPosition(),Types.VARCHAR);
      continue;
    }
    if (bv.getType() == String.class) {
      if (bv.getName().toLowerCase().indexOf("String_Node_Str") > 0) {
        if ("String_Node_Str".equals(bv.getValue().toString())) {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setNull(bv.getPosition(),Types.DATE);
        }
 else {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str");
          }
          String format="String_Node_Str";
          if (bv.getName().toLowerCase().indexOf("String_Node_Str") > 0)           format="String_Node_Str";
          SimpleDateFormat sdf=new SimpleDateFormat(format);
          sdf.setLenient(false);
          try {
            java.util.Date dt=sdf.parse(bv.getValue().toString());
            Date newDate=new Date(dt.getTime());
            statement.setDate(bv.getPosition(),newDate);
          }
 catch (          ParseException e) {
            throw new RuntimeException("String_Node_Str" + bv.getValue(),e);
          }
        }
      }
 else {
        if ("String_Node_Str".equals(bv.getValue().toString())) {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setNull(bv.getPosition(),Types.VARCHAR);
        }
 else {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setString(bv.getPosition(),bv.getValue().toString());
        }
      }
    }
 else     if (bv.getType() == Integer.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setInt(bv.getPosition(),Integer.parseInt(bv.getValue().toString(),10));
    }
 else     if (bv.getType() == Long.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setLong(bv.getPosition(),Long.parseLong(bv.getValue().toString(),10));
    }
 else     if (bv.getType() == Double.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setDouble(bv.getPosition(),Double.parseDouble(bv.getValue().toString()));
    }
 else     if (bv.getType() == Float.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setFloat(bv.getPosition(),Float.parseFloat(bv.getValue().toString()));
    }
 else     if ("String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setString(bv.getPosition(),bv.getValue().toString());
    }
 else     if (bv.getValue() instanceof java.util.Date) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setTimestamp(bv.getPosition(),new java.sql.Timestamp(((java.util.Date)bv.getValue()).getTime()));
    }
 else {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setString(bv.getPosition(),bv.getValue().toString());
    }
  }
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str");
  }
  return statement;
}

Fixed version (ground truth):
public static PreparedStatement prepareStatement(Connection con,String sql,ArrayList<BoundVariable> boundVariables) throws SQLException {
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str");
  }
  PreparedStatement statement=con.prepareStatement(sql);
  for (  BoundVariable bv : boundVariables) {
    if (bv.getPosition() == 0) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str");
      }
      bv.setPosition(boundVariables.size());
    }
    if (bv.getValue() == null) {
      statement.setNull(bv.getPosition(),Types.NULL);
      continue;
    }
    if (bv.getType() == String.class) {
      if (bv.getName().toLowerCase().indexOf("String_Node_Str") > 0) {
        if ("String_Node_Str".equals(bv.getValue().toString())) {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setNull(bv.getPosition(),Types.DATE);
        }
 else {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str");
          }
          String format="String_Node_Str";
          if (bv.getName().toLowerCase().indexOf("String_Node_Str") > 0)           format="String_Node_Str";
          SimpleDateFormat sdf=new SimpleDateFormat(format);
          sdf.setLenient(false);
          try {
            java.util.Date dt=sdf.parse(bv.getValue().toString());
            Date newDate=new Date(dt.getTime());
            statement.setDate(bv.getPosition(),newDate);
          }
 catch (          ParseException e) {
            throw new RuntimeException("String_Node_Str" + bv.getValue(),e);
          }
        }
      }
 else {
        if ("String_Node_Str".equals(bv.getValue().toString())) {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setNull(bv.getPosition(),Types.VARCHAR);
        }
 else {
          if (log.isDebugEnabled()) {
            log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
          }
          statement.setString(bv.getPosition(),bv.getValue().toString());
        }
      }
    }
 else     if (bv.getType() == Integer.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setInt(bv.getPosition(),Integer.parseInt(bv.getValue().toString(),10));
    }
 else     if (bv.getType() == Long.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setLong(bv.getPosition(),Long.parseLong(bv.getValue().toString(),10));
    }
 else     if (bv.getType() == Double.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setDouble(bv.getPosition(),Double.parseDouble(bv.getValue().toString()));
    }
 else     if (bv.getType() == Float.class || "String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setFloat(bv.getPosition(),Float.parseFloat(bv.getValue().toString()));
    }
 else     if (bv.getType() == byte[].class) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setBlob(bv.getPosition(),new ByteArrayInputStream((byte[])bv.getValue()));
    }
 else     if ("String_Node_Str".equals(bv.getType().getName())) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setString(bv.getPosition(),bv.getValue().toString());
    }
 else     if (bv.getValue() instanceof java.util.Date) {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setTimestamp(bv.getPosition(),new java.sql.Timestamp(((java.util.Date)bv.getValue()).getTime()));
    }
 else {
      if (log.isDebugEnabled()) {
        log.debug("String_Node_Str" + bv.getName() + "String_Node_Str");
      }
      statement.setString(bv.getPosition(),bv.getValue().toString());
    }
  }
  if (log.isDebugEnabled()) {
    log.debug("String_Node_Str");
  }
  return statement;
}