minor fix to getRecentComments and getRecentCommentedFeeds methods
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portal/social-networking-library@130954 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
0ee2a0426b
commit
6d7d952e99
|
@ -588,11 +588,18 @@ public final class DBCassandraAstyanaxImpl implements DatabookStore {
|
|||
|
||||
List<Feed> toReturn = new ArrayList<Feed>();
|
||||
|
||||
// get the last comments by the user
|
||||
List<Comment> lastComments = getRecentCommentsByUserAndDate(userid, timeInMillis);
|
||||
Date now = new Date();
|
||||
if (timeInMillis > now.getTime())
|
||||
throw new IllegalArgumentException("the timeInMillis must be before today");
|
||||
|
||||
if(userid == null || userid.isEmpty())
|
||||
throw new IllegalArgumentException("the userId parameter cannot be null/empty");
|
||||
|
||||
// get the last comments by the user (it is not needed to get them sorted)
|
||||
List<Comment> lastComments = getRecentCommentsByUserAndDateBody(userid, timeInMillis, false);
|
||||
|
||||
// evaluate unique feeds' ids
|
||||
List<String> feedsIds = new ArrayList<String>();
|
||||
HashSet<String> feedsIds = new HashSet<String>();
|
||||
|
||||
for (Comment comment : lastComments) {
|
||||
String feedId = comment.getFeedid();
|
||||
|
@ -606,6 +613,7 @@ public final class DBCassandraAstyanaxImpl implements DatabookStore {
|
|||
}
|
||||
}
|
||||
|
||||
Collections.sort(toReturn, Collections.reverseOrder());
|
||||
return toReturn;
|
||||
}
|
||||
/**
|
||||
|
@ -1455,7 +1463,31 @@ public final class DBCassandraAstyanaxImpl implements DatabookStore {
|
|||
public List<Comment> getRecentCommentsByUserAndDate(final String userid,
|
||||
final long timeInMillis) throws Exception {
|
||||
|
||||
long start = System.currentTimeMillis();
|
||||
final List<Comment> commentsByUser;
|
||||
|
||||
Date now = new Date();
|
||||
if (timeInMillis > now.getTime())
|
||||
throw new IllegalArgumentException("the timeInMillis must be before today");
|
||||
|
||||
if(userid == null || userid.isEmpty())
|
||||
throw new IllegalArgumentException("the userId parameter cannot be null/empty");
|
||||
|
||||
|
||||
commentsByUser = getRecentCommentsByUserAndDateBody(userid, timeInMillis, true);
|
||||
|
||||
return commentsByUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Private method that allows also to specify if the returned list must be sorted or not
|
||||
* @param userid the user id
|
||||
* @param timeInMillis the initial time to consider
|
||||
* @param sort a boolean value to specify if the returned list must be sorted (from the most recent to the oldest comment)
|
||||
* @return a list of comments recently made by the user
|
||||
* @throws ConnectionException
|
||||
*/
|
||||
private List<Comment> getRecentCommentsByUserAndDateBody(final String userid,
|
||||
final long timeInMillis, boolean sort) throws ConnectionException{
|
||||
|
||||
final List<Comment> commentsByUser = new ArrayList<Comment>();
|
||||
final AtomicInteger maxRetryExecutions = new AtomicInteger(10);
|
||||
|
@ -1499,16 +1531,17 @@ public final class DBCassandraAstyanaxImpl implements DatabookStore {
|
|||
return true;
|
||||
}else
|
||||
{
|
||||
_log.error("Too many errors while fetching user's comments, returning");
|
||||
_log.error("Too many errors while fetching user's comments, exiting");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Collections.sort(commentsByUser, Collections.reverseOrder());
|
||||
_log.debug("Time taken to retrieve most recent user's comments is " + (System.currentTimeMillis() - start));
|
||||
if(sort)
|
||||
Collections.sort(commentsByUser, Collections.reverseOrder());
|
||||
|
||||
return commentsByUser;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,6 +17,19 @@ public class DatabookCassandraTest {
|
|||
|
||||
}
|
||||
|
||||
// @Test
|
||||
// public void getRecentCommentedFeedsByUserAndDate() throws Exception{
|
||||
// String userid = "massimiliano.assante";
|
||||
// Calendar oneYearAgo = Calendar.getInstance();
|
||||
// oneYearAgo.set(Calendar.YEAR, oneYearAgo.get(Calendar.YEAR) - 1);
|
||||
//
|
||||
// long init = System.currentTimeMillis();
|
||||
// List<Feed> res = store.getRecentCommentedFeedsByUserAndDate(userid, oneYearAgo.getTimeInMillis());
|
||||
// long end = System.currentTimeMillis();
|
||||
// System.out.println("Result is " + (end - init));
|
||||
//
|
||||
//
|
||||
// }
|
||||
// @Test
|
||||
// public void getRecentCommentsByUserAndDate() throws Exception{
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue