git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/news-feed@114774 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
16142838e4
commit
83fdc36da6
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
<classpathentry kind="src" output="target/news-feed-1.9.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
<classpathentry kind="src" output="target/news-feed-1.9.1-SNAPSHOT/WEB-INF/classes" path="src/main/java">
|
||||||
<attributes>
|
<attributes>
|
||||||
<attribute name="optional" value="true"/>
|
<attribute name="optional" value="true"/>
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
|
@ -31,5 +31,5 @@
|
||||||
<attribute name="maven.pomderived" value="true"/>
|
<attribute name="maven.pomderived" value="true"/>
|
||||||
</attributes>
|
</attributes>
|
||||||
</classpathentry>
|
</classpathentry>
|
||||||
<classpathentry kind="output" path="target/news-feed-1.9.0-SNAPSHOT/WEB-INF/classes"/>
|
<classpathentry kind="output" path="target/news-feed-1.9.1-SNAPSHOT/WEB-INF/classes"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -13,7 +13,7 @@
|
||||||
<groupId>org.gcube.portlets.user</groupId>
|
<groupId>org.gcube.portlets.user</groupId>
|
||||||
<artifactId>news-feed</artifactId>
|
<artifactId>news-feed</artifactId>
|
||||||
<packaging>war</packaging>
|
<packaging>war</packaging>
|
||||||
<version>1.9.0-SNAPSHOT</version>
|
<version>1.9.1-SNAPSHOT</version>
|
||||||
|
|
||||||
<name>gCube News Feed Portlet</name>
|
<name>gCube News Feed Portlet</name>
|
||||||
<description>
|
<description>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.gcube.portal.databook.shared.Comment;
|
||||||
import org.gcube.portal.databook.shared.Like;
|
import org.gcube.portal.databook.shared.Like;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.OperationResult;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
||||||
|
|
||||||
|
@ -37,9 +38,9 @@ public interface NewsService extends RemoteService {
|
||||||
|
|
||||||
boolean deleteFeed(String feedid);
|
boolean deleteFeed(String feedid);
|
||||||
|
|
||||||
Comment comment(String feedid, String text, ArrayList<String> mentionedUsers, String feedOwnerId, boolean isAppFeed);
|
OperationResult comment(String feedid, String text, ArrayList<String> mentionedUsers, String feedOwnerId, boolean isAppFeed);
|
||||||
|
|
||||||
Comment editComment(Comment toEdit);
|
OperationResult editComment(Comment toEdit);
|
||||||
|
|
||||||
ArrayList<Like> getAllLikesByFeed(String feedid);
|
ArrayList<Like> getAllLikesByFeed(String feedid);
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import org.gcube.portal.databook.shared.Comment;
|
||||||
import org.gcube.portal.databook.shared.Like;
|
import org.gcube.portal.databook.shared.Like;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.OperationResult;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ public interface NewsServiceAsync {
|
||||||
|
|
||||||
void comment(String feedid, String text, ArrayList<String> mentionedUsers,
|
void comment(String feedid, String text, ArrayList<String> mentionedUsers,
|
||||||
String feedOwnerId, boolean isAppFeed,
|
String feedOwnerId, boolean isAppFeed,
|
||||||
AsyncCallback<Comment> callback);
|
AsyncCallback<OperationResult> callback);
|
||||||
|
|
||||||
void getAllCommentsByFeed(String feedid,
|
void getAllCommentsByFeed(String feedid,
|
||||||
AsyncCallback<ArrayList<Comment>> callback);
|
AsyncCallback<ArrayList<Comment>> callback);
|
||||||
|
@ -44,7 +45,7 @@ public interface NewsServiceAsync {
|
||||||
|
|
||||||
void deleteFeed(String feedid, AsyncCallback<Boolean> callback);
|
void deleteFeed(String feedid, AsyncCallback<Boolean> callback);
|
||||||
|
|
||||||
void editComment(Comment toEdit, AsyncCallback<Comment> callback);
|
void editComment(Comment toEdit, AsyncCallback<OperationResult> callback);
|
||||||
|
|
||||||
void getOnlyLikedFeeds(AsyncCallback<ArrayList<EnhancedFeed>> callback);
|
void getOnlyLikedFeeds(AsyncCallback<ArrayList<EnhancedFeed>> callback);
|
||||||
|
|
||||||
|
|
|
@ -44,9 +44,11 @@ import org.gcube.portlets.user.newsfeed.client.ui.ResultsFor;
|
||||||
import org.gcube.portlets.user.newsfeed.client.ui.ShowMoreFeeds;
|
import org.gcube.portlets.user.newsfeed.client.ui.ShowMoreFeeds;
|
||||||
import org.gcube.portlets.user.newsfeed.client.ui.SingleComment;
|
import org.gcube.portlets.user.newsfeed.client.ui.SingleComment;
|
||||||
import org.gcube.portlets.user.newsfeed.client.ui.TweetTemplate;
|
import org.gcube.portlets.user.newsfeed.client.ui.TweetTemplate;
|
||||||
|
import org.gcube.portlets.user.newsfeed.server.NewsServiceImpl;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.OperationResult;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
|
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
|
||||||
import org.gcube.portlets.widgets.userselection.client.UserSelectionDialog;
|
import org.gcube.portlets.widgets.userselection.client.UserSelectionDialog;
|
||||||
|
@ -264,7 +266,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
delayMillis = result.getRefreshingTimeInMillis();
|
delayMillis = result.getRefreshingTimeInMillis();
|
||||||
vreLabel = result.getVreLabel();
|
vreLabel = result.getVreLabel();
|
||||||
currentScope = result.getCurrentScope();
|
currentScope = result.getCurrentScope();
|
||||||
if (result.getUserInfo().getUsername().equals("test.user")) {
|
if (result.getUserInfo().getUsername().equals(NewsServiceImpl.TEST_USER)) {
|
||||||
doStopFeedsTimer();
|
doStopFeedsTimer();
|
||||||
doShowSessionExpired();
|
doShowSessionExpired();
|
||||||
}
|
}
|
||||||
|
@ -407,7 +409,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(UserSettings result) {
|
public void onSuccess(UserSettings result) {
|
||||||
if (result.getUserInfo().getUsername().equals("test.user")) {
|
if (result.getUserInfo().getUsername().equals(NewsServiceImpl.TEST_USER)) {
|
||||||
doStopFeedsTimer();
|
doStopFeedsTimer();
|
||||||
doShowSessionExpired();
|
doShowSessionExpired();
|
||||||
}
|
}
|
||||||
|
@ -474,7 +476,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(UserSettings result) {
|
public void onSuccess(UserSettings result) {
|
||||||
if (result.getUserInfo().getUsername().equals("test.user")) {
|
if (result.getUserInfo().getUsername().equals(NewsServiceImpl.TEST_USER)) {
|
||||||
doStopFeedsTimer();
|
doStopFeedsTimer();
|
||||||
doShowSessionExpired();
|
doShowSessionExpired();
|
||||||
} else {
|
} else {
|
||||||
|
@ -918,19 +920,25 @@ public class NewsFeedPanel extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doAddComment(final TweetTemplate owner, String text, ArrayList<String> mentionedUsers) {
|
private void doAddComment(final TweetTemplate owner, String text, ArrayList<String> mentionedUsers) {
|
||||||
newsService.comment(owner.getFeedKey(), text, mentionedUsers, owner.getMyFeedUserId(), owner.isAppFeed(), new AsyncCallback<Comment>() {
|
newsService.comment(owner.getFeedKey(), text, mentionedUsers, owner.getMyFeedUserId(), owner.isAppFeed(), new AsyncCallback<OperationResult>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert("Could not deliver this comment: " + caught.getMessage());
|
Window.alert("Could not deliver this comment: " + caught.getMessage());
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Comment result) {
|
public void onSuccess(OperationResult result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
owner.addComment(new SingleComment(result, owner, (result.getUserid().equals(myUserInfo.getUsername()))), false);
|
if (!result.isSuccess()) {
|
||||||
owner.setCommentingDisabled(false);
|
CheckSession.showLogoutDialog();
|
||||||
owner.updateCommentsNumberCount();
|
}
|
||||||
owner.showAddCommentForm(false);
|
else {
|
||||||
}
|
Comment comment = (Comment) result.getObject();
|
||||||
|
owner.addComment(new SingleComment(comment, owner, (comment.getUserid().equals(myUserInfo.getUsername()))), false);
|
||||||
|
owner.setCommentingDisabled(false);
|
||||||
|
owner.updateCommentsNumberCount();
|
||||||
|
owner.showAddCommentForm(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Window.alert("Could not deliver this comment. Please try again in a short while.");
|
Window.alert("Could not deliver this comment. Please try again in a short while.");
|
||||||
}
|
}
|
||||||
|
@ -939,17 +947,23 @@ public class NewsFeedPanel extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doEditComment(final TweetTemplate owner, Comment edited) {
|
private void doEditComment(final TweetTemplate owner, Comment edited) {
|
||||||
newsService.editComment(edited, new AsyncCallback<Comment>() {
|
newsService.editComment(edited, new AsyncCallback<OperationResult>() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
Window.alert("Could not edit this comment: " + caught.getMessage());
|
Window.alert("Could not edit this comment: " + caught.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Comment result) {
|
public void onSuccess(OperationResult result) {
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
owner.addComment(new SingleComment(result, owner, (result.getUserid().equals(myUserInfo.getUsername()))), true);
|
if (!result.isSuccess()) {
|
||||||
owner.setCommentingDisabled(false);
|
CheckSession.showLogoutDialog();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Comment comment = (Comment) result.getObject();
|
||||||
|
owner.addComment(new SingleComment(comment, owner, (comment.getUserid().equals(myUserInfo.getUsername()))), true);
|
||||||
|
owner.setCommentingDisabled(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Window.alert("Could not deliver this comment. Please try again in a short while.");
|
Window.alert("Could not deliver this comment. Please try again in a short while.");
|
||||||
|
@ -993,7 +1007,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
|
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Boolean result) {
|
public void onSuccess(Boolean result) {
|
||||||
if (result) {
|
if (result) {
|
||||||
doShowComments(owner, false);
|
doShowComments(owner, false);
|
||||||
owner.updateCommentsNumberCount();
|
owner.updateCommentsNumberCount();
|
||||||
|
|
|
@ -39,6 +39,7 @@ import org.gcube.portlets.user.newsfeed.client.NewsService;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.OperationResult;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
import org.gcube.portlets.widgets.pickitem.shared.ItemBean;
|
||||||
import org.gcube.vomanagement.usermanagement.GroupManager;
|
import org.gcube.vomanagement.usermanagement.GroupManager;
|
||||||
|
@ -75,8 +76,8 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
|
|
||||||
private static final String SESSION_ADMIN_ATTR = "SESSION_ADMIN_ATTR";
|
private static final String SESSION_ADMIN_ATTR = "SESSION_ADMIN_ATTR";
|
||||||
private static final String USER_SETTINGS_ATTR = "USER_SETTINGS_ATTR";
|
private static final String USER_SETTINGS_ATTR = "USER_SETTINGS_ATTR";
|
||||||
private static final String TEST_USER = "test.user";
|
public static final String TEST_USER = "test.user";
|
||||||
private static final String TEST_SCOPE = "/gcube/devsec/devVRE";
|
public static final String TEST_SCOPE = "/gcube/devsec/devVRE";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -597,11 +598,14 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
* @param feedOwnerId the username of the user who created the post that was commented
|
* @param feedOwnerId the username of the user who created the post that was commented
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Comment comment(String feedid, String commentText, ArrayList<String> mentionedUserFullNames, String feedOwnerId, boolean isAppFeed) {
|
public OperationResult comment(String feedid, String commentText, ArrayList<String> mentionedUserFullNames, String feedOwnerId, boolean isAppFeed) {
|
||||||
boolean commentCommitResult = false;
|
boolean commentCommitResult = false;
|
||||||
_log.trace("Trying to add this comment " + commentText);
|
_log.trace("Trying to add this comment " + commentText);
|
||||||
UserInfo user = getUserSettings().getUserInfo();
|
UserInfo user = getUserSettings().getUserInfo();
|
||||||
|
|
||||||
|
if (user.getUsername().compareTo(TEST_USER) == 0) {
|
||||||
|
return new OperationResult(false, "Session Expired", null);
|
||||||
|
}
|
||||||
|
|
||||||
String escapedCommentText = Utils.escapeHtmlAndTransformUrl(commentText);
|
String escapedCommentText = Utils.escapeHtmlAndTransformUrl(commentText);
|
||||||
|
|
||||||
|
@ -617,9 +621,9 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
if (store.addComment(comment))
|
if (store.addComment(comment))
|
||||||
commentCommitResult = true;
|
commentCommitResult = true;
|
||||||
} catch (FeedIDNotFoundException e) {
|
} catch (FeedIDNotFoundException e) {
|
||||||
_log.error("Feed not Found for this comment " + e.getMessage());
|
_log.error("Related post not found for this comment " + e.getMessage());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return new OperationResult(false, "Related post not found for this comment", comment);
|
||||||
}
|
}
|
||||||
//if the comment was correctly delivered && is not an app feed notify users involved
|
//if the comment was correctly delivered && is not an app feed notify users involved
|
||||||
if (commentCommitResult && isWithinPortal()) {
|
if (commentCommitResult && isWithinPortal()) {
|
||||||
|
@ -645,12 +649,16 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return comment;
|
return new OperationResult(true, "OK", comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Comment editComment(Comment toEdit) {
|
public OperationResult editComment(Comment toEdit) {
|
||||||
UserInfo user = getUserSettings().getUserInfo();
|
UserInfo user = getUserSettings().getUserInfo();
|
||||||
|
if (user.getUsername().compareTo(TEST_USER) == 0) {
|
||||||
|
return new OperationResult(false, "Session Expired", null);
|
||||||
|
}
|
||||||
|
|
||||||
String escapedCommentText = Utils.escapeHtmlAndTransformUrl(toEdit.getText());
|
String escapedCommentText = Utils.escapeHtmlAndTransformUrl(toEdit.getText());
|
||||||
|
|
||||||
Comment edited = new Comment(toEdit.getKey(), toEdit.getUserid(),
|
Comment edited = new Comment(toEdit.getKey(), toEdit.getUserid(),
|
||||||
|
@ -659,9 +667,9 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
store.editComment(edited);
|
store.editComment(edited);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return null;
|
return new OperationResult(false, "Exception on the server: " + e.getMessage(), null);
|
||||||
}
|
}
|
||||||
return edited;
|
return new OperationResult(true, "OK", toEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package org.gcube.portlets.user.newsfeed.shared;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
public class OperationResult implements Serializable {
|
||||||
|
|
||||||
|
private Boolean success;
|
||||||
|
private String message;
|
||||||
|
private Serializable object;
|
||||||
|
|
||||||
|
public OperationResult() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public OperationResult(Boolean success, String message, Serializable object) {
|
||||||
|
super();
|
||||||
|
this.success = success;
|
||||||
|
this.message = message;
|
||||||
|
this.object = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean isSuccess() {
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSuccess(Boolean success) {
|
||||||
|
this.success = success;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Serializable getObject() {
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setObject(Serializable object) {
|
||||||
|
this.object = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue