feeds) {
+ if (feeds != null) {
+ int c = 1;
+ for (EnhancedFeed feed : feeds) {
+ 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");
+ newsPanel.add(showMoreUpdatesPanel);
+ }
+ }
+ }
+ @Override
+ public void onFailure(Throwable caught) {
+ newsPanel.add(new HTML("" +
+ "Ops! There were problems while retrieving your feeds!.
" +
+ "Please try again in a short while.
"));
+ }
+ });
+ }
/**
* Only User Connections
*/
diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.java b/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.java
new file mode 100644
index 0000000..58c9a5a
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.java
@@ -0,0 +1,47 @@
+package org.gcube.portlets.user.newsfeed.client.templates;
+
+import org.gcube.portlets.user.newsfeed.client.event.ShowMoreUpdatesEvent;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Style.Unit;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.shared.HandlerManager;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HTMLPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class ShowMoreFeeds extends Composite {
+
+ private static NewFeedsAvailableUiBinder uiBinder = GWT
+ .create(NewFeedsAvailableUiBinder.class);
+
+ interface NewFeedsAvailableUiBinder extends
+
+ UiBinder {
+ }
+
+ private HandlerManager eventBus;
+
+ @UiField HTML caption;
+ @UiField HTMLPanel panel;
+
+
+ public ShowMoreFeeds(HandlerManager eventBus) {
+ initWidget(uiBinder.createAndBindUi(this));
+ this.eventBus = eventBus;
+ panel.getElement().getStyle().setMarginTop(10, Unit.PX);
+ caption.addStyleName("new-feeds-show");
+ caption.getElement().getStyle().setBackgroundColor("transparent");
+ caption.getElement().getStyle().setFontSize(14, Unit.PX);
+ caption.setHTML("Show more feeds");
+ }
+
+ @UiHandler("caption")
+ void onClick(ClickEvent e) {
+ eventBus.fireEvent(new ShowMoreUpdatesEvent());
+ }
+}
diff --git a/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.ui.xml b/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.ui.xml
new file mode 100644
index 0000000..743c429
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/user/newsfeed/client/templates/ShowMoreFeeds.ui.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
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 e5c2372..5143235 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
@@ -98,7 +98,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
_log.warn("USER IS NULL setting testing user and Running OUTSIDE PORTAL");
user = "test.user";
user = "massimiliano.assante";
- SessionManager.getInstance().getASLSession(sessionID, user).setScope("/gcube/devVRE/testvrefolder2");
+ SessionManager.getInstance().getASLSession(sessionID, user).setScope("/gcube/devsec/devVRE");
}
else {
withinPortal = true;
@@ -308,8 +308,36 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
}
return new EnhancedFeed();
}
-
-
+ /**
+ * @param strat the range start (most recent feeds for this vre) has to be greater than 0
+ * @param quantity the number of most recent feeds for this vre starting from "start" param
+ */
+ @Override
+ public ArrayList getMoreFeeds(int start, int quantity) {
+ ArrayList toMerge = new ArrayList();
+ HashMap feedsMap = new HashMap();
+ String vreid = getASLSession().getScope();
+ _log.debug("Asking more feed for Timeline " + vreid + " from " + start + " get other " + quantity);
+ ArrayList OrganizationFeeds;
+ try {
+ OrganizationFeeds = (ArrayList) store.getRecentFeedsByVREAndRange(vreid, start, quantity);
+ for (Feed feed : OrganizationFeeds) {
+ feedsMap.put(feed.getKey(), feed);
+ }
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+
+ for (String key: feedsMap.keySet()) {
+ toMerge.add(feedsMap.get(key));
+ }
+ //sort the feeds in reverse chronological order
+ Collections.sort(toMerge, Collections.reverseOrder());
+
+ return enhanceFeeds(toMerge, 2);
+ }
/**
* just for testing purposes
*
@@ -324,29 +352,29 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
ArrayList toMerge = new ArrayList();
HashMap feedsMap = new HashMap();
- ArrayList OrganizationFeeds = (ArrayList) store.getRecentFeedsByVRE("/gcube/devsec/devVRE", 10);
+ ArrayList OrganizationFeeds = (ArrayList) store.getRecentFeedsByVRE("/gcube/devsec/devVRE", 5);
for (Feed feed : OrganizationFeeds) {
feedsMap.put(feed.getKey(), feed);
_log.trace("Reading desc: " + feed.getDescription());
}
- if (! onlyConnections) {
- //User Own Feeds
- ArrayList userFeeds = (ArrayList) store.getRecentFeedsByUser(userName, 10);
- for (Feed feed : userFeeds)
- feedsMap.put(feed.getKey(), feed);
- // //Portal Feeds
- ArrayList portalFeeds = (ArrayList) store.getAllPortalPrivacyLevelFeeds();
- for (Feed feed : portalFeeds)
- feedsMap.put(feed.getKey(), feed);
- }
- //UserFriends Feeds
- ArrayList userFriendsIds = (ArrayList)store.getFriends(userName);
- for (String userid : userFriendsIds) {
- for (Feed feed : store.getRecentFeedsByUser(userid, 10)) {
- feedsMap.put(feed.getKey(), feed);
- }
- }
+// if (! onlyConnections) {
+// //User Own Feeds
+// ArrayList userFeeds = (ArrayList) store.getRecentFeedsByUser(userName, 10);
+// for (Feed feed : userFeeds)
+// feedsMap.put(feed.getKey(), feed);
+// // //Portal Feeds
+// ArrayList portalFeeds = (ArrayList) store.getAllPortalPrivacyLevelFeeds();
+// for (Feed feed : portalFeeds)
+// feedsMap.put(feed.getKey(), feed);
+// }
+// //UserFriends Feeds
+// ArrayList userFriendsIds = (ArrayList)store.getFriends(userName);
+// for (String userid : userFriendsIds) {
+// for (Feed feed : store.getRecentFeedsByUser(userid, 10)) {
+// feedsMap.put(feed.getKey(), feed);
+// }
+// }
for (String key: feedsMap.keySet()) {
toMerge.add(feedsMap.get(key));
}
@@ -744,7 +772,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
int minutes = 0;
String label = "";
boolean showTimelineSource = true;
-
+
String propertyfile = "";
try {
ServletContext servletContext = getServletContext();
@@ -766,14 +794,14 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
label = props.getProperty(VRE_LABEL);
try {
showTimelineSource = Boolean.parseBoolean(props.getProperty(SHOW_TIMELINE_SOURCE));
-
+
}
//catch exception in case the property value isNot true or false
catch (ClassCastException ex) {
showTimelineSource = true;
_log.error(showTimelineSource + " must be true or false, returning true");
}
-
+
}
//catch exception in case properties file does not exist
catch(IOException e) {
@@ -785,4 +813,6 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
return new CustomConfiguration(minutes, label, showTimelineSource);
}
+
+
}
diff --git a/src/main/resources/clientlog4j.properties b/src/main/resources/clientlog4j.properties
index a4f0d7c..4a2e1cd 100644
--- a/src/main/resources/clientlog4j.properties
+++ b/src/main/resources/clientlog4j.properties
@@ -7,4 +7,6 @@ log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Print only messages of level TRACE or above in the package org.gcube
log4j.logger.org.gcube=TRACE
-log4j.logger.org.gcube.application.framework.core.session=INFO
\ No newline at end of file
+log4j.logger.org.gcube.application.framework.core.session=INFO
+log4j.logger.org.gcube.common.scope.impl.DefaultScopeProvider=ERROR
+log4j.logger.com.netflix.astyanax.connectionpool.impl.CountingConnectionPoolMonitor=ERROR
\ No newline at end of file