You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2012/10/24 22:28:24 UTC

svn commit: r1401862 - in /rave/branches/mongo/rave-components/rave-mongodb/src/main: java/org/apache/rave/portal/model/util/ java/org/apache/rave/portal/repository/impl/ resources/org/apache/rave/

Author: mfranklin
Date: Wed Oct 24 20:28:24 2012
New Revision: 1401862

URL: http://svn.apache.org/viewvc?rev=1401862&view=rev
Log:
Fixed search by free text

Modified:
    rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/util/MongoDbModelUtil.java
    rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
    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-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js

Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/util/MongoDbModelUtil.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/util/MongoDbModelUtil.java?rev=1401862&r1=1401861&r2=1401862&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/util/MongoDbModelUtil.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/util/MongoDbModelUtil.java Wed Oct 24 20:28:24 2012
@@ -29,6 +29,7 @@ public class MongoDbModelUtil {
     private MongoDbModelUtil(){}
 
     public static long generateId() {
-        return Math.abs(new Random().nextLong());
+        //Use INT as javascript has issues with truncating longs and we are moving model Ids to String
+        return Math.abs(new Random().nextInt());
     }
 }

Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java?rev=1401862&r1=1401861&r2=1401862&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java Wed Oct 24 20:28:24 2012
@@ -35,6 +35,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
 
 /**
  */
@@ -46,12 +47,12 @@ public class MongoDbPageRepository imple
 
     @Override
     public List<Page> getAllPages(Long userId, PageType pageType) {
-        return template.find(new Query(where("pageType").is(pageType.getPageType().toUpperCase()).andOperator(where("ownerId").is(userId))));
+        return template.find(query(where("pageType").is(pageType.getPageType().toUpperCase()).andOperator(where("ownerId").is(userId))));
     }
 
     @Override
     public int deletePages(Long userId, PageType pageType) {
-        Query query = new Query(where("pageType").is(pageType).andOperator(where("ownerId").is(userId)));
+        Query query = query(where("pageType").is(pageType).andOperator(where("ownerId").is(userId)));
         int count = (int)template.count(query);
         template.remove(query);
         return count;
@@ -64,12 +65,12 @@ public class MongoDbPageRepository imple
 
     @Override
     public boolean hasPersonPage(long userId) {
-        return template.count(new Query(where("pageType").is(PageType.PERSON_PROFILE).andOperator(where("ownerId").is(userId)))) > 0;
+        return template.count(query(where("pageType").is(PageType.PERSON_PROFILE).andOperator(where("ownerId").is(userId)))) > 0;
     }
 
     @Override
     public List<PageUser> getPagesForUser(Long userId, PageType pageType) {
-        List<Page> pages = template.find(new Query(where("members").elemMatch(where("userId").is(userId)).andOperator(where("pageType").is(pageType))));
+        List<Page> pages = template.find(query(where("members").elemMatch(where("userId").is(userId)).andOperator(where("pageType").is(pageType))));
         List<PageUser> userList = Lists.newArrayList();
         for(Page page : pages) {
             userList.add(findPageUser(userId, page));
@@ -104,7 +105,10 @@ public class MongoDbPageRepository imple
 
     @Override
     public void delete(Page item) {
-        template.remove(new Query(where("id").is(item.getId())));
+        template.remove(query(where("id").is(item.getId())));
+    }
+
+    private Query addSort(Query q) {
     }
 
     /**

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=1401862&r1=1401861&r2=1401862&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 Wed Oct 24 20:28:24 2012
@@ -66,7 +66,7 @@ public class MongoDbPersonRepository imp
 
     @Override
     public List<Person> findFriends(String username) {
-        MongoDbUser user = (MongoDbUser)template.find(getUsernameQuery(username));
+        MongoDbUser user = (MongoDbUser)template.findOne(getUsernameQuery(username));
         return Lists.transform(user.getFriends(), new Function<MongoDbPersonAssociation, Person>() {
             @Override
             public Person apply(@Nullable MongoDbPersonAssociation input) {
@@ -81,8 +81,8 @@ public class MongoDbPersonRepository imp
 
     @Override
     public List<Person> findFriendsWithFriend(String username, String friendUsername) {
-        MongoDbUser follower = (MongoDbUser)template.find(getUsernameQuery(username));
-        MongoDbUser followed = (MongoDbUser)template.find(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
@@ -109,8 +109,8 @@ public class MongoDbPersonRepository imp
 
     @Override
     public boolean addFriend(String friendUsername, String username) {
-        MongoDbUser follower = (MongoDbUser)template.find(getUsernameQuery(username));
-        MongoDbUser followed = (MongoDbUser)template.find(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 +125,8 @@ public class MongoDbPersonRepository imp
 
     @Override
     public void removeFriend(String friendUsername, String username) {
-        MongoDbUser follower = (MongoDbUser)template.find(getUsernameQuery(username));
-        MongoDbUser followed = (MongoDbUser)template.find(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 +144,8 @@ public class MongoDbPersonRepository imp
 
     @Override
     public boolean acceptFriendRequest(String friendUsername, String username) {
-        MongoDbUser follower = (MongoDbUser)template.find(getUsernameQuery(username));
-        MongoDbUser followed = (MongoDbUser)template.find(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);
@@ -166,7 +166,7 @@ public class MongoDbPersonRepository imp
 
     @Override
     public List<Person> findFriendRequestsSent(String username) {
-        MongoDbUser follower = (MongoDbUser)template.find(getUsernameQuery(username));
+        MongoDbUser follower = (MongoDbUser)template.findOne(getUsernameQuery(username));
         return Lists.transform(follower.getFriends(), new Function<MongoDbPersonAssociation, Person>() {
             @Override
             public Person apply(@Nullable MongoDbPersonAssociation input) {

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=1401862&r1=1401861&r2=1401862&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 Wed Oct 24 20:28:24 2012
@@ -36,6 +36,7 @@ import org.springframework.stereotype.Re
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Pattern;
 
 import static org.springframework.data.mongodb.core.query.Criteria.where;
 import static org.springframework.data.mongodb.core.query.Query.query;
@@ -76,13 +77,13 @@ public class MongoDbWidgetRepository imp
 
     @Override
     public List<Widget> getByFreeTextSearch(String searchTerm, int offset, int pageSize) {
-        Query query = new Query(getFreeTextClause(searchTerm)).skip(offset).limit(pageSize);
+        Query query = new Query(addFreeTextClause(searchTerm, new Criteria())).skip(offset).limit(pageSize);
         return template.find(addSort(query));
     }
 
     @Override
     public int getCountFreeTextSearch(String searchTerm) {
-        return (int) template.count(new Query(getFreeTextClause(searchTerm)));
+        return (int) template.count(new Query(addFreeTextClause(searchTerm, new Criteria())));
     }
 
     @Override
@@ -220,19 +221,20 @@ public class MongoDbWidgetRepository imp
     }
 
     private Query getWidgetStatusFreeTextQuery(WidgetStatus widgetStatus, String type, String searchTerm) {
-        Criteria criteria = getFreeTextClause(searchTerm);
+        Criteria criteria = new Criteria();
         if(type != null) {
-            criteria.andOperator(where("type").is(type));
+            criteria.and("type").is(type);
         }
         if(widgetStatus != null) {
-            criteria.andOperator(where("widgetStatus").is(getWidgetStatusString(widgetStatus)));
+            criteria.and("widgetStatus").is(getWidgetStatusString(widgetStatus));
         }
-        return query(criteria);
+        return query(addFreeTextClause(searchTerm, criteria));
     }
 
-    private Criteria getFreeTextClause(String searchTerm) {
-        String regex = ".*" + searchTerm + ".*";
-        return where("title").regex(regex).orOperator(where("title").is(regex));
+    private Criteria addFreeTextClause(String searchTerm, Criteria criteria) {
+        Pattern p = Pattern.compile(".*" + searchTerm + ".*", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
+        criteria.orOperator(where ("title") .regex(p), (where("description").regex(p)));
+        return criteria;
     }
 
     private Query getQueryByOwner(User owner) {

Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js?rev=1401862&r1=1401861&r2=1401862&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js Wed Oct 24 20:28:24 2012
@@ -21,23 +21,27 @@ function () {
     var widgetMap = {};
     var self = this;
 
-    var mapPage = function(page) {
+    var mapPage = function (page) {
         if (page.regions) {
-            page.regions.forEach(function(region) {
-                region.regionWidgets.forEach(function(regionWidget) {
-                    if (!widgetMap[regionWidget.widgetId]) {
-                        widgetMap[regionWidget.widgetId] = true;
-                        var userMap = {};
-                        userMap[self.ownerId.floatApprox] = 1;
-                        emit(regionWidget.widgetId, userMap);
-                    }
-                })
+            page.regions.forEach(function (region) {
+                if (region.regionWidgets) {
+                    region.regionWidgets.forEach(function (regionWidget) {
+                        if (!widgetMap[regionWidget.widgetId]) {
+                            widgetMap[regionWidget.widgetId] = true;
+                            var userMap = {};
+                            userMap[self.ownerId.floatApprox] = 1;
+                            emit(regionWidget.widgetId, userMap);
+                        }
+                    })
+                }
             })
         }
     };
 
     mapPage(this);
-    if(this.subPages) {
-        this.subPages.forEach(function(p){mapPage(p)})
+    if (this.subPages) {
+        this.subPages.forEach(function (p) {
+            mapPage(p)
+        })
     }
 }