Author: mfranklin
Date: Tue Oct 23 21:12:29 2012
New Revision: 1401484
URL: http://svn.apache.org/viewvc?rev=1401484&view=rev
Log:
fixed map/reduce issue with null ratings
Added:
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/PageLayoutImplConverter.java
Modified:
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/repository/MongoModelOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoWidgetOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.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/MongoDbTagRepository.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-portal-resources/src/main/resources/initial-data.json
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -90,7 +90,7 @@ public class MongoDbCategory extends Cat
@Override
public User getCreatedUser() {
User creator = super.getCreatedUser();
- if(creator == null && createdUserId != null) {
+ if(creator == null && createdUserId != null && userRepository != null)
{
creator = userRepository.get(createdUserId);
super.setCreatedUser(creator);
}
@@ -100,7 +100,7 @@ public class MongoDbCategory extends Cat
@Override
public User getLastModifiedUser() {
User lastModifier = super.getLastModifiedUser();
- if(lastModifier == null && lastModifiedUserId != null) {
+ if(lastModifier == null && lastModifiedUserId != null &&
userRepository != null) {
lastModifier = userRepository.get(lastModifiedUserId);
super.setLastModifiedUser(lastModifier);
}
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -59,14 +59,14 @@ public class MongoDbCategoryConverter im
@Override
public MongoDbCategory convert(Category source) {
MongoDbCategory category = source instanceof MongoDbCategory ?
((MongoDbCategory) source) : new MongoDbCategory();
+ category.setCreatedDate(source.getCreatedDate());
+ category.setCreatedUserId(source.getCreatedUser() ==null ? null :
source.getCreatedUser().getId());
+ category.setLastModifiedUserId(source.getLastModifiedUser() == null ?
null : source.getLastModifiedUser().getId());
+ category.setId(source.getId() == null ? generateId() : source.getId());
category.setWidgetRepository(null);
category.setUserRepository(null);
- category.setCreatedUserId(source.getCreatedUser().getId());
category.setCreatedUser(null);
- category.setLastModifiedUserId(source.getLastModifiedUser().getId());
category.setLastModifiedUser(null);
- category.setCreatedDate(source.getCreatedDate());
- category.setId(source.getId() == null ? generateId() : source.getId());
category.setText(source.getText());
ArrayList<Long> widgetIds = Lists.<Long>newArrayList();
category.setWidgetIds(widgetIds);
Added:
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/conversion/impl/MongoDbPageLayout.java?rev=1401484&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageLayout.java
Tue Oct 23 21:12:29 2012
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+package org.apache.rave.portal.model.conversion.impl;
+
+
+import org.apache.rave.portal.model.impl.PageLayoutImpl;
+
+public class MongoDbPageLayout extends PageLayoutImpl{
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof MongoDbPageLayout)) return false;
+ if (!super.equals(o)) return false;
+
+ MongoDbPageLayout that = (MongoDbPageLayout) o;
+
+ if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = super.hashCode();
+ result = 31 * result + (id != null ? id.hashCode() : 0);
+ return result;
+ }
+}
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -19,6 +19,7 @@
package org.apache.rave.portal.repository;
+import org.springframework.data.mongodb.core.mapreduce.MapReduceResults;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
@@ -34,4 +35,8 @@ public interface MongoModelOperations<T>
T save(T item);
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/MongoWidgetOperations.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoWidgetOperations.java?rev=1401484&r1=1401483&r2=1401484&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoWidgetOperations.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoWidgetOperations.java
Tue Oct 23 21:12:29 2012
@@ -20,10 +20,6 @@
package org.apache.rave.portal.repository;
import org.apache.rave.portal.model.Widget;
-import org.springframework.data.mongodb.core.mapreduce.MapReduceResults;
-import org.springframework.data.mongodb.core.query.Query;
public interface MongoWidgetOperations extends MongoModelOperations<Widget> {
- <T> MapReduceResults<T> mapReduce(String mapFunction, String
reduceFunction, Class<T> entityClass);
- <T> MapReduceResults<T> mapReduce(Query query, String mapFunction, String
reduceFunction, Class<T> entityClass);
}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java?rev=1401484&r1=1401483&r2=1401484&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java
Tue Oct 23 21:12:29 2012
@@ -83,7 +83,7 @@ public class MongoDbCategoryRepository i
@Override
public void delete(Category item) {
- template.remove(get(item.getId()));
+ template.remove(get(item.getId()), COLLECTION);
}
private Category hydrate(MongoDbCategory category) {
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -21,8 +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.HydratingConverterFactory;
-import org.apache.rave.portal.model.impl.PageLayoutImpl;
+import org.apache.rave.portal.model.conversion.impl.MongoDbPageLayout;
import org.apache.rave.portal.repository.PageLayoutRepository;
import org.apache.rave.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -32,38 +31,37 @@ import org.springframework.stereotype.Re
import java.util.List;
+import static org.apache.rave.portal.model.util.MongoDbModelUtil.generateId;
import static org.springframework.data.mongodb.core.query.Criteria.where;
@Repository
public class MongoDbPageLayoutRepository implements PageLayoutRepository {
public static final String COLLECTION = "pageLayout";
+ public static final Class<MongoDbPageLayout> CLASS =
MongoDbPageLayout.class;
@Autowired
private MongoOperations template;
- @Autowired
- private HydratingConverterFactory converter;
-
@Override
public PageLayout getByPageLayoutCode(String codename) {
- return template.findOne(new Query(where("code").is(codename)),
PageLayoutImpl.class, COLLECTION);
+ return template.findOne(new Query(where("code").is(codename)), CLASS,
COLLECTION);
}
@Override
public List<PageLayout> getAll() {
- return
CollectionUtils.<PageLayout>toBaseTypedList(template.findAll(PageLayoutImpl.class,
COLLECTION));
+ return
CollectionUtils.<PageLayout>toBaseTypedList(template.findAll(CLASS,
COLLECTION));
}
@Override
public List<PageLayout> getAllUserSelectable() {
- List<PageLayoutImpl> userSelectable = template.find(new
Query(where("userSelectable").is(true)), PageLayoutImpl.class, COLLECTION);
+ List<MongoDbPageLayout> userSelectable = template.find(new
Query(where("userSelectable").is(true)), CLASS, COLLECTION);
return CollectionUtils.<PageLayout>toBaseTypedList(userSelectable);
}
@Override
public Class<? extends PageLayout> getType() {
- return PageLayoutImpl.class;
+ return CLASS;
}
@Override
@@ -73,12 +71,25 @@ public class MongoDbPageLayoutRepository
@Override
public PageLayout save(PageLayout item) {
- template.save(converter.convert(item, PageLayout.class), COLLECTION);
- return item;
+ MongoDbPageLayout toSave =
(MongoDbPageLayout)getByPageLayoutCode(item.getCode());
+ if(toSave == null) {
+ toSave = new MongoDbPageLayout();
+ toSave.setId(generateId());
+ }
+ update(item, toSave);
+ template.save(toSave, COLLECTION);
+ return toSave;
}
@Override
public void delete(PageLayout item) {
template.remove(getByPageLayoutCode(item.getCode()));
}
+
+ private void update(PageLayout source, PageLayout converted) {
+ converted.setCode(source.getCode());
+ converted.setNumberOfRegions(source.getNumberOfRegions());
+ converted.setRenderSequence(source.getRenderSequence());
+ converted.setUserSelectable(source.isUserSelectable());
+ }
}
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -98,6 +98,9 @@ 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;
+
for(WidgetTag widgetTag : widget.getTags()) {
Tag tag = widgetTag.getTag();
if(!tags.contains(tag)) {
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -43,11 +43,12 @@ import static org.springframework.data.m
*/
@Repository
public class MongoDbWidgetRepository implements WidgetRepository {
-
- public static final String RATINGS_MAP = "classpath*:WidgetRatingsMap.js";
- public static final String RATINGS_REDUCE =
"classpath*:WidgetRatingsReduce.js";
- public static final String USERS_MAP = "classpath*:WidgetUsersMap.js";
- public static final String USERS_REDUCE =
"classpath*:WidgetUsersReduce.js";
+ ///org/apache/rave/WidgetRatingsMap.js
+ 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";
+ public static final String USERS_REDUCE =
"classpath:/org/apache/rave/WidgetUsersReduce.js";
+ public static final String PAGE_COLLECTION = "page";
@Autowired
private MongoWidgetOperations template;
@@ -63,7 +64,7 @@ public class MongoDbWidgetRepository imp
@Override
public int getCountAll() {
- return (int)template.count(new Query());
+ return (int) template.count(new Query());
}
@Override
@@ -74,18 +75,18 @@ public class MongoDbWidgetRepository imp
@Override
public int getCountFreeTextSearch(String searchTerm) {
- return (int)template.count(new Query(getFreeTextClause(searchTerm)));
+ return (int) template.count(new Query(getFreeTextClause(searchTerm)));
}
@Override
public List<Widget> getByStatus(WidgetStatus widgetStatus, int offset, int
pageSize) {
- Query query = new
Query(where("widgetStatus").is(widgetStatus)).skip(offset).limit(pageSize);
+ Query query = new
Query(where("widgetStatus").is(getWidgetStatusString(widgetStatus))).skip(offset).limit(pageSize);
return template.find(addSort(query));
}
@Override
public int getCountByStatus(WidgetStatus widgetStatus) {
- return (int)template.count(new
Query(where("widgetStatus").is(widgetStatus)));
+ return (int) template.count(new
Query(where("widgetStatus").is(getWidgetStatusString(widgetStatus))));
}
@Override
@@ -96,7 +97,7 @@ public class MongoDbWidgetRepository imp
@Override
public int getCountByStatusAndTypeAndFreeText(WidgetStatus widgetStatus,
String type, String searchTerm) {
- return (int)template.count(getWidgetStatusFreeTextQuery(widgetStatus,
type, searchTerm));
+ return (int) template.count(getWidgetStatusFreeTextQuery(widgetStatus,
type, searchTerm));
}
@Override
@@ -107,7 +108,7 @@ public class MongoDbWidgetRepository imp
@Override
public int getCountByOwner(User owner, int offset, int pageSize) {
- return (int)template.count(getQueryByOwner(owner));
+ return (int) template.count(getQueryByOwner(owner));
}
@Override
@@ -117,10 +118,11 @@ public class MongoDbWidgetRepository imp
@Override
public WidgetStatistics getWidgetStatistics(long widget_id, long user_id) {
- Query query = query(where("widgetId").is(widget_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(query, USERS_MAP, USERS_REDUCE,
WidgetUsersMapReduceResult.class);
- if(widgetStats.getCounts().getOutputCount() != 1 ||
widgetUsers.getCounts().getOutputCount() != 1) {
+ 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");
}
WidgetRatingsMapReduceResult statsResult =
widgetStats.iterator().next();
@@ -131,23 +133,16 @@ public class MongoDbWidgetRepository imp
@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(USERS_MAP, USERS_REDUCE,
WidgetUsersMapReduceResult.class));
+ Map<Long, Long> usersMap = mapUsersResults(template.mapReduce("page",
USERS_MAP, USERS_REDUCE, WidgetUsersMapReduceResult.class));
Map<Long, WidgetStatistics> stats = Maps.newHashMap();
- for(WidgetRatingsMapReduceResult result : widgetStats) {
+ for (WidgetRatingsMapReduceResult result : widgetStats) {
stats.put(result.getWidgetId(),
createWidgetStatisticsFromResults(userId, result, usersMap.get(userId)));
}
return stats;
}
- private Map<Long, Long>
mapUsersResults(MapReduceResults<WidgetUsersMapReduceResult>
widgetUsersMapReduceResults) {
- Map<Long, Long> map = Maps.newHashMap();
- for(WidgetUsersMapReduceResult result : widgetUsersMapReduceResults) {
- map.put(result.getWidgetId(), result.getUsers());
- }
- return map;
- }
-
@Override
public Map<Long, WidgetRating> getUsersWidgetRatings(long userId) {
return null; //To change body of implemented methods use File |
Settings | File Templates.
@@ -160,7 +155,7 @@ public class MongoDbWidgetRepository imp
@Override
public int getCountByTag(String tagKeyword) {
- return (int)template.count(getTagQuery(tagKeyword));
+ return (int) template.count(getTagQuery(tagKeyword));
}
@Override
@@ -190,7 +185,7 @@ public class MongoDbWidgetRepository imp
}
private Query getWidgetStatusFreeTextQuery(WidgetStatus widgetStatus,
String type, String searchTerm) {
- return new Query(where("widgetStatus").is(widgetStatus)
+ return new
Query(where("widgetStatus").is(getWidgetStatusString(widgetStatus))
.andOperator(where("type").is(type))
.andOperator(getFreeTextClause(searchTerm))
);
@@ -209,15 +204,32 @@ 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());
+ }
+ }
+ return map;
+ }
+
private WidgetStatistics createWidgetStatisticsFromResults(long user_id,
WidgetRatingsMapReduceResult statsResult, Long userResult) {
WidgetStatistics statistics = new WidgetStatistics();
-
statistics.setTotalDislike(statsResult.getStatistics().getDislike().intValue());
-
statistics.setTotalLike(statsResult.getStatistics().getLike().intValue());
-
statistics.setUserRating(statsResult.getStatistics().getUserRatings().containsKey(user_id)
? statsResult.getStatistics().getUserRatings().get(user_id).intValue() : -1);
+ WidgetRatingsMapReduceResult.WidgetStatisticsMapReduceResult result =
statsResult.getStatistics();
+ 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());
return statistics;
}
+ private String getWidgetStatusString(WidgetStatus widgetStatus) {
+ return widgetStatus.getWidgetStatus().toUpperCase();
+ }
+
private Query addSort(Query query) {
query.sort().on("title", Order.ASCENDING);
return query;
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -25,6 +25,7 @@ import org.apache.rave.portal.repository
import org.apache.rave.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.mapreduce.MapReduceResults;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
@@ -93,6 +94,26 @@ public class MongoModelTemplate<T, E ext
return result.getN();
}
+ @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);
+ }
+
+ @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);
+ }
+
private List<T> hydrate(List<E> mongoDbTs) {
for(E p : mongoDbTs) {
hydrate(p);
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=1401484&r1=1401483&r2=1401484&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
Tue Oct 23 21:12:29 2012
@@ -16,15 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-function() {
- for(var i=0; i<this.ratings.length; i++) {
- var rating = this.ratings[i];
- 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 }
- }});
+function () {
+ if (this.ratings) {
+ for (var i = 0; i < this.ratings.length; i++) {
+ var rating = this.ratings[i];
+ 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 }
+ }});
+ }
}
}
Modified:
rave/branches/mongo/rave-portal-resources/src/main/resources/initial-data.json
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-portal-resources/src/main/resources/initial-data.json?rev=1401484&r1=1401483&r2=1401484&view=diff
==============================================================================
---
rave/branches/mongo/rave-portal-resources/src/main/resources/initial-data.json
(original)
+++
rave/branches/mongo/rave-portal-resources/src/main/resources/initial-data.json
Tue Oct 23 21:12:29 2012
@@ -912,7 +912,7 @@
"description": "A Wikipedia Search and Go widget. Language choice.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 2,
@@ -925,7 +925,7 @@
"description": "Google Translation gadget.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 3,
@@ -934,7 +934,7 @@
"type": "OpenSocial",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 4,
@@ -943,7 +943,7 @@
"type": "OpenSocial",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 5,
@@ -952,7 +952,7 @@
"type": "OpenSocial",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 6,
@@ -963,7 +963,7 @@
"description": "A cute little hamster for you to feed and look after.
Watch him follow your cursor around. Click on the more tab to treat him to a
strawberry. Click him then put him on the wheel and watch him play! ***NEW:
make Herbie hamster your very own!",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 7,
@@ -974,7 +974,7 @@
"description": "This is a gadget developed for Teragrid - OGCE
project. Used Google gadgets API to retrieve the information from the
Information Services REST Web Service and display the information using Google
Maps API. This is a list of available CTSS resources and its details",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 8,
@@ -985,7 +985,7 @@
"description": "Fully functional, lightweight, AJAX-based twitter user
interface with many configuration options including user specified auto-refresh
rate, full timeline, pagination, and more. Control display elements such as
user thumbnails, date stamps, and post source. Specify gadget size based on
availble screen footprint, even incorporate into your Gmail account. Insert
symbols, dingbats and emoticons into your tweets using the TwitterGadget
Symbols pulldown menu.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 9,
@@ -996,7 +996,7 @@
"description": "A search module, which searches YouTube by tags like
Politics News Life Music Family Photography Art Random Travel Personal Religion
Movies Business Thoughts Media Humor Culture Poetry Christmas Writing Books
Food Friends.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 10,
@@ -1007,7 +1007,7 @@
"description": "A demo gadget to show open views popups in action.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 11,
@@ -1016,7 +1016,7 @@
"type": "OpenSocial",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 12,
@@ -1027,7 +1027,7 @@
"description": "An example gadget which demos some of the different
capabilities of user preferences.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 13,
@@ -1038,7 +1038,7 @@
"description": "Static widget of activities for demoing on the Person
Profile page",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 14,
@@ -1049,7 +1049,7 @@
"description": "Static widget of a schedule for demoing on the Person
Profile page",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 15,
@@ -1060,7 +1060,7 @@
"description": "Static widget of favorite websites for demoing on the
Person Profile page",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 16,
@@ -1071,7 +1071,7 @@
"description": "Static widget of groups for demoing on the Person
Profile page",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 17,
@@ -1082,7 +1082,7 @@
"description": "Static widget of experience for demoing on the Person
Profile page",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 18,
@@ -1093,7 +1093,7 @@
"description": "Sample Activity Streams gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 19,
@@ -1104,7 +1104,7 @@
"description": "Sample Embedded Experience gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 20,
@@ -1115,7 +1115,7 @@
"description": "Sample Embedded Experience gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 21,
@@ -1126,7 +1126,7 @@
"description": "Sample Facebook gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 22,
@@ -1137,7 +1137,7 @@
"description": "Ohloh is an open source network that connects people
through the software they create and use. Ohloh gadgets provide detailed
statistics about open source software projects and developers.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 23,
@@ -1148,7 +1148,7 @@
"description": "Ohloh is an open source network that connects people
through the software they create and use. Ohloh gadgets provide detailed
statistics about open source software projects and developers.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 24,
@@ -1159,7 +1159,7 @@
"description": "Ohloh is an open source network that connects people
through the software they create and use. Ohloh gadgets provide detailed
statistics about open source software projects and developers.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 25,
@@ -1170,7 +1170,7 @@
"description": "Ohloh is an open source network that connects people
through the software they create and use. Ohloh gadgets provide detailed
statistics about open source software projects and developers.",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 26,
@@ -1181,7 +1181,7 @@
"description": "OpenAJAX Hub publisher gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 27,
@@ -1192,7 +1192,7 @@
"description": "OpenAJAX Hub subscriber gadget from Shindig",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
},
{
"id" : 28,
@@ -1203,7 +1203,7 @@
"description": "This gadget display the list of friends for a
particular user",
"disableRendering": false,
"featured": false,
- "status": "PUBLISHED"
+ "widgetStatus": "PUBLISHED"
}
],
"authorities": [