2017-08-09 12 views
1

認証されたユーザーが所有するすべてのノードの返信でコメントを取得する必要があります。RestFBでコメントから返信する番号を取得する方法

私は、ストリームのJava 8と、次の方法でそれを持っている:

private Stream<Comment> getCommentsByObjectAfterThan(final FacebookClient facebookClient, final String objectId, final Date startDate, User user) { 

     Connection<Comment> commentConnection 
       = facebookClient.fetchConnection(objectId + "/comments", Comment.class); 

     return StreamUtils.asStream(commentConnection.iterator()) 
       .flatMap(List::stream) 
       .flatMap(comment 
         -> StreamUtils.concat(
         getCommentsByObjectAfterThan(facebookClient, comment.getId(), startDate, user), comment) 
       ) 
       .filter(comment -> !comment.getFrom().getId().equals(user.getId()) && 
         (startDate != null ? comment.getCreatedTime().after(startDate) : true)); 
    } 

私はトップレベルコメントとその回答とストリームを作成する第二flapMapを最適化する必要があります。

明らかにそれはそうする必要があります:

.flatMap(comment -> comment.getCommentCount() > 0 ? StreamUtils.concat(
      getCommentsByObjectAfterThan(facebookClient,comment.getId(), startDate, user), comment) : Stream.of(comment)) 

問題は、それが常に0コメントが持っているにもかかわらず、応答を返すcomment.getCommentCount()ということです。

どうすればこの問題を解決できますか?前もって感謝します。

答えて

3

変更ライン

Connection<Comment> commentConnection 
      = facebookClient.fetchConnection(objectId + "/comments", Comment.class, Parameter.with("fields","comment_count"); 

Connection<Comment> commentConnection 
      = facebookClient.fetchConnection(objectId + "/comments", Comment.class); 

次に、あなたはコメントのcomment_countフィールドを取得します。

+0

ありがとうございます。出来た –

関連する問題