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;
}
}