Author: mfranklin
Date: Wed Oct 24 18:05:05 2012
New Revision: 1401802
URL: http://svn.apache.org/viewvc?rev=1401802&view=rev
Log:
Updated user query & fixed store bugs
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersReduce.js
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.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/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsMap.js
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsReduce.js
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbUser.java
Wed Oct 24 18:05:05 2012
@@ -115,12 +115,16 @@ public class MongoDbUser extends UserImp
}
@Override
- public boolean equals(Object obj) {
- if (obj == null || !(obj instanceof User)) {
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof MongoDbUser)) return false;
+
+ MongoDbUser that = (MongoDbUser) o;
+
+ if (this.getId() != null ? !this.getId().equals(that.getId()) :
that.getId() != null)
return false;
- }
- final User other = (User) obj;
- return !(this.getId().equals(other.getId()) && (this.getId() == null
|| !this.getId().equals(other.getId())));
+
+ return true;
}
@Override
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoModelOperations.java
Wed Oct 24 18:05:05 2012
@@ -36,7 +36,5 @@ public interface MongoModelOperations<T>
void remove(Query query);
int update(Query query, Update update);
<E> MapReduceResults<E> mapReduce(String mapFunction, String
reduceFunction, Class<E> entityClass);
- <E> MapReduceResults<E> mapReduce(String collection, String mapFunction,
String reduceFunction, Class<E> entityClass);
<E> MapReduceResults<E> mapReduce(Query query, String mapFunction, String
reduceFunction, Class<E> entityClass);
- <E> MapReduceResults<E> mapReduce(String collection, Query query, String
mapFunction, String reduceFunction, Class<E> entityClass);
}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbTagRepository.java
Wed Oct 24 18:05:05 2012
@@ -36,7 +36,7 @@ import org.springframework.stereotype.Re
import java.util.List;
@Repository
-public class MongoDbTagRepository implements TagRepository{
+public class MongoDbTagRepository implements TagRepository {
@Autowired
private MongoWidgetOperations widgetTemplate;
@@ -45,7 +45,7 @@ public class MongoDbTagRepository implem
public List<Tag> getAll() {
List<Widget> widgets = widgetTemplate.find(new Query());
List<Tag> tags = Lists.newArrayList();
- for(Widget widget : widgets) {
+ for (Widget widget : widgets) {
addUniqueTags(tags, widget);
}
return tags;
@@ -65,9 +65,10 @@ public class MongoDbTagRepository implem
@SuppressWarnings("unchecked")
public List<Tag> getAvailableTagsByWidgetId(Long widgetId) {
List<Tag> all = getAll();
- List<Tag> widgetTags=
getTagsFromWidget(widgetTemplate.get(widgetId).getTags());
+ List<Tag> widgetTags =
getTagsFromWidget(widgetTemplate.get(widgetId).getTags());
return ListUtils.subtract(all, widgetTags);
}
+
@Override
public Class<? extends Tag> getType() {
return Tag.class;
@@ -90,8 +91,10 @@ public class MongoDbTagRepository implem
private List<Tag> getTagsFromWidget(List<WidgetTag> widgetTags) {
List<Tag> tags = Lists.newArrayList();
- for(WidgetTag widgetTag : widgetTags) {
- tags.add(widgetTag.getTag());
+ if (widgetTags != null) {
+ for (WidgetTag widgetTag : widgetTags) {
+ tags.add(widgetTag.getTag());
+ }
}
return tags;
}
@@ -99,11 +102,11 @@ public class MongoDbTagRepository implem
private void addUniqueTags(List<Tag> tags, Widget widget) {
//returns if there are no tags for this widget to prevent null pointer
exception
- if(widget.getTags() == null) return;
+ if (widget.getTags() == null) return;
- for(WidgetTag widgetTag : widget.getTags()) {
+ for (WidgetTag widgetTag : widget.getTags()) {
Tag tag = widgetTag.getTag();
- if(!tags.contains(tag)) {
+ if (!tags.contains(tag)) {
tags.add(tag);
}
}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
Wed Oct 24 18:05:05 2012
@@ -19,7 +19,9 @@
package org.apache.rave.portal.repository.impl;
+import com.google.common.collect.Lists;
import org.apache.rave.portal.model.MongoDbUser;
+import org.apache.rave.portal.model.Page;
import org.apache.rave.portal.model.User;
import org.apache.rave.portal.repository.MongoUserOperations;
import org.apache.rave.portal.repository.UserRepository;
@@ -42,6 +44,9 @@ public class MongoDbUserRepository imple
@Autowired
private MongoUserOperations template;
+ @Autowired
+ private MongoPageTemplate pageTemplate;
+
@Override
public User getByUsername(String username) {
return template.findOne(query(where("username").is(username)));
@@ -80,7 +85,15 @@ public class MongoDbUserRepository imple
@Override
public List<User> getAllByAddedWidget(long widgetId) {
- return null; //TODO COMPLETE
+ Query q =
query(where("regions").elemMatch(where("regionWidgets").elemMatch(where("widgetId").is(widgetId))));
+ List<Page> pages = pageTemplate.find(q);
+ List<User> users = Lists.newArrayList();
+ for(Page p : pages) {
+ if(!users.contains(p.getOwner())){
+ users.add(p.getOwner());
+ }
+ }
+ return users;
}
@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=1401802&r1=1401801&r2=1401802&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 18:05:05 2012
@@ -20,8 +20,10 @@
package org.apache.rave.portal.repository.impl;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import org.apache.rave.portal.model.*;
import org.apache.rave.portal.model.util.WidgetStatistics;
+import org.apache.rave.portal.repository.MongoPageOperations;
import org.apache.rave.portal.repository.MongoWidgetOperations;
import org.apache.rave.portal.repository.WidgetRepository;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,7 @@ import org.springframework.stereotype.Re
import java.util.List;
import java.util.Map;
+import java.util.Set;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
@@ -49,9 +52,13 @@ public class MongoDbWidgetRepository imp
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 String PAGE_COLLECTION = "page";
+
@Autowired
private MongoWidgetOperations template;
+ @Autowired
+ private MongoPageOperations pageTemplate;
+
@Override
public List<Widget> getAll() {
return template.find(addSort(new Query()));
@@ -118,34 +125,52 @@ public class MongoDbWidgetRepository imp
@Override
public WidgetStatistics getWidgetStatistics(long widget_id, long user_id) {
- Query query = query(where("widgetId").is(widget_id).andOperator());
- MapReduceResults<WidgetRatingsMapReduceResult> widgetStats =
template.mapReduce(query, RATINGS_MAP, RATINGS_REDUCE,
WidgetRatingsMapReduceResult.class);
- MapReduceResults<WidgetUsersMapReduceResult> widgetUsers =
template.mapReduce(PAGE_COLLECTION, query, USERS_MAP, USERS_REDUCE,
WidgetUsersMapReduceResult.class);
-
- if (widgetStats.getCounts().getOutputCount() > 1 ||
widgetUsers.getCounts().getOutputCount() > 1) {
- throw new IllegalStateException("Invalid results returned from
Map/Reduce");
+ Query statsQuery = query(where("widgetId").is(widget_id));
+ MapReduceResults<WidgetRatingsMapReduceResult> widgetStats =
template.mapReduce(statsQuery, RATINGS_MAP, RATINGS_REDUCE,
WidgetRatingsMapReduceResult.class);
+ List<Page> pages =
pageTemplate.find(query(where("regions").elemMatch(where("regionWidgets").elemMatch(where("widgetId").is(widget_id)))));
+
+ int userCount = getUserCount(pages).size();
+ switch (widgetStats.getCounts().getOutputCount()) {
+ case 0:
+ WidgetStatistics stats = new WidgetStatistics();
+ stats.setTotalUserCount(userCount);
+ return stats;
+ case 1:
+ WidgetRatingsMapReduceResult statsResult =
widgetStats.iterator().next();
+ return createWidgetStatisticsFromResults(user_id, statsResult,
userCount);
+ default:
+ throw new IllegalStateException("Invalid results returned from
Map/Reduce");
}
- WidgetRatingsMapReduceResult statsResult =
widgetStats.iterator().next();
- WidgetUsersMapReduceResult userResult = widgetUsers.iterator().next();
-
- return createWidgetStatisticsFromResults(user_id, statsResult,
userResult.getUsers());
}
@Override
public Map<Long, WidgetStatistics> getAllWidgetStatistics(long userId) {
- //query argument ignores widgets
MapReduceResults<WidgetRatingsMapReduceResult> widgetStats =
template.mapReduce(RATINGS_MAP, RATINGS_REDUCE,
WidgetRatingsMapReduceResult.class);
- Map<Long, Long> usersMap = mapUsersResults(template.mapReduce("page",
USERS_MAP, USERS_REDUCE, WidgetUsersMapReduceResult.class));
+ MapReduceResults<WidgetUsersMapReduceResult> users =
pageTemplate.mapReduce(USERS_MAP, USERS_REDUCE,
WidgetUsersMapReduceResult.class);
Map<Long, WidgetStatistics> stats = Maps.newHashMap();
- for (WidgetRatingsMapReduceResult result : widgetStats) {
- stats.put(result.getWidgetId(),
createWidgetStatisticsFromResults(userId, result, usersMap.get(userId)));
+ if (widgetStats.getCounts().getOutputCount() >0) {
+ Map<Long, Integer> usersMap = mapUsersResults(users);
+ addCombinedStats(userId, widgetStats, usersMap, stats);
+ } else {
+ addUserCount(users, stats);
}
return stats;
}
@Override
public Map<Long, WidgetRating> getUsersWidgetRatings(long userId) {
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ 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)) {
+ ratings.put(widget.getId(), rating);
+ break;
+ }
+ }
+ }
+ return ratings;
}
@Override
@@ -184,16 +209,30 @@ public class MongoDbWidgetRepository imp
template.remove(new Query(where("_id").is(item.getId())));
}
+ private Map<Long, Integer>
mapUsersResults(MapReduceResults<WidgetUsersMapReduceResult>
widgetUsersMapReduceResults) {
+ Map<Long, Integer> map = Maps.newHashMap();
+ for(WidgetUsersMapReduceResult result : widgetUsersMapReduceResults) {
+ if(result.getId() != null) {
+ map.put(result.getId(), result.getValue().size());
+ }
+ }
+ return map;
+ }
+
private Query getWidgetStatusFreeTextQuery(WidgetStatus widgetStatus,
String type, String searchTerm) {
- return new
Query(where("widgetStatus").is(getWidgetStatusString(widgetStatus))
- .andOperator(where("type").is(type))
- .andOperator(getFreeTextClause(searchTerm))
- );
+ Criteria criteria = getFreeTextClause(searchTerm);
+ if(type != null) {
+ criteria.andOperator(where("type").is(type));
+ }
+ if(widgetStatus != null) {
+
criteria.andOperator(where("widgetStatus").is(getWidgetStatusString(widgetStatus)));
+ }
+ return query(criteria);
}
private Criteria getFreeTextClause(String searchTerm) {
- String regex = "/" + searchTerm + "/";
- return where("title").is(regex).orOperator(where("title").is(regex));
+ String regex = ".*" + searchTerm + ".*";
+ return
where("title").regex(regex).orOperator(where("title").is(regex));
}
private Query getQueryByOwner(User owner) {
@@ -204,25 +243,30 @@ public class MongoDbWidgetRepository imp
return
query(where("tags").elemMatch(where("tag.keyword").is(tagKeyWord)));
}
- private Map<Long, Long>
mapUsersResults(MapReduceResults<WidgetUsersMapReduceResult>
widgetUsersMapReduceResults) {
- Map<Long, Long> map = Maps.newHashMap();
- if (widgetUsersMapReduceResults != null) {
- for (WidgetUsersMapReduceResult result :
widgetUsersMapReduceResults) {
- map.put(result.getWidgetId(), result.getUsers());
- }
+ private void addUserCount(MapReduceResults<WidgetUsersMapReduceResult>
users, Map<Long, WidgetStatistics> stats) {
+ for(WidgetUsersMapReduceResult result : users) {
+ WidgetStatistics widgetStatistics = new WidgetStatistics();
+ widgetStatistics.setTotalUserCount(result.getValue().size());
+ widgetStatistics.setUserRating(-1);
+ stats.put(result.getId(), widgetStatistics);
+ }
+ }
+
+ private void addCombinedStats(long userId,
MapReduceResults<WidgetRatingsMapReduceResult> widgetStats, Map<Long, Integer>
usersMap, Map<Long, WidgetStatistics> stats) {
+ for (WidgetRatingsMapReduceResult result : widgetStats) {
+ stats.put(result.getId(),
createWidgetStatisticsFromResults(userId, result,
usersMap.get(result.getId())));
}
- return map;
}
- private WidgetStatistics createWidgetStatisticsFromResults(long user_id,
WidgetRatingsMapReduceResult statsResult, Long userResult) {
+ private WidgetStatistics createWidgetStatisticsFromResults(long user_id,
WidgetRatingsMapReduceResult statsResult, int userResult) {
WidgetStatistics statistics = new WidgetStatistics();
- WidgetRatingsMapReduceResult.WidgetStatisticsMapReduceResult result =
statsResult.getStatistics();
+ WidgetRatingsMapReduceResult.WidgetStatisticsMapReduceResult result =
statsResult.getValue();
if (result != null) {
statistics.setTotalDislike(result.getDislike().intValue());
statistics.setTotalLike(result.getLike().intValue());
statistics.setUserRating(result.getUserRatings().containsKey(user_id) ?
result.getUserRatings().get(user_id).intValue() : -1);
}
- statistics.setTotalUserCount(userResult == null ? 0 :
userResult.intValue());
+ statistics.setTotalUserCount(userResult);
return statistics;
}
@@ -235,45 +279,56 @@ public class MongoDbWidgetRepository imp
return query;
}
+ private Set<Long> getUserCount(List<Page> pages) {
+ Set<Long> set = Sets.newHashSet();
+ for(Page page : pages) {
+ Long id = page.getOwner().getId();
+ if(!set.contains(id)) {
+ set.add(id);
+ }
+ }
+ return set;
+ }
+
public static class WidgetUsersMapReduceResult {
- private Long widgetId;
- private Long users;
+ private Long id;
+ private Map<Long, Long> value;
- public Long getWidgetId() {
- return widgetId;
+ public Long getId() {
+ return id;
}
- public void setWidgetId(Long widgetId) {
- this.widgetId = widgetId;
+ public void setId(Long id) {
+ this.id = id;
}
- public Long getUsers() {
- return users;
+ public Map<Long, Long> getValue() {
+ return value;
}
- public void setUsers(Long users) {
- this.users = users;
+ public void setValue(Map<Long, Long> value) {
+ this.value = value;
}
}
public static class WidgetRatingsMapReduceResult {
- private Long widgetId;
- private WidgetStatisticsMapReduceResult statistics;
+ private Long id;
+ private WidgetStatisticsMapReduceResult value;
- public Long getWidgetId() {
- return widgetId;
+ public Long getId() {
+ return id;
}
- public void setWidgetId(Long widgetId) {
- this.widgetId = widgetId;
+ public void setId(Long id) {
+ this.id = id;
}
- public WidgetStatisticsMapReduceResult getStatistics() {
- return statistics;
+ public WidgetStatisticsMapReduceResult getValue() {
+ return value;
}
- public void setStatistics(WidgetStatisticsMapReduceResult statistics) {
- this.statistics = statistics;
+ public void setValue(WidgetStatisticsMapReduceResult value) {
+ this.value = value;
}
public static class WidgetStatisticsMapReduceResult {
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoModelTemplate.java
Wed Oct 24 18:05:05 2012
@@ -96,21 +96,11 @@ public class MongoModelTemplate<T, E ext
@Override
public <E> MapReduceResults<E> mapReduce(String mapFunction, String
reduceFunction, Class<E> entityClass) {
- return mapReduce(collection, mapFunction, reduceFunction, entityClass);
- }
-
- @Override
- public <E> MapReduceResults<E> mapReduce(String collection, String
mapFunction, String reduceFunction, Class<E> entityClass) {
- return mongoTemplate.mapReduce(collection, mapFunction, reduceFunction,
entityClass);
+ return mongoTemplate.mapReduce(collection, mapFunction,
reduceFunction, entityClass);
}
@Override
public <E> MapReduceResults<E> mapReduce(Query query, String mapFunction,
String reduceFunction, Class<E> entityClass) {
- return mapReduce(collection, query, mapFunction, reduceFunction,
entityClass);
- }
-
- @Override
- public <E> MapReduceResults<E> mapReduce(String collection, Query query,
String mapFunction, String reduceFunction, Class<E> entityClass) {
return mongoTemplate.mapReduce(query, collection, mapFunction,
reduceFunction, entityClass);
}
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=1401802&r1=1401801&r2=1401802&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
Wed Oct 24 18:05:05 2012
@@ -20,13 +20,13 @@ function () {
if (this.ratings) {
for (var i = 0; i < this.ratings.length; i++) {
var rating = this.ratings[i];
+ var userMap = {};
+ userMap[this.userId.floatApprox] = rating.score;
emit(this._id, {
- widgetId:this._id,
- statistics:{
like:rating.score == 10 ? 1 : 0,
dislike:rating.score == 0 ? 1 : 0,
- userRating:{ userId:this.userId, value:rating.score }
- }});
+ userRatings:userMap
+ });
}
}
}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsReduce.js
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsReduce.js?rev=1401802&r1=1401801&r2=1401802&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsReduce.js
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetRatingsReduce.js
Wed Oct 24 18:05:05 2012
@@ -18,19 +18,17 @@
*/
function(key, values) {
var result = {
- widgetId: key,
- statistics: {
like : 0,
dislike : 0,
userRatings : {}
- }};
- for(var i=0; i< values.length; i++) {
- result.statistics.totalLike += values[i].totalLike;
- result.statistics.totalDislike += values[i].totalDislike;
- for(var userRating in values[i].userRatings) {
- result.statistics.userRatings[userRating.userId] +=
userRating.value;
+ };
+ values.forEach(function(value) {
+ result.like += value.like;
+ result.dislike += value.dislike;
+ for(var userRating in value.userRatings) {
+ result.userRatings[userRating] += value.userRatings[userRating];
}
- }
+ });
return result;
}
Added:
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=1401802&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersMap.js
Wed Oct 24 18:05:05 2012
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+function () {
+ var widgetMap = {};
+ var self = this;
+
+ 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);
+ }
+ })
+ })
+ }
+ };
+
+ mapPage(this);
+ if(this.subPages) {
+ this.subPages.forEach(function(p){mapPage(p)})
+ }
+}
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersReduce.js
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersReduce.js?rev=1401802&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersReduce.js
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/resources/org/apache/rave/WidgetUsersReduce.js
Wed Oct 24 18:05:05 2012
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+function (key, values) {
+ var result={};
+ values.forEach(function(item){
+ for(var i in item) {
+ result[i] = item[i];
+ }
+ });
+ return result;
+}