" +
@@ -595,10 +609,21 @@ public class NewsFeedPanel extends Composite {
newsPanel.add(new ResultsFor("results for", query));
for (EnhancedFeed feed : feeds) {
newsPanel.add(new TweetTemplate(false, showFeedTimelineSource, myUserInfo, feed, eventBus)); //in the view
+ // save them (they will be used when asking more feeds)
+ allUpdates.add(feed);
}
if (feeds.size() < 5) {
newsPanel.add(new Image(spacer));
- }
+ }
+
+ // add widget to lookup more feeds: if the size of the returned data is less
+ // than the required disable this feature.
+ if(feeds.size() == SEARCHED_FEEDS_TO_SHOW){
+ showMoreUpdatesPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
+ showMoreWidget = new ShowMoreFeeds(eventBus);
+ showMoreUpdatesPanel.add(showMoreWidget);
+ newsPanel.add(showMoreUpdatesPanel);
+ }
}
} else {
showProblems();
@@ -640,7 +665,7 @@ public class NewsFeedPanel extends Composite {
// one or more feed belongs to user himself
if(tt.isUser()){
try{
-
+
NewsFeed.pageBusAdapter.PageBusPublish(PageBusEvents.postIncrement, "", Defaults.STRING_JSONIZER);
int numComments = tt.numberOfComments();
@@ -792,44 +817,95 @@ public class NewsFeedPanel extends Composite {
* called when a user scroll down the page to the bottom
*/
protected void doShowMoreUpdates() {
+
showMoreUpdatesPanel.remove(0);
loadingImage.getElement().getStyle().setMargin(10, Unit.PX);
showMoreUpdatesPanel.add(loadingIcon);
- int from = (fromStartingPoint == null) ? allUpdates.size()+1 : fromStartingPoint;
- final int quantity = 10;
- GWT.log("StartingPoint = " + from);
- newsService.getMoreFeeds(from, quantity, new AsyncCallback
() {
- @Override
- public void onSuccess(MoreFeedsBean rangeFeeds) {
- newsPanel.remove(showMoreUpdatesPanel);
- if (rangeFeeds.getFeeds() != null) {
- fromStartingPoint = rangeFeeds.getLastReturnedFeedTimelineIndex();
- int c = 1;
- for (EnhancedFeed feed : rangeFeeds.getFeeds()) {
- if (!isFeedPresent(feed)) { //avoid possible duplicates
- newsPanel.add(new TweetTemplate(false, showFeedTimelineSource, myUserInfo, feed, eventBus)); //in the view
- allUpdates.add(feed); //in the model
+ if(isSearch){
+
+ GWT.log("Going to request more feeds for this search");
+
+ // start position
+ int start = allUpdates.size();
+
+ GWT.log("StartingPoint = " + start);
+ newsService.getFeedsByQuery(currentQuery, start, SEARCHED_FEEDS_TO_SHOW , new AsyncCallback>() {
+ @Override
+ public void onSuccess(ArrayList feeds){
+ newsPanel.remove(showMoreUpdatesPanel);
+ if (feeds != null) {
+ GWT.log("There are " + feeds.size() + " more feeds");
+
+ for (EnhancedFeed feed : feeds) {
+ // avoid to insert same data
+ if(!isFeedPresent(feed)){
+ newsPanel.add(new TweetTemplate(false, showFeedTimelineSource, myUserInfo, feed, eventBus)); //in the view
+ allUpdates.add(feed);
+ }
}
- c++;
- }
- if (c >= quantity) { //there could be more feeds
- GWT.log("there could be more feeds");
+
+ // clear panel
showMoreUpdatesPanel.clear();
- showMoreWidget = new ShowMoreFeeds(eventBus);
- showMoreUpdatesPanel.add(showMoreWidget);
- newsPanel.add(showMoreUpdatesPanel);
+
+ // check if we can ask for other data
+ if(feeds.size() == SEARCHED_FEEDS_TO_SHOW){
+ GWT.log("It seems there are no more feeds for this query. Stop asking further");
+ showMoreWidget = new ShowMoreFeeds(eventBus);
+ showMoreUpdatesPanel.add(showMoreWidget);
+ newsPanel.add(showMoreUpdatesPanel);
+ }else{
+ showMoreWidget = null;
+ }
}
}
- }
- @Override
- public void onFailure(Throwable caught) {
- showMoreUpdatesPanel.clear();
- newsPanel.add(new HTML("" +
- "Ops! There were problems while retrieving your feeds!.
" +
- "Please try again in a short while.
"));
- }
- });
+ @Override
+ public void onFailure(Throwable caught) {
+ showMoreUpdatesPanel.clear();
+ newsPanel.add(new HTML("" +
+ "Ops! There were problems while retrieving your feeds!.
" +
+ "Please try again in a short while.
"));
+ }
+ });
+ }
+ else{
+
+ int from = (fromStartingPoint == null) ? allUpdates.size()+1 : fromStartingPoint;
+
+ final int quantity = 10;
+ GWT.log("StartingPoint = " + from);
+ newsService.getMoreFeeds(from, quantity, new AsyncCallback() {
+ @Override
+ public void onSuccess(MoreFeedsBean rangeFeeds) {
+ newsPanel.remove(showMoreUpdatesPanel);
+ if (rangeFeeds.getFeeds() != null) {
+ fromStartingPoint = rangeFeeds.getLastReturnedFeedTimelineIndex();
+ int c = 1;
+ for (EnhancedFeed feed : rangeFeeds.getFeeds()) {
+ if (!isFeedPresent(feed)) { //avoid possible duplicates
+ newsPanel.add(new TweetTemplate(false, showFeedTimelineSource, myUserInfo, feed, eventBus)); //in the view
+ allUpdates.add(feed); //in the model
+ }
+ c++;
+ }
+ if (c >= quantity) { //there could be more feeds
+ GWT.log("there could be more feeds");
+ showMoreUpdatesPanel.clear();
+ showMoreWidget = new ShowMoreFeeds(eventBus);
+ showMoreUpdatesPanel.add(showMoreWidget);
+ newsPanel.add(showMoreUpdatesPanel);
+ }
+ }
+ }
+ @Override
+ public void onFailure(Throwable caught) {
+ showMoreUpdatesPanel.clear();
+ newsPanel.add(new HTML("" +
+ "Ops! There were problems while retrieving your feeds!.
" +
+ "Please try again in a short while.
"));
+ }
+ });
+ }
}
/**
* @param widget the widget to check
diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java b/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java
index 6c79142..618dfba 100644
--- a/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/newsfeed/server/NewsServiceImpl.java
@@ -386,7 +386,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
}
@Override
- public ArrayList getFeedsByQuery(String query, int from, int to) {
+ public ArrayList getFeedsByQuery(String query, int from, int quantity) {
// TODO : check this error better
if(el == null){
@@ -425,7 +425,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
}
// query elastic search
- List enhancedFeeds = el.searchInEnhancedFeeds(query, vres, from, to);
+ List enhancedFeeds = el.searchInEnhancedFeeds(query, vres, from, quantity);
// retrieve the ids of liked feeds by the user
List likedFeeds = store.getAllLikedFeedIdsByUser(userName);