Author: mfranklin
Date: Mon Nov 19 18:14:57 2012
New Revision: 1411341

URL: http://svn.apache.org/viewvc?rev=1411341&view=rev
Log:
Simplified converters

Added:
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPageLayout.java
      - copied, changed from r1404554, 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java
Removed:
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java
Modified:
    
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/MongoDbPortalPreferenceConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.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/MongoDbPageLayoutRepository.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java

Copied: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPageLayout.java
 (from r1404554, 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java)
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPageLayout.java?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPageLayout.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java&r1=1404554&r2=1411341&rev=1411341&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbPageLayout.java
 Mon Nov 19 18:14:57 2012
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-package org.apache.rave.portal.model.conversion.impl;
+package org.apache.rave.portal.model;
 
 
 import org.apache.rave.portal.model.impl.PageLayoutImpl;

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=1411341&r1=1411340&r2=1411341&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
 Mon Nov 19 18:14:57 2012
@@ -54,7 +54,7 @@ public class MongoDbCategoryConverter im
 
     @Override
     public MongoDbCategory convert(Category source) {
-        MongoDbCategory category = source instanceof MongoDbCategory ? 
((MongoDbCategory) source) : new MongoDbCategory();
+        MongoDbCategory category = new MongoDbCategory();
         category.setCreatedDate(source.getCreatedDate());
         category.setCreatedUserId(source.getCreatedUser() ==null ? null : 
source.getCreatedUser().getId());
         category.setLastModifiedUserId(source.getLastModifiedUser() == null ? 
null : source.getLastModifiedUser().getId());

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=1411341&r1=1411340&r2=1411341&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
 Mon Nov 19 18:14:57 2012
@@ -52,7 +52,7 @@ public class MongoDbPageConverter implem
 
     @Override
     public MongoDbPage convert(Page sourcePage) {
-        MongoDbPage page = sourcePage instanceof MongoDbPage ? (MongoDbPage) 
sourcePage : new MongoDbPage();
+        MongoDbPage page = new MongoDbPage();
         page.setId(page.getId() == null ? generateId() : sourcePage.getId());
         page.setOwnerId(sourcePage.getOwner().getId());
         page.setPageLayoutCode(sourcePage.getPageLayout().getCode());

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPortalPreferenceConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPortalPreferenceConverter.java?rev=1411341&r1=1411340&r2=1411341&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPortalPreferenceConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPortalPreferenceConverter.java
 Mon Nov 19 18:14:57 2012
@@ -40,8 +40,14 @@ public class MongoDbPortalPreferenceConv
 
     @Override
     public MongoDbPortalPreference convert(PortalPreference source) {
-        MongoDbPortalPreference converted = source instanceof 
MongoDbPortalPreference ? ((MongoDbPortalPreference)source) : new 
MongoDbPortalPreference();
-        converted.setId(generateId());
+        MongoDbPortalPreference converted;
+        if (source instanceof MongoDbPortalPreference) {
+            converted = ((MongoDbPortalPreference) source);
+        }
+        else {
+            converted = new MongoDbPortalPreference();
+            converted.setId(generateId());
+        }
         converted.setKey(source.getKey());
         converted.setValues(source.getValues());
         return converted;

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java?rev=1411341&r1=1411340&r2=1411341&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 Mon Nov 19 18:14:57 2012
@@ -59,7 +59,7 @@ public class MongoDbUserConverter implem
 
     @Override
     public MongoDbUser convert(User source) {
-        MongoDbUser user = source instanceof MongoDbUser ? 
((MongoDbUser)source) : new MongoDbUser();
+        MongoDbUser user = new MongoDbUser();
         List<String> authorityCodes = Lists.newArrayList();
         for(GrantedAuthority authority : source.getAuthorities()) {
             authorityCodes.add(authority.getAuthority());

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=1411341&r1=1411340&r2=1411341&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
 Mon Nov 19 18:14:57 2012
@@ -81,7 +81,7 @@ public class MongoDbWidgetConverter impl
 
     @Override
     public MongoDbWidget convert(Widget source) {
-        MongoDbWidget widget = source instanceof MongoDbWidget ? 
(MongoDbWidget) source : new MongoDbWidget();
+        MongoDbWidget widget = new MongoDbWidget();
         updateProperties(source, widget);
         widget.setOwnerId(source.getOwner() != null ? 
source.getOwner().getId() : null);
         widget.setOwner(null);

Modified: 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
URL: 
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java?rev=1411341&r1=1411340&r2=1411341&view=diff
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
 (original)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageLayoutRepository.java
 Mon Nov 19 18:14:57 2012
@@ -21,7 +21,7 @@ package org.apache.rave.portal.repositor
 
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.rave.portal.model.PageLayout;
-import org.apache.rave.portal.model.conversion.impl.MongoDbPageLayout;
+import org.apache.rave.portal.model.MongoDbPageLayout;
 import org.apache.rave.portal.repository.PageLayoutRepository;
 import org.apache.rave.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;

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=1411341&r1=1411340&r2=1411341&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
 Mon Nov 19 18:14:57 2012
@@ -33,9 +33,12 @@ import org.springframework.data.mongodb.
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Repository;
 
+import javax.annotation.PostConstruct;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 import java.util.regex.Pattern;
 
 import static org.springframework.data.mongodb.core.query.Criteria.where;
@@ -52,6 +55,11 @@ 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 int DEFAULT_RESULT_VALIDITY = 60000;
+
+    private Map<Long, Integer> widgetUsers = Maps.newHashMap();
+    private long usersTimestamp = System.currentTimeMillis();
+
     @Autowired
     private MongoWidgetOperations template;
 
@@ -145,13 +153,11 @@ public class MongoDbWidgetRepository imp
     @Override
     public Map<Long, WidgetStatistics> getAllWidgetStatistics(long userId) {
         MapReduceResults<WidgetRatingsMapReduceResult> widgetStats = 
template.mapReduce(RATINGS_MAP, RATINGS_REDUCE, 
WidgetRatingsMapReduceResult.class);
-        MapReduceResults<WidgetUsersMapReduceResult> users = 
pageTemplate.mapReduce(USERS_MAP, USERS_REDUCE, 
WidgetUsersMapReduceResult.class);
         Map<Long, WidgetStatistics> stats = Maps.newHashMap();
-        if (widgetStats.getCounts().getOutputCount() >0) {
-            Map<Long, Integer> usersMap = mapUsersResults(users);
-            addCombinedStats(userId, widgetStats, usersMap, stats);
+        if (widgetStats.getCounts().getOutputCount() > 0) {
+            addCombinedStats(userId, widgetStats, widgetUsers, stats);
         } else {
-            addUserCount(users, stats);
+            addUserCount(widgetUsers, stats);
         }
         return stats;
     }
@@ -161,9 +167,9 @@ public class MongoDbWidgetRepository imp
         Query q = 
query(where("ratings").elemMatch(where("userId").is(userId)));
         List<Widget> widgets = template.find(q);
         Map<Long, WidgetRating> ratings = Maps.newHashMap();
-        for(Widget widget : widgets) {
-            for(WidgetRating rating : widget.getRatings()) {
-                if(rating.getUserId().equals(userId)) {
+        for (Widget widget : widgets) {
+            for (WidgetRating rating : widget.getRatings()) {
+                if (rating.getUserId().equals(userId)) {
                     ratings.put(widget.getId(), rating);
                     break;
                 }
@@ -208,10 +214,33 @@ public class MongoDbWidgetRepository imp
         template.remove(new Query(where("_id").is(item.getId())));
     }
 
+    @PostConstruct
+    private void init() {
+        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new 
Runnable() {
+            @Override
+            public void run() {
+                if(System.currentTimeMillis() - usersTimestamp > 
DEFAULT_RESULT_VALIDITY) {
+                    queryForUserStats();
+                }
+            }
+        }, 0, DEFAULT_RESULT_VALIDITY, TimeUnit.MILLISECONDS);
+    }
+
+    private Map<Long, Integer> queryForUserStats() {
+        synchronized (this) {
+            if(System.currentTimeMillis() - usersTimestamp > 
DEFAULT_RESULT_VALIDITY) {
+                MapReduceResults<WidgetUsersMapReduceResult> users = 
pageTemplate.mapReduce(USERS_MAP, USERS_REDUCE, 
WidgetUsersMapReduceResult.class);
+                widgetUsers = mapUsersResults(users);
+                usersTimestamp = System.currentTimeMillis();
+            }
+        }
+        return widgetUsers;
+    }
+
     private Map<Long, Integer> 
mapUsersResults(MapReduceResults<WidgetUsersMapReduceResult> 
widgetUsersMapReduceResults) {
         Map<Long, Integer> map = Maps.newHashMap();
-        for(WidgetUsersMapReduceResult result : widgetUsersMapReduceResults) {
-            if(result.getId() != null) {
+        for (WidgetUsersMapReduceResult result : widgetUsersMapReduceResults) {
+            if (result.getId() != null) {
                 map.put(result.getId(), result.getValue().size());
             }
         }
@@ -220,10 +249,10 @@ public class MongoDbWidgetRepository imp
 
     private Query getWidgetStatusFreeTextQuery(WidgetStatus widgetStatus, 
String type, String searchTerm) {
         Criteria criteria = addFreeTextClause(searchTerm, new Criteria());
-        if(type != null && !type.isEmpty()) {
+        if (type != null && !type.isEmpty()) {
             criteria.and("type").is(type);
         }
-        if(widgetStatus != null) {
+        if (widgetStatus != null) {
             
criteria.and("widgetStatus").is(getWidgetStatusString(widgetStatus));
         }
         return query(criteria);
@@ -231,7 +260,7 @@ public class MongoDbWidgetRepository imp
 
     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)));
+        criteria.orOperator(where("title").regex(p), 
(where("description").regex(p)));
         return criteria;
     }
 
@@ -243,12 +272,12 @@ public class MongoDbWidgetRepository imp
         return 
query(where("tags").elemMatch(where("tag.keyword").is(tagKeyWord)));
     }
 
-    private void addUserCount(MapReduceResults<WidgetUsersMapReduceResult> 
users, Map<Long, WidgetStatistics> stats) {
-        for(WidgetUsersMapReduceResult result : users) {
+    private void addUserCount(Map<Long, Integer> users, Map<Long, 
WidgetStatistics> stats) {
+        for (Map.Entry<Long, Integer> result : users.entrySet()) {
             WidgetStatistics widgetStatistics = new WidgetStatistics();
-            widgetStatistics.setTotalUserCount(result.getValue().size());
+            widgetStatistics.setTotalUserCount(result.getValue());
             widgetStatistics.setUserRating(-1);
-            stats.put(result.getId(), widgetStatistics);
+            stats.put(result.getKey(), widgetStatistics);
         }
     }
 
@@ -281,9 +310,9 @@ public class MongoDbWidgetRepository imp
 
     private Set<Long> getUserCount(List<Page> pages) {
         Set<Long> set = Sets.newHashSet();
-        for(Page page : pages) {
+        for (Page page : pages) {
             Long id = page.getOwner().getId();
-            if(!set.contains(id)) {
+            if (!set.contains(id)) {
                 set.add(id);
             }
         }


Reply via email to