Author: mfranklin
Date: Thu Oct 25 01:39:34 2012
New Revision: 1401946

URL: http://svn.apache.org/viewvc?rev=1401946&view=rev
Log:
Fixed querying by category

Modified:
    
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.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/MongoDbWidgetRepository.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js

Modified: 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/util/data/DataImporter.java
 Thu Oct 25 01:39:34 2012
@@ -73,7 +73,7 @@ public class DataImporter {
 
     @PostConstruct
     public void importData() {
-        if (scriptLocations != null) {
+        if (scriptLocations != null && widgetRepository.getCountAll() == 0) {
             for (Resource resource : scriptLocations) {
                 ModelWrapper wrapper = mapObject(resource);
                 if (wrapper.getPageLayouts() != null) {

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
 Thu Oct 25 01:39:34 2012
@@ -19,10 +19,9 @@
 
 package org.apache.rave.portal.model;
 
-import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.impl.CategoryImpl;
+import org.apache.rave.portal.repository.MongoWidgetOperations;
 import org.apache.rave.portal.repository.UserRepository;
-import org.apache.rave.portal.repository.WidgetRepository;
 import org.codehaus.jackson.annotate.JsonAutoDetect;
 import org.codehaus.jackson.annotate.JsonIgnore;
 import org.codehaus.jackson.annotate.JsonMethod;
@@ -32,6 +31,9 @@ import javax.xml.bind.annotation.XmlAcce
 import javax.xml.bind.annotation.XmlTransient;
 import java.util.List;
 
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
 @XmlAccessorType(value = XmlAccessType.FIELD)
 @JsonAutoDetect(value = JsonMethod.FIELD)
 public class MongoDbCategory extends CategoryImpl {
@@ -40,13 +42,11 @@ public class MongoDbCategory extends Cat
     private UserRepository userRepository;
 
     @XmlTransient @JsonIgnore
-    private WidgetRepository widgetRepository;
+    private MongoWidgetOperations widgetTemplate;
 
     private Long lastModifiedUserId;
     private Long createdUserId;
 
-    private List<Long> widgetIds;
-
     public UserRepository getUserRepository() {
         return userRepository;
     }
@@ -55,20 +55,12 @@ public class MongoDbCategory extends Cat
         this.userRepository = userRepository;
     }
 
-    public WidgetRepository getWidgetRepository() {
-        return widgetRepository;
-    }
-
-    public void setWidgetRepository(WidgetRepository widgetRepository) {
-        this.widgetRepository = widgetRepository;
-    }
-
-    public List<Long> getWidgetIds() {
-        return widgetIds;
+    public MongoWidgetOperations getWidgetRepository() {
+        return widgetTemplate;
     }
 
-    public void setWidgetIds(List<Long> widgetIds) {
-        this.widgetIds = widgetIds;
+    public void setWidgetRepository(MongoWidgetOperations widgetRepository) {
+        this.widgetTemplate = widgetRepository;
     }
 
     public Long getLastModifiedUserId() {
@@ -111,10 +103,8 @@ public class MongoDbCategory extends Cat
     public List<Widget> getWidgets() {
         List<Widget> widgets =  super.getWidgets();
         if(widgets == null) {
-            widgets = Lists.newArrayList();
-            for(Long widgetId : widgetIds) {
-                widgets.add(widgetRepository.get(widgetId));
-            }
+            widgets = 
widgetTemplate.find(query(where("categoryIds").is(this.getId())));
+            super.setWidgets(widgets);
         }
         return widgets;
     }

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 Thu Oct 25 01:39:34 2012
@@ -19,18 +19,14 @@
 
 package org.apache.rave.portal.model.conversion.impl;
 
-import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.Category;
 import org.apache.rave.portal.model.MongoDbCategory;
-import org.apache.rave.portal.model.Widget;
 import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.repository.MongoWidgetOperations;
 import org.apache.rave.portal.repository.UserRepository;
-import org.apache.rave.portal.repository.WidgetRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-
 import static org.apache.rave.portal.model.util.MongoDbModelUtil.generateId;
 
 @Component
@@ -40,7 +36,7 @@ public class MongoDbCategoryConverter im
     private UserRepository userRepository;
 
     @Autowired
-    private WidgetRepository widgetRepository;
+    private MongoWidgetOperations widgetOperations;
 
     @Override
     public void hydrate(MongoDbCategory dehydrated) {
@@ -48,7 +44,7 @@ public class MongoDbCategoryConverter im
             return;
         }
         dehydrated.setUserRepository(userRepository);
-        dehydrated.setWidgetRepository(widgetRepository);
+        dehydrated.setWidgetRepository(widgetOperations);
     }
 
     @Override
@@ -68,13 +64,6 @@ public class MongoDbCategoryConverter im
         category.setCreatedUser(null);
         category.setLastModifiedUser(null);
         category.setText(source.getText());
-        ArrayList<Long> widgetIds = Lists.<Long>newArrayList();
-        category.setWidgetIds(widgetIds);
-        if (source.getWidgets() != null) {
-            for (Widget widget : source.getWidgets()) {
-                widgetIds.add(widget.getId());
-            }
-        }
         category.setWidgets(null);
         return category;
     }

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
 Thu Oct 25 01:39:34 2012
@@ -161,7 +161,9 @@ public class MongoDbPageConverter implem
     }
 
     private void hydrate(Region region) {
-        if (region.getRegionWidgets() != null) {
+        if (region.getRegionWidgets() == null) {
+            region.setRegionWidgets(Lists.<RegionWidget>newArrayList());
+        } else {
             for (RegionWidget regionWidget : region.getRegionWidgets()) {
                 hydrate((MongoDbRegionWidget) regionWidget, region);
             }

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
 Thu Oct 25 01:39:34 2012
@@ -90,13 +90,22 @@ public class MongoDbWidgetConverter impl
         if (source.getCategories() != null) {
             convertCategories(source, widget);
         }
-        if (source.getComments() != null) {
+
+        if (source.getComments() == null) {
+            widget.setComments(Lists.<WidgetComment>newArrayList());
+        } else {
             convertComments(source, widget);
         }
-        if(source.getTags() != null) {
+
+        if (source.getTags() == null) {
+            widget.setTags(Lists.<WidgetTag>newArrayList());
+        } else {
             convertTags(source, widget);
         }
-        if(source.getRatings() != null) {
+
+        if (source.getRatings() == null) {
+            widget.setRatings(Lists.<WidgetRating>newArrayList());
+        } else {
             convertRatings(source, widget);
         }
         return widget;

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=1401946&r1=1401945&r2=1401946&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
 Thu Oct 25 01:39:34 2012
@@ -32,6 +32,8 @@ import org.springframework.data.mongodb.
 import org.springframework.stereotype.Repository;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 
 import static org.springframework.data.mongodb.core.query.Criteria.where;
@@ -47,7 +49,7 @@ public class MongoDbPageRepository imple
 
     @Override
     public List<Page> getAllPages(Long userId, PageType pageType) {
-        return 
template.find(query(where("pageType").is(pageType.getPageType().toUpperCase()).andOperator(where("ownerId").is(userId))));
+        return 
sort(template.find(query(where("pageType").is(getString(pageType)).andOperator(where("ownerId").is(userId)))),
 userId);
     }
 
     @Override
@@ -70,12 +72,12 @@ public class MongoDbPageRepository imple
 
     @Override
     public List<PageUser> getPagesForUser(Long userId, PageType pageType) {
-        List<Page> pages = 
template.find(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(getString(pageType)))));
         List<PageUser> userList = Lists.newArrayList();
         for(Page page : pages) {
             userList.add(findPageUser(userId, page));
         }
-        return userList;
+        return sortUsers(userList, userId);
     }
 
     @Override
@@ -105,10 +107,41 @@ public class MongoDbPageRepository imple
 
     @Override
     public void delete(Page item) {
-        template.remove(query(where("id").is(item.getId())));
+        template.remove(query(where("_id").is(item.getId())));
+    }
+
+    private List<Page> sort(List<Page> pages, final Long userId) {
+        Collections.sort(pages, new Comparator<Page>() {
+            @Override
+            public int compare(Page page, Page page1) {
+                return getRenderOrder(page, userId) - getRenderOrder(page1, 
userId);
+            }
+        });
+        return pages;
+    }
+
+    private List<PageUser> sortUsers(List<PageUser> userList, Long userId) {
+        Collections.sort(userList, new Comparator<PageUser>() {
+            @Override
+            public int compare(PageUser pageUser, PageUser pageUser1) {
+                return getRenderOrder(pageUser) - getRenderOrder(pageUser1);
+            }
+        });
+        return userList;
+    }
+
+    private int getRenderOrder(PageUser pageUser) {
+        return pageUser == null || pageUser.getRenderSequence() == null ? 
Integer.MAX_VALUE : pageUser.getRenderSequence().intValue();
     }
 
-    private Query addSort(Query q) {
+    private int getRenderOrder(Page page, Long userId) {
+        for(PageUser user : page.getMembers()) {
+            MongoDbPageUser mUser = (MongoDbPageUser)user;
+            if(mUser.getUser().getId().equals(userId)) {
+                return getRenderOrder(mUser);
+            }
+        }
+        return -1;
     }
 
     /**
@@ -213,11 +246,15 @@ public class MongoDbPageRepository imple
 
     private PageUser findPageUser(Long userId, Page page) {
         for(PageUser user : page.getMembers()) {
-            if(user.getId().equals(userId)) {
+            if(user.getUser().getId().equals(userId)) {
                 return user;
             }
         }
         return null;
     }
 
+    private String getString(PageType pageType) {
+        return pageType.getPageType().toUpperCase();
+    }
+
 }

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=1401946&r1=1401945&r2=1401946&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
 Thu Oct 25 01:39:34 2012
@@ -260,7 +260,7 @@ public class MongoDbWidgetRepository imp
         }
     }
 
-    private WidgetStatistics createWidgetStatisticsFromResults(long user_id, 
WidgetRatingsMapReduceResult statsResult, int userResult) {
+    private WidgetStatistics createWidgetStatisticsFromResults(long user_id, 
WidgetRatingsMapReduceResult statsResult, Integer userResult) {
         WidgetStatistics statistics = new WidgetStatistics();
         WidgetRatingsMapReduceResult.WidgetStatisticsMapReduceResult result = 
statsResult.getValue();
         if (result != null) {
@@ -268,7 +268,7 @@ public class MongoDbWidgetRepository imp
             statistics.setTotalLike(result.getLike().intValue());
             
statistics.setUserRating(result.getUserRatings().containsKey(user_id) ? 
result.getUserRatings().get(user_id).intValue() : -1);
         }
-        statistics.setTotalUserCount(userResult);
+        statistics.setTotalUserCount(userResult == null ? 0 : userResult);
         return statistics;
     }
 

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js?rev=1401946&r1=1401945&r2=1401946&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js
 Thu Oct 25 01:39:34 2012
@@ -18,15 +18,15 @@
  */
 function () {
     if (this.ratings) {
-        for (var i = 0; i < this.ratings.length; i++) {
-            var rating = this.ratings[i];
+        var self = this;
+        this.ratings.forEach(function(rating){
             var userMap = {};
-            userMap[this.userId.floatApprox] = rating.score;
-            emit(this._id, {
-                    like:rating.score == 10 ? 1 : 0,
-                    dislike:rating.score == 0 ? 1 : 0,
-                    userRatings:userMap
-                });
-        }
+            userMap[rating.userId.floatApprox] = rating.score;
+            emit(self._id, {
+                like:rating.score == 10 ? 1 : 0,
+                dislike:rating.score == 0 ? 1 : 0,
+                userRatings:userMap
+            });
+        });
     }
 }


Reply via email to