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 2013/01/03 18:45:49 UTC

svn commit: r1428505 - in /rave/branches/mongo: rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/ rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/ rave-components/rave-mongodb/src/main/java/org/apa...

Author: mfranklin
Date: Thu Jan  3 17:45:48 2013
New Revision: 1428505

URL: http://svn.apache.org/viewvc?rev=1428505&view=rev
Log:
Cleaned up final merge bugs

Modified:
    rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
    rave/branches/mongo/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.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/MongoDbMapReduceStatisticsAggregator.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-portal-resources/src/main/resources_mongo/db/initial-data.json
    rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
    rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp

Modified: rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java (original)
+++ rave/branches/mongo/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPageService.java Thu Jan  3 17:45:48 2013
@@ -206,7 +206,7 @@ public class DefaultPageService implemen
         RegionWidget regionWidget = regionWidgetRepository.get(regionWidgetId);
         verifyRegionWidgetIsNotLocked(regionWidget);
         verifyRegionIsNotLocked(target);
-        if (toRegionId == fromRegionId) {
+        if (toRegionId.equals(fromRegionId)) {
             moveWithinRegion(regionWidgetId, newPosition, target);
         } else {
             moveBetweenRegions(regionWidgetId, newPosition, fromRegionId, target);
@@ -223,6 +223,8 @@ public class DefaultPageService implemen
         // Get the region widget
         RegionWidget regionWidget = getFromRepository(regionWidgetId, regionWidgetRepository);
 
+        Region moveFromRegion = regionWidget.getRegion();
+
         // Move it to first position of the first region
         Region moveToRegion = toPage.getRegions().get(0);
 
@@ -233,10 +235,14 @@ public class DefaultPageService implemen
         regionWidget.setRenderOrder(0);
         regionWidget.setRegion(moveToRegion);
         moveToRegion.getRegionWidgets().add(0, regionWidget);
+        //remove it from the old region
+        moveFromRegion.getRegionWidgets().remove(regionWidget);
         // update the rendersequences of the widgets in this region
         updateRenderSequences(moveToRegion.getRegionWidgets());
+        updateRenderSequences(moveFromRegion.getRegionWidgets());
         // persist it
         regionRepository.save(moveToRegion);
+        regionRepository.save(moveFromRegion);
         return getFromRepository(regionWidgetId, regionWidgetRepository);
     }
 
@@ -318,7 +324,6 @@ public class DefaultPageService implemen
 
     @Transactional
     public Boolean clonePageForUser(String pageId, String userId, String pageName) {
-        Widget widget = null;
         Page page = getPage(pageId);
         if(pageName == null || pageName.equals("null")){
             // try to use the original page name if none supplied
@@ -329,10 +334,10 @@ public class DefaultPageService implemen
         for(int i=0; i<page.getRegions().size(); i++){
             for(int j=0; j<page.getRegions().get(i).getRegionWidgets().size(); j++){
                 String widgetId = page.getRegions().get(i).getRegionWidgets().get(j).getWidgetId();
-                widget = widgetRepository.get(widgetId);
-                addWidgetToPageRegion(clonedPage.getId(), widget.getId(), clonedPage.getRegions().get(i).getId());
+                addWidgetToPageRegion(clonedPage.getId(), widgetId, clonedPage.getRegions().get(i).getId());
             }
         }
+        clonedPage = getFromRepository(clonedPage.getId(), pageRepository);
         // newly created page - so only one pageUser
         PageUser pageUser = clonedPage.getMembers().get(0);
         // update status to pending

Modified: rave/branches/mongo/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java (original)
+++ rave/branches/mongo/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPageServiceTest.java Thu Jan  3 17:45:48 2013
@@ -19,6 +19,7 @@
 
 package org.apache.rave.portal.service.impl;
 
+import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.Page;
 import org.apache.rave.portal.model.PageLayout;
 import org.apache.rave.portal.model.PageTemplate;
@@ -1307,21 +1308,25 @@ public class DefaultPageServiceTest {
 
         Region region = new RegionImpl();
         region.setLocked(false);
+        region.setRegionWidgets(Lists.<RegionWidget>newArrayList());
 
         RegionWidget regionWidget = new RegionWidgetImpl(VALID_REGION_WIDGET_ID);
         regionWidget.setRegion(region);
+        region.getRegionWidgets().add(regionWidget);
 
         expect(pageRepository.get(TO_PAGE_ID)).andReturn(toPageValue);
         expect(regionWidgetRepository.get(WIDGET_ID)).andReturn(regionWidget).times(2);
+        expect(regionRepository.save(originalRegion)).andReturn(originalRegion);
+        expect(regionRepository.save(region)).andReturn(region);
 
-        replay(pageRepository);
-        replay(regionWidgetRepository);
+        replay(pageRepository, regionWidgetRepository, regionRepository);
 
         RegionWidget updatedRegionWidget = pageService.moveRegionWidgetToPage(VALID_REGION_WIDGET_ID, TO_PAGE_ID);
 
         verify(pageRepository);
         verify(regionWidgetRepository);
         verifyPositions(0, regionWidget, true);
+        assertThat(region.getRegionWidgets().isEmpty(), is(true));
 
     }
 

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=1428505&r1=1428504&r2=1428505&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 Jan  3 17:45:48 2013
@@ -22,6 +22,7 @@ package org.apache.rave.portal.model.con
 import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.*;
 import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.model.impl.WidgetCommentImpl;
 import org.apache.rave.portal.model.impl.WidgetRatingImpl;
 import org.apache.rave.portal.repository.CategoryRepository;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -62,8 +63,11 @@ public class MongoDbWidgetConverter impl
             convertCategories(source, widget);
         }
 
-        List<WidgetComment> comments = source.getComments() == null ? Lists.<WidgetComment>newArrayList() : source.getComments();
-        widget.setComments(comments);
+        if (source.getComments() == null) {
+            widget.setComments(Lists.<WidgetComment>newArrayList());
+        } else {
+            convertComments(source, widget);
+        }
 
         List<WidgetTag> tags = source.getTags() == null ? Lists.<WidgetTag>newArrayList() : source.getTags();
         widget.setTags(tags);
@@ -86,6 +90,27 @@ public class MongoDbWidgetConverter impl
         widget.setRatings(converted);
     }
 
+
+    private void convertComments(Widget source, MongoDbWidget widget) {
+        List<WidgetComment> convertedComments = Lists.newArrayList();
+        for (WidgetComment comment : source.getComments()) {
+            convertedComments.add(convert(comment, widget));
+        }
+        widget.setComments(convertedComments);
+    }
+
+
+    private WidgetCommentImpl convert(WidgetComment comment, Widget widget) {
+        WidgetCommentImpl converted = comment instanceof WidgetCommentImpl ? ((WidgetCommentImpl) comment) : new WidgetCommentImpl();
+        converted.setUserId(comment.getUserId());
+        converted.setId(comment.getId() == null ? generateId() : comment.getId());
+
+        converted.setCreatedDate(comment.getCreatedDate());
+        converted.setLastModifiedDate(comment.getLastModifiedDate());
+        converted.setText(comment.getText());
+        return converted;
+    }
+
     private void convertCategories(Widget source, MongoDbWidget converted) {
         List<String> categoryIds = Lists.<String>newArrayList();
         for (Category category : source.getCategories()) {

Modified: rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbMapReduceStatisticsAggregator.java
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbMapReduceStatisticsAggregator.java?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbMapReduceStatisticsAggregator.java (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbMapReduceStatisticsAggregator.java Thu Jan  3 17:45:48 2013
@@ -24,6 +24,8 @@ import org.apache.rave.portal.model.Widg
 import org.apache.rave.portal.model.WidgetUsersMapReduceResult;
 import org.apache.rave.portal.model.util.WidgetStatistics;
 import org.apache.rave.portal.repository.StatisticsAggregator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.data.mongodb.core.mapreduce.MapReduceOptions;
@@ -44,6 +46,9 @@ import static org.apache.rave.portal.rep
  */
 @Component
 public class MongoDbMapReduceStatisticsAggregator implements StatisticsAggregator {
+
+    private static final Logger log = LoggerFactory.getLogger(MongoDbMapReduceStatisticsAggregator.class);
+
     public static final String RATINGS_MAP = "classpath:/org/apache/rave/WidgetRatingsMap.js";
     public static final String RATINGS_REDUCE = "classpath:/org/apache/rave/WidgetRatingsReduce.js";
     public static final String USERS_MAP = "classpath:/org/apache/rave/WidgetUsersMap.js";
@@ -102,14 +107,19 @@ public class MongoDbMapReduceStatisticsA
         Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new Runnable() {
             @Override
             public void run() {
-                buildStats();
+                try {
+                    log.debug("Executing Map/Reduce Statistics Aggregation");
+                    buildStats();
+                } catch (Exception e) {
+                    log.error("Error executing Map/Reduce Statistics Aggregation!", e);
+                }
             }
         }, 0, DEFAULT_RESULT_VALIDITY, TimeUnit.SECONDS);
     }
 
     public void buildStats() {
         RunStatistics runStats = mongoOperations.findById(ID, RunStatistics.class, OPERATIONS);
-        if(runStats == null || (System.currentTimeMillis() - (runStats.getRefreshedTimeStamp()*1000) > DEFAULT_RESULT_VALIDITY)) {
+        if(runStats == null || (System.currentTimeMillis() - runStats.getRefreshedTimeStamp()) > (DEFAULT_RESULT_VALIDITY * 1000)) {
             queryForUserStats();
         }
     }

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=1428505&r1=1428504&r2=1428505&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 Jan  3 17:45:48 2013
@@ -49,7 +49,7 @@ public class MongoDbPageRepository imple
 
     @Override
     public List<Page> getAllPages(String  userId, PageType pageType) {
-        return sort(template.find(query(where("pageType").is(getString(pageType)).andOperator(where("ownerId").is(userId)))), userId);
+        return sort(template.find(query(where("pageType").is(getString(pageType)).andOperator(where("members").elemMatch(where("userId").is(userId))))), userId);
     }
 
     @Override

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=1428505&r1=1428504&r2=1428505&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 Jan  3 17:45:48 2013
@@ -348,10 +348,14 @@ public class MongoDbWidgetRepository imp
     }
 
     private WidgetTag getTagByKeyword(String keyword, Widget widget) {
-        Tag tag = tagTemplate.findOne(query(where("keyword").is(keyword)));
+        Tag tag = getTag(keyword);
         return tag == null ? null : getWidgetTagByTagId(widget, tag.getId());
     }
 
+    private Tag getTag(String keyword) {
+        return tagTemplate.findOne(query(where("keyword").is(keyword)));
+    }
+
     private WidgetTag getWidgetTagByTagId(Widget widget, String tagId) {
         for (WidgetTag widgetTag : widget.getTags()) {
             if (widgetTag.getTagId().equals(tagId)) {
@@ -377,14 +381,15 @@ public class MongoDbWidgetRepository imp
     public WidgetComment createWidgetComment(String widgetId, WidgetComment comment) {
         Widget widget = template.get(widgetId);
         widget.getComments().add(comment);
-        save(widget);
-        return comment;
+        widget = save(widget);
+        return findCommentByProperties(widget, comment);
     }
 
     @Override
     public WidgetComment updateWidgetComment(String widgetId, WidgetComment comment) {
         Widget widget = template.get(widgetId);
-        return updateComment(widget, comment);
+        updateComment(widget, comment);
+        return getCommentById(save(widget), comment.getId());
     }
 
     @Override
@@ -480,7 +485,8 @@ public class MongoDbWidgetRepository imp
     }
 
     private Query getTagQuery(String tagKeyWord) {
-        return query(where("tags").elemMatch(where("tag.keyword").is(tagKeyWord)));
+        Tag tag = getTag(tagKeyWord);
+        return query(where("tags").elemMatch(where("tagId").is(tag.getId())));
     }
 
     private String getWidgetStatusString(WidgetStatus widgetStatus) {
@@ -492,6 +498,17 @@ public class MongoDbWidgetRepository imp
         return query;
     }
 
+    private WidgetComment findCommentByProperties(Widget widget, WidgetComment comment) {
+        for(WidgetComment c : widget.getComments()) {
+            if(c.getUserId().equals(comment.getUserId()) &&
+                    c.getText().equals(comment.getText()) &&
+                    c.getCreatedDate().equals(comment.getCreatedDate())) {
+                return c;
+            }
+        }
+        return null;
+    }
+
     public void setTemplate(MongoWidgetOperations template) {
         this.template = template;
     }

Modified: rave/branches/mongo/rave-portal-resources/src/main/resources_mongo/db/initial-data.json
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/resources_mongo/db/initial-data.json?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal-resources/src/main/resources_mongo/db/initial-data.json (original)
+++ rave/branches/mongo/rave-portal-resources/src/main/resources_mongo/db/initial-data.json Thu Jan  3 17:45:48 2013
@@ -1507,7 +1507,7 @@
                 "id": 2
             }
         ],
-        "renderSequence": 0,
+        "renderSequence": 1,
         "defaultTemplate": true
     }
 ]

Modified: rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp (original)
+++ rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp Thu Jan  3 17:45:48 2013
@@ -165,7 +165,7 @@
             </div>
         </div>
         <div class="span3">
-            <portal:person id="${page.ownerId}" var="${owner}" />
+            <portal:person id="${page.ownerId}" var="owner" />
         	<button type="button" id="addRemoveFriend" value="${owner.username}" class="btn btn-primary profile-info-visible"><fmt:message key="page.personProfile.addremove.friends"/></button>
         </div>
         <div class="span3">

Modified: rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp
URL: http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp?rev=1428505&r1=1428504&r2=1428505&view=diff
==============================================================================
--- rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp (original)
+++ rave/branches/mongo/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp Thu Jan  3 17:45:48 2013
@@ -43,7 +43,7 @@
                         <div id="widgetAdded_${widget.id}" class="detailWidgetAdd">
                             <button class="btn btn-primary btn-large storeItemButton"
                                     id="addWidget_${widget.id}"
-                                    onclick="rave.api.rpc.addWidgetToPage({widgetId: ${widget.id}, pageId: ${referringPageId}, redirectAfterAdd:true});"
+                                    onclick="rave.api.rpc.addWidgetToPage({widgetId: '${widget.id}', pageId: '${referringPageId}', redirectAfterAdd:true});"
                                     data-success="<fmt:message key="page.widget.addedToPage"/>">
                                 <fmt:message key="page.widget.addToPage"/>
                             </button>