Author: mfranklin
Date: Fri Oct 26 00:29:32 2012
New Revision: 1402359
URL: http://svn.apache.org/viewvc?rev=1402359&view=rev
Log:
Fixed widget bugs
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPersonRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
rave/branches/mongo/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/tags/navbar.tag
rave/branches/mongo/rave-portal-resources/src/main/webapp/static/script/rave_person_profile.js
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPersonRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPersonRepository.java?rev=1402359&r1=1402358&r2=1402359&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPersonRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPersonRepository.java
Fri Oct 26 00:29:32 2012
@@ -23,7 +23,9 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists;
import org.apache.commons.lang.NotImplementedException;
import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.repository.MongoPageOperations;
import org.apache.rave.portal.repository.MongoUserOperations;
+import org.apache.rave.portal.repository.MongoWidgetOperations;
import org.apache.rave.portal.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Query;
@@ -44,6 +46,12 @@ public class MongoDbPersonRepository imp
@Autowired
private MongoUserOperations template;
+ @Autowired
+ private MongoPageOperations pageTemplate;
+
+ @Autowired
+ private MongoWidgetOperations widgetOperations;
+
@Override
public Person findByUsername(String username) {
return template.findOne(getUsernameQuery(username)).toPerson();
@@ -56,7 +64,7 @@ public class MongoDbPersonRepository imp
@Override
public List<Person> findAllConnectedPeople(String username, String appId) {
- throw new NotImplementedException(); //TODO build query
+ return findFriends(username, appId); //TODO update when groups is
implemented
}
@Override
@@ -66,7 +74,7 @@ public class MongoDbPersonRepository imp
@Override
public List<Person> findFriends(String username) {
- MongoDbUser user =
(MongoDbUser)template.findOne(getUsernameQuery(username));
+ MongoDbUser user = (MongoDbUser)
template.findOne(getUsernameQuery(username));
return Lists.transform(filterByRequestType(user.getFriends(),
FriendRequestStatus.ACCEPTED), new Function<MongoDbPersonAssociation, Person>()
{
@Override
public Person apply(@Nullable MongoDbPersonAssociation input) {
@@ -74,20 +82,25 @@ public class MongoDbPersonRepository imp
}
});
}
+
@Override
public List<Person> findFriends(String username, String appId) {
- throw new NotImplementedException(); //TODO build query
+ MongoDbUser user = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ Widget w = widgetOperations.findOne(query(where("url").is(appId)));
+ Query q =
query(where("ownerId").in(getFriendIds(user.getFriends())).and("regions").elemMatch(where("regionWidgets").elemMatch(where("widgetId").is(w.getId()))));
+ List<Page> pages = pageTemplate.find(q);
+ return getPersonListFromPages(pages);
}
@Override
public List<Person> findFriendsWithFriend(String username, String
friendUsername) {
- MongoDbUser follower =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- MongoDbUser followed =
(MongoDbUser)template.findOne(getUsernameQuery(friendUsername));
+ MongoDbUser follower = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ MongoDbUser followed = (MongoDbUser)
template.findOne(getUsernameQuery(friendUsername));
List<Long> commonFriends = getCommonFriends(follower, followed);
return Lists.transform(commonFriends, new Function<Long, Person>() {
@Override
public Person apply(@Nullable Long id) {
- return id == null? null : template.get(id).toPerson();
+ return id == null ? null : template.get(id).toPerson();
}
});
}
@@ -109,8 +122,8 @@ public class MongoDbPersonRepository imp
@Override
public boolean addFriend(String friendUsername, String username) {
- MongoDbUser follower =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- MongoDbUser followed =
(MongoDbUser)template.findOne(getUsernameQuery(friendUsername));
+ MongoDbUser follower = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ MongoDbUser followed = (MongoDbUser)
template.findOne(getUsernameQuery(friendUsername));
MongoDbPersonAssociation outgoing = new
MongoDbPersonAssociation(followed.getId(), FriendRequestStatus.SENT,
MongoDbPersonAssociation.Direction.OUTGOING);
MongoDbPersonAssociation incoming = new
MongoDbPersonAssociation(follower.getId(), FriendRequestStatus.RECEIVED,
MongoDbPersonAssociation.Direction.INCOMING);
@@ -125,8 +138,8 @@ public class MongoDbPersonRepository imp
@Override
public void removeFriend(String friendUsername, String username) {
- MongoDbUser follower =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- MongoDbUser followed =
(MongoDbUser)template.findOne(getUsernameQuery(friendUsername));
+ MongoDbUser follower = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ MongoDbUser followed = (MongoDbUser)
template.findOne(getUsernameQuery(friendUsername));
removeAssociation(follower, followed);
removeAssociation(followed, follower);
template.save(follower);
@@ -144,8 +157,8 @@ public class MongoDbPersonRepository imp
@Override
public boolean acceptFriendRequest(String friendUsername, String username)
{
- MongoDbUser follower =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- MongoDbUser followed =
(MongoDbUser)template.findOne(getUsernameQuery(friendUsername));
+ MongoDbUser follower = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ MongoDbUser followed = (MongoDbUser)
template.findOne(getUsernameQuery(friendUsername));
setAccepted(follower, followed);
setAccepted(followed, follower);
template.save(follower);
@@ -155,24 +168,14 @@ public class MongoDbPersonRepository imp
@Override
public List<Person> findFriendRequestsReceived(String username) {
- MongoDbUser followed =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- return Lists.transform(filterByRequestType(followed.getFriends(),
FriendRequestStatus.RECEIVED), new Function<MongoDbPersonAssociation, Person>()
{
- @Override
- public Person apply(@Nullable MongoDbPersonAssociation input) {
- return input == null ? null :
template.get(input.getPersonId()).toPerson();
- }
- });
+ MongoDbUser followed = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ return getPersonListFromAssociations(followed,
FriendRequestStatus.RECEIVED);
}
@Override
public List<Person> findFriendRequestsSent(String username) {
- MongoDbUser follower =
(MongoDbUser)template.findOne(getUsernameQuery(username));
- return Lists.transform(filterByRequestType(follower.getFriends(),
FriendRequestStatus.SENT), new Function<MongoDbPersonAssociation, Person>() {
- @Override
- public Person apply(@Nullable MongoDbPersonAssociation input) {
- return input == null ? null :
template.get(input.getPersonId()).toPerson();
- }
- });
+ MongoDbUser follower = (MongoDbUser)
template.findOne(getUsernameQuery(username));
+ return getPersonListFromAssociations(follower,
FriendRequestStatus.SENT);
}
@Override
@@ -188,7 +191,7 @@ public class MongoDbPersonRepository imp
@Override
public Person save(Person item) {
//TODO Support saving people other than users
- return item instanceof User ? template.save((User)item) : null;
+ return item instanceof User ? template.save((User) item) : null;
}
@Override
@@ -196,14 +199,42 @@ public class MongoDbPersonRepository imp
template.remove(getUsernameQuery(item.getUsername()));
}
+ private List<Person> getPersonListFromAssociations(MongoDbUser follower,
FriendRequestStatus status) {
+ return Lists.transform(filterByRequestType(follower.getFriends(),
status), new Function<MongoDbPersonAssociation, Person>() {
+ @Override
+ public Person apply(@Nullable MongoDbPersonAssociation input) {
+ return input == null ? null :
template.get(input.getPersonId()).toPerson();
+ }
+ });
+ }
+
+ private List<Person> getPersonListFromPages(List<Page> pages) {
+ return Lists.transform(pages, new Function<Page, Person>() {
+ @Override
+ public Person apply(@Nullable Page input) {
+ return input == null ? null : input.getOwner().toPerson();
+ }
+ });
+ }
+
+ private List<Long> getFriendIds(List<MongoDbPersonAssociation> friends) {
+ List<Long> ids = Lists.newArrayList();
+ for (MongoDbPersonAssociation friend : friends) {
+ if
(friend.getRequestStatus().equals(FriendRequestStatus.ACCEPTED)) {
+ ids.add(friend.getPersonId());
+ }
+ }
+ return ids;
+ }
+
private Query getUsernameQuery(String username) {
return query(where("username").is(username));
}
private List<MongoDbPersonAssociation>
filterByRequestType(List<MongoDbPersonAssociation> friends, FriendRequestStatus
received) {
List<MongoDbPersonAssociation> filtered = Lists.newArrayList();
- for(MongoDbPersonAssociation association : friends) {
- if(association.getRequestStatus().equals(received)) {
+ for (MongoDbPersonAssociation association : friends) {
+ if (association.getRequestStatus().equals(received)) {
filtered.add(association);
}
}
@@ -211,8 +242,8 @@ public class MongoDbPersonRepository imp
}
private void removeAssociation(MongoDbUser friend, MongoDbUser person) {
- for(MongoDbPersonAssociation association : person.getFriends()) {
- if(association.getPersonId().equals(friend.getId())) {
+ for (MongoDbPersonAssociation association : person.getFriends()) {
+ if (association.getPersonId().equals(friend.getId())) {
person.getFriends().remove(association);
break;
}
@@ -220,18 +251,18 @@ public class MongoDbPersonRepository imp
}
private void setAccepted(MongoDbUser friend, MongoDbUser person) {
- for(MongoDbPersonAssociation association : person.getFriends()) {
- if(association.getPersonId().equals(friend.getId())) {
+ for (MongoDbPersonAssociation association : person.getFriends()) {
+ if (association.getPersonId().equals(friend.getId())) {
association.setRequestStatus(FriendRequestStatus.ACCEPTED);
}
}
}
private List<Long> getCommonFriends(MongoDbUser follower, MongoDbUser
followed) {
- List<Long> ids= Lists.newArrayList();
- for(MongoDbPersonAssociation association : follower.getFriends()) {
- for(MongoDbPersonAssociation friendAssociation :
followed.getFriends()) {
-
if(association.getPersonId().equals(friendAssociation.getPersonId()) &&
+ List<Long> ids = Lists.newArrayList();
+ for (MongoDbPersonAssociation association : follower.getFriends()) {
+ for (MongoDbPersonAssociation friendAssociation :
followed.getFriends()) {
+ if
(association.getPersonId().equals(friendAssociation.getPersonId()) &&
association.getRequestStatus().equals(FriendRequestStatus.ACCEPTED) &&
friendAssociation.getRequestStatus().equals(FriendRequestStatus.ACCEPTED)) {
ids.add(friendAssociation.getPersonId());
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java?rev=1402359&r1=1402358&r2=1402359&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
Fri Oct 26 00:29:32 2012
@@ -52,8 +52,6 @@ public class MongoDbWidgetRepository imp
public static final String RATINGS_REDUCE =
"classpath:/org/apache/rave/WidgetRatingsReduce.js";
public static final String USERS_MAP =
"classpath:/org/apache/rave/WidgetUsersMap.js";
public static final String USERS_REDUCE =
"classpath:/org/apache/rave/WidgetUsersReduce.js";
- public static final String PAGE_COLLECTION = "page";
-
@Autowired
private MongoWidgetOperations template;
@@ -277,7 +275,7 @@ public class MongoDbWidgetRepository imp
}
private Query addSort(Query query) {
- query.sort().on("title", Order.ASCENDING);
+ query.sort().on("featured", Order.DESCENDING).on("title",
Order.ASCENDING);
return query;
}
Modified:
rave/branches/mongo/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1402359&r1=1402358&r2=1402359&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
(original)
+++
rave/branches/mongo/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
Fri Oct 26 00:29:32 2012
@@ -39,11 +39,11 @@ public class RegionWidgetTag extends Abs
// Script block for disabled gadget
private static final String DISABLED_SCRIPT_BLOCK =
- "<script>rave.registerWidget(%1$s, {type: 'DISABLED'," +
- " regionWidgetId: %2$s," +
+ "<script>rave.registerWidget('%1$s', {type: 'DISABLED'," +
+ " regionWidgetId: '%2$s'," +
" disabledMessage: '%3$s'," +
" collapsed: %4$s," +
- " widgetId: %5$s});</script>";
+ " widgetId: '%5$s'});</script>";
public RegionWidgetTag() {
super(RenderService.class);
@@ -74,7 +74,7 @@ public class RegionWidgetTag extends Abs
StringEscapeUtils.escapeJavaScript(regionWidget.getWidget().getDisableRenderingMessage()),
regionWidget.isCollapsed(),
regionWidget.getWidget().getId());
- String key = REGISTER_DISABLED_WIDGET_KEY + "-" +
regionWidget.getWidget().getId();
+ String key = REGISTER_DISABLED_WIDGET_KEY + "-" +
regionWidget.getId();
scriptManager.registerScriptBlock(key, widgetScript,
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, getContext());
} else {
writeString(getBean().render(regionWidget, getContext()));
Modified:
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/tags/navbar.tag
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/tags/navbar.tag?rev=1402359&r1=1402358&r2=1402359&view=diff
==============================================================================
---
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/tags/navbar.tag
(original)
+++
rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/tags/navbar.tag
Fri Oct 26 00:29:32 2012
@@ -44,7 +44,7 @@
<c:when
test="${navItem.hasChildren}">
<ul
class="dropdown-menu friendRequestDropdown">
<c:forEach items="${navItem.childNavigationItems}" var="childItem">
-
<li class="requestItem">${childItem.name}
+
<li class="requestItem"><c:out value="${childItem.name}" />
<a class="acceptFriendRequest" id="${childItem.nameParam}"
href="#"><i class="icon-ok"></i></a>
<a class="declineFriendRequest" id="${childItem.nameParam}"
href="#"><i class="icon-remove"></i></a>
</li>
Modified:
rave/branches/mongo/rave-portal-resources/src/main/webapp/static/script/rave_person_profile.js
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/webapp/static/script/rave_person_profile.js?rev=1402359&r1=1402358&r2=1402359&view=diff
==============================================================================
---
rave/branches/mongo/rave-portal-resources/src/main/webapp/static/script/rave_person_profile.js
(original)
+++
rave/branches/mongo/rave-portal-resources/src/main/webapp/static/script/rave_person_profile.js
Fri Oct 26 00:29:32 2012
@@ -130,33 +130,33 @@ rave.personprofile = rave.personprofile
)
.append(
$("<td/>")
- .attr("id", "friendStatusButtonHolder" +
this.entityId)
+ .attr("id", "friendStatusButtonHolder" + this.id)
)
);
if(this.username != currentUser){
// check if already added
if(rave.personprofile.isUserAlreadyFriend(this.username)){
- $('#friendStatusButtonHolder'+this.entityId)
+ $('#friendStatusButtonHolder'+this.id)
.append(
$("<a/>")
.attr("href", "#")
.attr("id", this.entityId)
- .attr("onclick",
"rave.personprofile.removeFriend("+this.entityId+", '"+this.username+"');")
+ .attr("onclick",
"rave.personprofile.removeFriend("+this.id+", '"+this.username+"');")
.text(rave.getClientMessage("common.remove"))
);
// check if already sent friend request
}else
if(rave.personprofile.isFriendRequestSent(this.username)){
- $('#friendStatusButtonHolder'+this.entityId)
+ $('#friendStatusButtonHolder'+this.id)
.append(
$("<a/>")
.attr("href", "#")
.attr("id", this.entityId)
- .attr("onclick",
"rave.personprofile.removeFriendRequestSent("+this.entityId+",
'"+this.username+"');")
+ .attr("onclick",
"rave.personprofile.removeFriendRequestSent("+this.id+", '"+this.username+"');")
.text(rave.getClientMessage("common.cancel.request"))
);
}else
if(rave.personprofile.isFriendRequestReceived(this.username)){
- $('#friendStatusButtonHolder'+this.entityId)
+ $('#friendStatusButtonHolder'+this.id)
.append(
$("<a/>")
.attr("href", "#")
@@ -166,17 +166,17 @@ rave.personprofile = rave.personprofile
' / ',
$("<a/>")
.attr("href", "#")
- .attr("id", this.entityId)
- .attr("onclick",
"rave.personprofile.declineFriendRequest("+this.entityId+",
'"+this.username+"');")
+ .attr("id", this.id)
+ .attr("onclick",
"rave.personprofile.declineFriendRequest("+this.id+", '"+this.username+"');")
.text(rave.getClientMessage("common.decline"))
);
}else {
- $('#friendStatusButtonHolder'+this.entityId)
+ $('#friendStatusButtonHolder'+this.id)
.append(
$("<a/>")
.attr("href", "#")
- .attr("id", this.entityId)
- .attr("onclick",
"rave.personprofile.addFriend("+this.entityId+", '"+this.username+"');")
+ .attr("id", this.id)
+ .attr("onclick",
"rave.personprofile.addFriend("+this.id+", '"+this.username+"');")
.text(rave.getClientMessage("common.add"))
);
}