Author: mfranklin
Date: Wed Feb 27 23:26:28 2013
New Revision: 1451031

URL: http://svn.apache.org/r1451031
Log:
Added MongoDB impl for Activities RAVE-880

Added:
    
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
Modified:
    
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
    
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
    
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java

Modified: 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 (original)
+++ 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
 Wed Feb 27 23:26:28 2013
@@ -22,8 +22,10 @@ package org.apache.rave.portal.model.con
 import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.MongoDbPersonAssociation;
 import org.apache.rave.portal.model.MongoDbUser;
+import org.apache.rave.portal.model.PersonProperty;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.model.impl.PersonPropertyImpl;
 import org.apache.rave.portal.repository.PageLayoutRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
@@ -92,7 +94,7 @@ public class MongoDbUserConverter implem
         converted.setStatus(source.getStatus());
         converted.setAddresses(source.getAddresses());
         converted.setOrganizations(source.getOrganizations());
-        converted.setProperties(source.getProperties());
+        converted.setProperties(convert(source.getProperties()));
         converted.setPassword(source.getPassword());
         converted.setConfirmPassword(source.getConfirmPassword());
         converted.setDefaultPageLayoutCode(getPageLayoutCode(source));
@@ -105,6 +107,27 @@ public class MongoDbUserConverter implem
         converted.setPageLayoutRepository(null);
     }
 
+    private List<PersonProperty> convert(List<PersonProperty> sources) {
+        if(sources != null) {
+            List<PersonProperty> converted = Lists.newArrayList();
+            for(PersonProperty source : sources) {
+                converted.add(convert(source));
+            }
+            return converted;
+        }
+        return null;
+    }
+
+    private PersonProperty convert(PersonProperty source) {
+        PersonProperty converted = new PersonPropertyImpl();
+        converted.setType(source.getType());
+        converted.setValue(source.getValue());
+        converted.setExtendedValue(source.getExtendedValue());
+        converted.setQualifier(source.getQualifier());
+        converted.setPrimary(source.getPrimary());
+        return converted;
+    }
+
     private String getPageLayoutCode(User source) {
         String code = null;
         if (source.getDefaultPageLayout() == null) {

Modified: 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
 (original)
+++ 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepository.java
 Wed Feb 27 23:26:28 2013
@@ -19,50 +19,71 @@
 
 package org.apache.rave.portal.repository.impl;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.rave.portal.model.ActivityStreamsEntry;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
 import org.apache.rave.portal.repository.ActivityStreamsRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
+import static 
org.apache.rave.portal.repository.util.CollectionNames.ACTIVITIES;
+import static org.apache.rave.util.CollectionUtils.toBaseTypedList;
+import static org.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
 /**
  *  Placeholder repository
  */
 @Repository
 public class MongoDbActivityStreamsRepository implements 
ActivityStreamsRepository {
+    private static final Class<? extends ActivityStreamsEntry> CLASS = 
ActivityStreamsEntryImpl.class;
+
+    private final MongoOperations template;
+    private final HydratingConverterFactory converter;
+
+    @Autowired
+    public MongoDbActivityStreamsRepository(MongoOperations template, 
HydratingConverterFactory converter) {
+        this.template = template;
+        this.converter = converter;
+    }
+
     @Override
     public List<ActivityStreamsEntry> getAll() {
-        throw new NotImplementedException();
+        return toBaseTypedList(template.findAll(CLASS, ACTIVITIES));
     }
 
     @Override
     public List<ActivityStreamsEntry> getByUserId(String id) {
-        throw new NotImplementedException();
+        return 
toBaseTypedList(template.find(query(where("actor._id").is(id)),CLASS, 
ACTIVITIES));
     }
 
     @Override
     public void deleteById(String id) {
-        throw new NotImplementedException();
+        template.remove(query(where("_id").is(id)), ACTIVITIES);
     }
 
     @Override
     public Class<? extends ActivityStreamsEntry> getType() {
-        return ActivityStreamsEntry.class;
+        return CLASS;
     }
 
     @Override
     public ActivityStreamsEntry get(String id) {
-        throw new NotImplementedException();
+        return template.findById(id, CLASS, ACTIVITIES);
     }
 
     @Override
     public ActivityStreamsEntry save(ActivityStreamsEntry item) {
-        throw new NotImplementedException();
+        ActivityStreamsEntryImpl converted = converter.convert(item, 
ActivityStreamsEntry.class);
+        template.save(converted, ACTIVITIES);
+        return converted;
     }
 
     @Override
     public void delete(ActivityStreamsEntry item) {
-        throw new NotImplementedException();
+        if(item != null) deleteById(item.getId());
     }
 }

Modified: 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java?rev=1451031&r1=1451030&r2=1451031&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
 (original)
+++ 
rave/trunk/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/util/CollectionNames.java
 Wed Feb 27 23:26:28 2013
@@ -39,4 +39,5 @@ public class CollectionNames {
     public static final String WIDGET_RATINGS = "rating_statistics";
     public static final String WIDGET_USERS = "user_statistics";
     public static final String OPERATIONS = "ops";
+    public static final String ACTIVITIES = "activities";
 }

Added: 
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java?rev=1451031&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
 (added)
+++ 
rave/trunk/rave-components/rave-mongodb/src/test/java/org/apache/rave/portal/repository/impl/MongoDbActivityStreamsRepositoryTest.java
 Wed Feb 27 23:26:28 2013
@@ -0,0 +1,127 @@
+/*
+ * 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 com.google.common.collect.Lists;
+import org.apache.rave.portal.model.ActivityStreamsEntry;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.model.impl.ActivityStreamsEntryImpl;
+import org.apache.rave.portal.repository.ActivityStreamsRepository;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+import static 
org.apache.rave.portal.repository.util.CollectionNames.ACTIVITIES;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.sameInstance;
+import static org.junit.Assert.assertThat;
+
+public class MongoDbActivityStreamsRepositoryTest {
+    public static final String ID = "1";
+    private MongoOperations template;
+    private HydratingConverterFactory factory;
+    private ActivityStreamsRepository repository;
+
+    @Before
+    public void setup() {
+        factory = createMock(HydratingConverterFactory.class);
+        template = createMock(MongoOperations.class);
+        repository = new MongoDbActivityStreamsRepository(template, factory);
+    }
+
+    @Test
+    public void getAll() {
+        List<ActivityStreamsEntryImpl> result = Lists.newArrayList();
+        expect(template.findAll(eq(ActivityStreamsEntryImpl.class), 
eq(ACTIVITIES))).andReturn(result);
+        replay(template);
+
+        List<ActivityStreamsEntry> entries = repository.getAll();
+        assertThat((Object)entries, is(sameInstance((Object)result)));
+    }
+
+    @Test
+    public void getByUserId() {
+        List<ActivityStreamsEntryImpl> result = Lists.newArrayList();
+        expect(template.find(Query.query(Criteria.where("actor._id").is(ID)), 
ActivityStreamsEntryImpl.class, ACTIVITIES)).andReturn(result);
+        replay(template);
+
+        List<ActivityStreamsEntry> entries = repository.getByUserId(ID);
+        assertThat((Object)entries, is(sameInstance((Object)result)));
+    }
+
+    @Test
+    public void deleteByUserId() {
+        template.remove(Query.query(Criteria.where("_id").is(ID)), ACTIVITIES);
+        expectLastCall();
+        replay(template);
+
+        repository.deleteById(ID);
+        verify(template);
+    }
+
+    @Test
+    public void delete() {
+        ActivityStreamsEntryImpl entry = new ActivityStreamsEntryImpl();
+        entry.setId(ID);
+        template.remove(Query.query(Criteria.where("_id").is(ID)), ACTIVITIES);
+        expectLastCall();
+        replay(template);
+        repository.delete(entry);
+        verify(template);
+    }
+
+    @Test
+    public void delete_null() {
+        replay(template);
+        repository.delete(null);
+        verify(template);
+    }
+
+    @Test
+    public void getById() {
+        ActivityStreamsEntryImpl entry = new ActivityStreamsEntryImpl();
+        entry.setId(ID);
+        expect(template.findById(ID, ActivityStreamsEntryImpl.class, 
ACTIVITIES)).andReturn(entry);
+        replay(template);
+
+        ActivityStreamsEntry result = repository.get(ID);
+        assertThat(result, is(sameInstance((ActivityStreamsEntry)entry)));
+    }
+
+    @Test
+    public void save() {
+        ActivityStreamsEntry original = new ActivityStreamsEntryImpl();
+        ActivityStreamsEntry converted = new ActivityStreamsEntryImpl();
+        expect(factory.convert(original, 
ActivityStreamsEntry.class)).andReturn(converted);
+        template.save(converted, ACTIVITIES);
+        expectLastCall();
+        replay(factory, template);
+
+        ActivityStreamsEntry result = repository.save(original);
+        assertThat(result, is(sameInstance(converted)));
+        verify(factory, template);
+    }
+}


Reply via email to