@Override
  public List<Comment> listComment(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 "
            + "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, page.offset());
      ps.setInt(2, 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();
    }
    return null;
  }
  @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 List<Comment> listReplyCommentOnVideo(String videoId) {
    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 is not null AND CM.replycomid <> 0 "
            + "ORDER BY commentdate DESC";

    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)));
      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.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 covert");
      return null;
    }
    return null;
  }
 @RequestMapping(
     method = RequestMethod.POST,
     value = "/comment/reply/returnid",
     headers = "Accept=application/json")
 public ResponseEntity<Map<String, Object>> replyCommentReturnId(@RequestBody Comment comment) {
   Map<String, Object> map = new HashMap<String, Object>();
   try {
     int commentid = commentService.replyReturnId(comment);
     if (commentid > 0) {
       map.put("STATUS", true);
       map.put("COMMENTID", Encryption.encode(commentid + ""));
       map.put("MESSAGE", "RECORD HAS BEEN REPLYED");
     } else {
       map.put("STATUS", false);
       map.put("MESSAGE", "RECORD HAS NOT BEEN REPLYED");
     }
   } catch (Exception e) {
     map.put("MESSAGE", "OPERATION FAIL");
     map.put("STATUS", false);
   }
   return new ResponseEntity<Map<String, Object>>(map, HttpStatus.OK);
 }