Author: mfranklin
Date: Wed Oct 17 01:38:51 2012
New Revision: 1399070

URL: http://svn.apache.org/viewvc?rev=1399070&view=rev
Log:
Completed CategoryRepository

Added:
    
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
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/model/conversion/impl/MongoDbUserConverter.java
    
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbCategoryRepository.java

Added: 
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=1399070&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/MongoDbCategory.java
 Wed Oct 17 01:38:51 2012
@@ -0,0 +1,118 @@
+/*
+ * 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;
+
+import com.google.common.collect.Lists;
+import org.apache.rave.portal.model.impl.CategoryImpl;
+import org.apache.rave.portal.repository.UserRepository;
+import org.apache.rave.portal.repository.WidgetRepository;
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
+import java.util.List;
+
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class MongoDbCategory extends CategoryImpl {
+
+    @XmlTransient @JsonIgnore
+    private UserRepository userRepository;
+
+    @XmlTransient @JsonIgnore
+    private WidgetRepository widgetTagRepository;
+
+    private Long lastModifiedUserId;
+    private Long createdUserId;
+
+    private List<Long> widgetIds;
+
+    public UserRepository getUserRepository() {
+        return userRepository;
+    }
+
+    public void setUserRepository(UserRepository userRepository) {
+        this.userRepository = userRepository;
+    }
+
+    public WidgetRepository getWidgetTagRepository() {
+        return widgetTagRepository;
+    }
+
+    public void setWidgetTagRepository(WidgetRepository widgetTagRepository) {
+        this.widgetTagRepository = widgetTagRepository;
+    }
+
+    public List<Long> getWidgetIds() {
+        return widgetIds;
+    }
+
+    public void setWidgetIds(List<Long> widgetIds) {
+        this.widgetIds = widgetIds;
+    }
+
+    public Long getLastModifiedUserId() {
+        return lastModifiedUserId;
+    }
+
+    public void setLastModifiedUserId(Long lastModifiedUserId) {
+        this.lastModifiedUserId = lastModifiedUserId;
+    }
+
+    public Long getCreatedUserId() {
+        return createdUserId;
+    }
+
+    public void setCreatedUserId(Long createdUserId) {
+        this.createdUserId = createdUserId;
+    }
+
+    @Override
+    public User getCreatedUser() {
+        User creator = super.getCreatedUser();
+        if(creator == null) {
+            creator = userRepository.get(createdUserId);
+            super.setCreatedUser(creator);
+        }
+        return creator;
+    }
+
+    @Override
+    public User getLastModifiedUser() {
+        User lastModifier = super.getLastModifiedUser();
+        if(lastModifier == null) {
+            lastModifier = userRepository.get(lastModifiedUserId);
+            super.setLastModifiedUser(lastModifier);
+        }
+        return lastModifier;
+    }
+
+    @Override
+    public List<Widget> getWidgets() {
+        List<Widget> widgets =  super.getWidgets();
+        if(widgets == null) {
+            widgets = Lists.newArrayList();
+            for(Long widgetId : widgetIds) {
+                widgets.add(widgetTagRepository.get(widgetId));
+            }
+        }
+        return widgets;
+    }
+}

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=1399070&r1=1399069&r2=1399070&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 17 01:38:51 2012
@@ -21,19 +21,28 @@ package org.apache.rave.portal.model;
 
 import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.impl.UserImpl;
+import org.apache.rave.portal.repository.PageLayoutRepository;
+import org.codehaus.jackson.annotate.JsonIgnore;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
 import java.util.Collection;
 import java.util.List;
 
 /**
  */
+@XmlAccessorType(value = XmlAccessType.FIELD)
 public class MongoDbUser extends UserImpl {
 
     private List<String> authorityCodes;
     private List<MongoDbPersonAssociation> friends;
 
+    @XmlTransient @JsonIgnore
+    private PageLayoutRepository pageLayoutRepository;
+
     public MongoDbUser(long id) {
         super(id);
     }
@@ -67,4 +76,18 @@ public class MongoDbUser extends UserImp
         }
         return grantedAuthorities;
     }
+
+    @Override
+    public PageLayout getDefaultPageLayout() {
+        PageLayout layout = super.getDefaultPageLayout();
+        if(layout == null) {
+            layout = 
pageLayoutRepository.getByPageLayoutCode(super.getDefaultPageLayoutCode());
+            super.setDefaultPageLayout(layout);
+        }
+        return layout;
+    }
+
+    public void setPageLayoutRepository(PageLayoutRepository 
pageLayoutRepository) {
+        this.pageLayoutRepository = pageLayoutRepository;
+    }
 }

Added: 
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=1399070&view=auto
==============================================================================
--- 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 (added)
+++ 
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbCategoryConverter.java
 Wed Oct 17 01:38:51 2012
@@ -0,0 +1,74 @@
+/*
+ * 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 com.google.common.collect.Lists;
+import org.apache.rave.portal.model.Category;
+import org.apache.rave.portal.model.MongoDbCategory;
+import org.apache.rave.portal.model.Widget;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.repository.UserRepository;
+import org.apache.rave.portal.repository.WidgetRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+
+import static org.apache.rave.portal.model.util.MongoDbModelUtil.generateId;
+
+@Component
+public class MongoDbCategoryConverter implements 
HydratingModelConverter<Category, MongoDbCategory> {
+
+    @Autowired
+    private UserRepository userRepository;
+
+    @Autowired
+    private WidgetRepository widgetRepository;
+
+    @Override
+    public void hydrate(MongoDbCategory dehydrated) {
+        dehydrated.setUserRepository(userRepository);
+        dehydrated.setWidgetTagRepository(widgetRepository);
+    }
+
+    @Override
+    public Class<Category> getSourceType() {
+        return Category.class;
+    }
+
+    @Override
+    public MongoDbCategory convert(Category source) {
+        MongoDbCategory category = source instanceof MongoDbCategory ? 
((MongoDbCategory)source) : new MongoDbCategory();
+        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);
+        for(Widget widget : source.getWidgets()) {
+            widgetIds.add(widget.getId());
+        }
+        category.setWidgets(null);
+        return category;
+    }
+}

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=1399070&r1=1399069&r2=1399070&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
 Wed Oct 17 01:38:51 2012
@@ -23,6 +23,8 @@ import com.google.common.collect.Lists;
 import org.apache.rave.portal.model.MongoDbUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.model.conversion.HydratingModelConverter;
+import org.apache.rave.portal.repository.PageLayoutRepository;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.stereotype.Component;
 
@@ -32,9 +34,12 @@ import static org.apache.rave.portal.mod
 
 @Component
 public class MongoDbUserConverter implements HydratingModelConverter<User, 
MongoDbUser> {
+    @Autowired
+    private PageLayoutRepository pageLayoutRepository;
+
     @Override
     public void hydrate(MongoDbUser dehydrated) {
-        //NOOP
+        dehydrated.setPageLayoutRepository(pageLayoutRepository);
     }
 
     @Override
@@ -71,7 +76,6 @@ public class MongoDbUserConverter implem
         converted.setProperties(source.getProperties());
         converted.setPassword(source.getPassword());
         converted.setConfirmPassword(source.getConfirmPassword());
-        converted.setDefaultPageLayout(source.getDefaultPageLayout());
         converted.setDefaultPageLayoutCode(source.getDefaultPageLayoutCode());
         converted.setEnabled(source.isEnabled());
         converted.setExpired(source.isExpired());

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=1399070&r1=1399069&r2=1399070&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
 Wed Oct 17 01:38:51 2012
@@ -20,20 +20,24 @@
 package org.apache.rave.portal.repository.impl;
 
 import org.apache.rave.portal.model.Category;
+import org.apache.rave.portal.model.MongoDbCategory;
 import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
-import org.apache.rave.portal.model.impl.CategoryImpl;
 import org.apache.rave.portal.repository.CategoryRepository;
+import org.apache.rave.util.CollectionUtils;
 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.springframework.data.mongodb.core.query.Criteria.where;
+import static org.springframework.data.mongodb.core.query.Query.query;
+
 @Repository
 public class MongoDbCategoryRepository implements CategoryRepository {
 
     public static final String COLLECTION = "category";
-    public static final Class<CategoryImpl> CLASS = CategoryImpl.class;
+    public static final Class<MongoDbCategory> CLASS = MongoDbCategory.class;
 
     @Autowired
     private MongoOperations template;
@@ -43,31 +47,60 @@ public class MongoDbCategoryRepository i
 
     @Override
     public List<Category> getAll() {
-        return null;
+        return 
CollectionUtils.<Category>toBaseTypedList(template.findAll(CLASS, COLLECTION));
     }
 
     @Override
     public int removeFromCreatedOrModifiedFields(long userId) {
-        return 0;  //To change body of implemented methods use File | Settings 
| File Templates.
+        List<MongoDbCategory> categories = 
template.find(query(where("lastModifiedUserId").is(userId).orOperator(where("createdUserId").is(userId))),
 CLASS, COLLECTION);
+        int count = 0;
+        for(MongoDbCategory category : categories) {
+            boolean updated = updateCategory(userId, category);
+            if(updated) {
+                save(category);
+                count++;
+            }
+        }
+        return count;
     }
 
     @Override
     public Class<? extends Category> getType() {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return CLASS;
     }
 
     @Override
     public Category get(long id) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        return hydrate(template.findById(id, CLASS, COLLECTION));
     }
 
     @Override
     public Category save(Category item) {
-        return null;  //To change body of implemented methods use File | 
Settings | File Templates.
+        MongoDbCategory converted = converter.convert(item, Category.class);
+        template.save(converted, COLLECTION);
+        return hydrate(converted);
     }
 
     @Override
     public void delete(Category item) {
-        //To change body of implemented methods use File | Settings | File 
Templates.
+        template.remove(get(item.getId()));
+    }
+
+    private Category hydrate(MongoDbCategory category) {
+        converter.hydrate(category, CLASS);
+        return category;
+    }
+
+    private boolean updateCategory(long userId, MongoDbCategory category) {
+        boolean updated = false;
+        if(category.getCreatedUserId().equals(userId)) {
+            category.setCreatedUserId(null);
+            updated = true;
+        }
+        if(category.getLastModifiedUserId().equals(userId)) {
+            category.setLastModifiedUserId(null);
+            updated = true;
+        }
+        return updated;
     }
 }


Reply via email to