@Override public Comment getComment(String commentId) { String sql = "SELECT CM.*, V.videoname, U.username, U.userimageurl " + "FROM TBLCOMMENT CM " + "INNER JOIN TBLVIDEO V ON CM.videoid=V.videoid " + "INNER JOIN TBLUSER U ON CM.userid=U.userid " + "WHERE CM.commentid=?"; Comment comment = null; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setInt(1, Integer.parseInt(Encryption.decode(commentId))); ResultSet rs = ps.executeQuery(); while (rs.next()) { comment = new Comment(); comment.setCommentId(Encryption.encode(rs.getString("commentid"))); comment.setCommentDate(rs.getDate("commentdate")); comment.setCommentText(rs.getString("commenttext")); comment.setVideoId(Encryption.encode(rs.getString("videoid"))); comment.setUserId(Encryption.encode(rs.getString("userid"))); comment.setVideoName(rs.getString("videoname")); comment.setUsername(rs.getString("username")); comment.setUserImageUrl(rs.getString("userimageurl")); comment.setReplyId(Encryption.encode(rs.getString("replycomid"))); } return comment; } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println("Error"); return null; } return null; }
@Override public boolean insert(Comment comment) { String sql = "INSERT INTO TBLCOMMENT VALUES(nextval('seq_comment'), NOW(), ?, ?, ?,0)"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setString(1, comment.getCommentText()); ps.setInt(2, Integer.parseInt(Encryption.decode(comment.getVideoId()))); ps.setInt(3, Integer.parseInt(Encryption.decode(comment.getUserId()))); if (ps.executeUpdate() > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println(e1.getMessage()); return false; } return false; }
@Override public List<Comment> listReplyComment(String videoId, String replyId, Pagination page) { String sql = "SELECT CM.*, V.videoname, U.username, U.userimageurl " + "FROM TBLCOMMENT CM " + "INNER JOIN TBLVIDEO V ON CM.videoid=V.videoid " + "INNER JOIN TBLUSER U ON CM.userid=U.userid " + "WHERE CM.videoid=? and CM.replycomid=? " + "ORDER BY commentdate DESC " + "OFFSET ? LIMIT ?"; List<Comment> list = new ArrayList<Comment>(); Comment comment = null; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setInt(1, Integer.parseInt(Encryption.decode(videoId))); ps.setInt(2, Integer.parseInt(Encryption.decode(replyId))); ps.setInt(3, page.offset()); ps.setInt(4, page.getItem()); ResultSet rs = ps.executeQuery(); while (rs.next()) { comment = new Comment(); comment.setCommentId(Encryption.encode(rs.getString("commentid"))); comment.setCommentDate(rs.getDate("commentdate")); comment.setCommentText(rs.getString("commenttext")); comment.setVideoId(Encryption.encode(rs.getString("videoid"))); comment.setUserId(Encryption.encode(rs.getString("userid"))); comment.setVideoName(rs.getString("videoname")); comment.setUsername(rs.getString("username")); comment.setUserImageUrl(rs.getString("userimageurl")); comment.setReplyId(Encryption.encode(rs.getString("replycomid"))); list.add(comment); } return list; } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println("Error" + e1.getMessage()); return null; } return null; }
@Override public int countReplyComment(String videoId, String replyId) { String sql = "SELECT COUNT(CM.commentid) " + "FROM TBLCOMMENT CM " + "WHERE CM.videoid=? and CM.replycomid=?"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setInt(1, Integer.parseInt(Encryption.decode(videoId))); ps.setInt(2, Integer.parseInt(Encryption.decode(replyId))); ResultSet rs = ps.executeQuery(); if (rs.next()) return rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println(e1.getMessage()); return 0; } return 0; }
@Override public int insertReturnId(Comment comment) { String sql = "INSERT INTO TBLCOMMENT VALUES(nextval('seq_comment'), NOW(), ?, ?, ?,0)"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS); ) { ps.setString(1, comment.getCommentText()); ps.setInt(2, Integer.parseInt(Encryption.decode(comment.getVideoId()))); ps.setInt(3, Integer.parseInt(Encryption.decode(comment.getUserId()))); if (ps.executeUpdate() > 0) { ResultSet rs = ps.getGeneratedKeys(); rs.next(); return rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println(e1.getMessage()); return 0; } return 0; }
@Override public boolean update(Comment comment) { String sql = "UPDATE TBLCOMMENT SET commenttext=?, videoid=?, userid=?, replycomid=? WHERE commentid=?"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setString(1, comment.getCommentText()); ps.setInt(2, Integer.parseInt(Encryption.decode(comment.getVideoId()))); ps.setInt(3, Integer.parseInt(Encryption.decode(comment.getUserId()))); ps.setInt(4, Integer.parseInt(Encryption.decode(comment.getReplyId()))); ps.setInt(5, Integer.parseInt(Encryption.decode(comment.getCommentId()))); if (ps.executeUpdate() > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println(e1.getMessage()); return false; } return false; }
@Override public int countCommentOnVideo(String videoId) { String sql = "SELECT COUNT(videoid) FROM TBLCOMMENT WHERE videoid=?"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setInt(1, Integer.parseInt(Encryption.decode(videoId))); ResultSet rs = ps.executeQuery(); if (rs.next()) return rs.getInt(1); } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println("Error"); return 0; } return 0; }
@Override public boolean delete(String commentId) { String sql = "DELETE FROM TBLCOMMENT WHERE commentid=?"; try (Connection cnn = dataSource.getConnection(); PreparedStatement ps = cnn.prepareStatement(sql); ) { ps.setInt(1, Integer.parseInt(Encryption.decode(commentId))); if (ps.executeUpdate() > 0) { return true; } } catch (SQLException e) { e.printStackTrace(); } catch (NumberFormatException e1) { System.out.println("Error"); return false; } return false; }