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);
}
}