[Demonstration 1]

[Buggy Method]
public static void updateRelease(ReleaseModel rm) throws FtdException {
    String sql = "update article set is_released=?,released_time=? where article_id=?";
    DBClient dbClient = SysMgr.getInstance().getDbClient();
    try {
        dbClient.executeUpdate(sql, 1, StrUtil.datetime(rm.getReleaseTime()), rm.getModelId());
    } catch (SQLException e) {
        throw new FtdException(e, "db.sql.error");
    }
}

[Buggy Hunk]
StrUtil.datetime(rm.getReleaseTime()), rm.getModelId());

[Patch]
StrUtil.datetime(rm.getReleaseTime()), rm.getArticleId());

[Demonstration 2]

[Buggy Method]
public static ArrayList<ReadingMaterial> getUserListBorrowedRM(int rmID_location) {
    ArrayList<ReadingMaterial> rmList = new ArrayList<>();
    User user = null;
    ReadingMaterial rm = null;
    String query = "\nSELECT " + ReadingMaterial.COL_BORROWEDRMID + ", " + ReadingMaterial.COL_DATEBORROWED + ", " + ReadingMaterial.COL_DATERETURNED + ", " + User.COL_IDNUMBER + ", " + User.COL_FIRSTNAME + ", " + User.COL_LASTNAME + "\n" + " FROM " + ReadingMaterial.TABLE_BORROWEDRM + " NATURAL JOIN " + User.TABLE_USER + "\n" + " WHERE " + ReadingMaterial.COL_BORROWEDRMID + " = ?\n" + " ORDER BY " + ReadingMaterial.COL_DATEBORROWED;
    ArrayList<Object> input = new ArrayList<>();
    input.add(rmID_location);
    Query q = Query.getInstance();
    ResultSet r = null;
    try {
        r = q.runQuery(query, input);
        while (r.next()) {
            rm = new ReadingMaterial();
            rm.setBorrowedRMID(r.getInt(ReadingMaterial.COL_BORROWEDRMID));
            rm.setDateBorrowed(r.getDate(ReadingMaterial.COL_DATEBORROWED));
            rm.setDateReturned(r.getDate(ReadingMaterial.COL_DATERETURNED));
            user = new User();
            user.setIDNumber(r.getString(User.COL_IDNUMBER));
            user.setFirstName(r.getString(User.COL_FIRSTNAME));
            user.setLastName(r.getString(User.COL_LASTNAME));
            rm.setUserBorrowed(user);
            rmList.add(rm);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            q.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return rmList;
}

[Buggy Hunk]
+ " WHERE " + ReadingMaterial.COL_BORROWEDRMID + " = ?\n"

[Patch]
+ " WHERE " + ReadingMaterial.COL_RMID + " = ?\n"

[Demonstration 3]

[Buggy Method]
public JsonNode createValueNode(Field jsonField) throws AtlasException {
    FieldType type = jsonField.getFieldType();
    Object value = jsonField.getValue();
    JsonNode valueNode = null;
    if (FieldType.STRING.equals(type)) {
        valueNode = rootNode.textNode((String) value);
    } else if (FieldType.CHAR.equals(type)) {
        valueNode = rootNode.textNode(Character.toString((char) value));
    } else if (FieldType.BOOLEAN.equals(type)) {
        valueNode = rootNode.booleanNode((Boolean) value);
    } else if (FieldType.INTEGER.equals(type)) {
        valueNode = rootNode.numberNode((Integer) value);
    } else if (FieldType.DOUBLE.equals(type) || FieldType.FLOAT.equals(type)) {
        valueNode = rootNode.numberNode(new BigDecimal(String.valueOf(value)));
    } else if (FieldType.SHORT.equals(type)) {
        valueNode = rootNode.numberNode(Short.valueOf(String.valueOf(value)));
    } else if (FieldType.LONG.equals(type)) {
        valueNode = rootNode.numberNode(Long.valueOf(String.valueOf(value)));
    } else {
        throw new AtlasException("Cannot set value for " + jsonField.getPath() + " --> " + value + " for field type " + type);
    }
    if (logger.isDebugEnabled()) {
        String valueClass = value == null ? "null" : value.getClass().getName();
        logger.debug("Converted JsonField value to ValueNode. Type: " + type + ", value: " + value + "(" + valueClass + "), node class: " + valueNode.getClass().getName() + ", node: " + valueNode);
    }
    return valueNode;
}

[Buggy Hunk]
valueNode = rootNode.textNode((String)value);

[Patch]
valueNode = rootNode.textNode(String.valueOf(value));