Author: mfranklin
Date: Tue Oct 16 19:14:29 2012
New Revision: 1398933
URL: http://svn.apache.org/viewvc?rev=1398933&view=rev
Log:
Added widget rating repository
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRatingRepository.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetCommentRepository.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetCommentRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetCommentRepository.java?rev=1398933&r1=1398932&r2=1398933&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetCommentRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetCommentRepository.java
Tue Oct 16 19:14:29 2012
@@ -105,7 +105,6 @@ public class MongoDbWidgetCommentReposit
private int updateWidget(Long userId, Widget widget) {
int count = 0;
- boolean updated =false;
Iterator<WidgetComment> iterator = widget.getComments().iterator();
while(iterator.hasNext()) {
@@ -113,10 +112,9 @@ public class MongoDbWidgetCommentReposit
if(comment.getUser().getId().equals(userId)) {
iterator.remove();
count++;
- updated = true;
}
}
- if(updated) {
+ if(count > 0) {
template.save(widget);
}
return count;
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRatingRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRatingRepository.java?rev=1398933&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRatingRepository.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRatingRepository.java
Tue Oct 16 19:14:29 2012
@@ -0,0 +1,150 @@
+/*
+ * 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.repository.impl;
+
+import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.model.WidgetRating;
+import org.apache.rave.portal.repository.MongoModelOperations;
+import org.apache.rave.portal.repository.WidgetRatingRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Iterator;
+import java.util.List;
+
+import static org.apache.rave.portal.model.util.MongoDbModelUtil.generateId;
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
+public class MongoDbWidgetRatingRepository implements WidgetRatingRepository {
+
+ @Autowired
+ private MongoModelOperations.MongoWidgetOperations template;
+
+ @Override
+ public WidgetRating getByWidgetIdAndUserId(Long widgetId, Long userId) {
+ Widget widget = template.get(widgetId);
+ return getRatingByUserId(widget, userId);
+ }
+
+ @Override
+ public int deleteAll(Long userId) {
+ int count = 0;
+ List<Widget> widgets =
template.find(query(where("ratings").elemMatch(where("userId").is(userId))));
+ for (Widget widget : widgets) {
+ count += updateWidgetRating(userId, widget);
+ }
+ return count;
+ }
+
+ @Override
+ public Class<? extends WidgetRating> getType() {
+ return WidgetRating.class;
+ }
+
+ @Override
+ public WidgetRating get(long id) {
+ Widget widget =
template.findOne(query(where("ratings").elemMatch(where("_id").is(id))));
+ return getWidgetRatingById(widget, id);
+ }
+
+ @Override
+ public WidgetRating save(WidgetRating item) {
+ Widget widget = template.get(item.getWidgetId());
+ if (item.getId() == null) {
+ item.setId(generateId());
+ widget.getRatings().add(item);
+ } else {
+ updateRating(widget, item);
+ }
+ Widget saved = template.save(widget);
+ return getRatingById(saved, item.getId());
+ }
+
+ @Override
+ public void delete(WidgetRating item) {
+ Widget widget = template.get(item.getWidgetId());
+ removeRating(item.getId(), widget);
+ template.save(widget);
+ }
+
+ private void removeRating(Long commentId, Widget widget) {
+ Iterator<WidgetRating> iterator = widget.getRatings().iterator();
+ while(iterator.hasNext()) {
+ WidgetRating comment = iterator.next();
+ if(comment.getId().equals(commentId)) {
+ iterator.remove();
+ return;
+ }
+ }
+ }
+
+ private void updateRating(Widget widget, WidgetRating item) {
+ for(WidgetRating rating : widget.getRatings()) {
+ if(rating.getId().equals(item.getId())) {
+ rating.setUserId(item.getUserId());
+ rating.setScore(item.getScore());
+ return;
+ }
+ }
+ }
+
+ private WidgetRating getWidgetRatingById(Widget widget, long id) {
+ for (WidgetRating rating : widget.getRatings()) {
+ if (rating.getId().equals(id)) {
+ return rating;
+ }
+ }
+ return null;
+ }
+
+ private WidgetRating getRatingById(Widget widget, long id) {
+ for (WidgetRating rating : widget.getRatings()) {
+ if (rating.getId().equals(id)) {
+ return rating;
+ }
+ }
+ return null;
+ }
+
+ private int updateWidgetRating(Long userId, Widget widget) {
+ int count = 0;
+ Iterator<WidgetRating> iterator = widget.getRatings().iterator();
+ while (iterator.hasNext()) {
+ WidgetRating rating = iterator.next();
+ if (rating.getUserId().equals(userId)) {
+ iterator.remove();
+ count++;
+ }
+ }
+ if (count > 0) {
+ template.save(widget);
+ }
+ return count;
+ }
+
+ private WidgetRating getRatingByUserId(Widget widget, Long userId) {
+ for (WidgetRating rating : widget.getRatings()) {
+ if (rating.getUserId().equals(userId)) {
+ return rating;
+ }
+ }
+ return null;
+ }
+}