Author: mfranklin
Date: Tue Oct 16 12:50:02 2012
New Revision: 1398764
URL: http://svn.apache.org/viewvc?rev=1398764&view=rev
Log:
Refactored common repository code into template
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/HydratingConverterFactory.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbConverter.java
- copied, changed from r1398585,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
- copied, changed from r1398585,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbPageConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
- copied, changed from r1398620,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
- copied, changed from r1398602,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbWidgetConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoPageOperations.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionWidgetRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
Removed:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbPageConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbWidgetConverter.java
Modified:
rave/branches/mongo/rave-components/rave-mongodb/pom.xml
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbWidgetRepository.java
Modified: rave/branches/mongo/rave-components/rave-mongodb/pom.xml
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/pom.xml?rev=1398764&r1=1398763&r2=1398764&view=diff
==============================================================================
--- rave/branches/mongo/rave-components/rave-mongodb/pom.xml (original)
+++ rave/branches/mongo/rave-components/rave-mongodb/pom.xml Tue Oct 16
12:50:02 2012
@@ -72,6 +72,35 @@
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
+
+ <!-- Logging -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl-over-slf4j</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.ibm.icu</groupId>
+ <artifactId>icu4j</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
</dependencies>
</project>
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/HydratingConverterFactory.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/HydratingConverterFactory.java?rev=1398764&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/HydratingConverterFactory.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/HydratingConverterFactory.java
Tue Oct 16 12:50:02 2012
@@ -0,0 +1,21 @@
+package org.apache.rave.portal.model.conversion;
+
+import org.apache.rave.model.ModelConverter;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: mfranklin
+ * Date: 10/16/12
+ * Time: 8:24 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface HydratingConverterFactory {
+ @SuppressWarnings("unchecked")
+ <S, T> T convert(S source, Class<S> clazz);
+
+ @SuppressWarnings("unchecked")
+ <S> void hydrate(S source, Class<S> clazz);
+
+ @SuppressWarnings("unchecked")
+ <S,T> ModelConverter<S, T> getConverter(Class<S> clazz);
+}
Copied:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbConverter.java
(from r1398585,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbConverter.java)
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbConverter.java?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbConverter.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbConverter.java&r1=1398585&r2=1398764&rev=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbConverter.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbConverter.java
Tue Oct 16 12:50:02 2012
@@ -17,9 +17,11 @@
* under the License.
*/
-package org.apache.rave.portal.model.conversion;
+package org.apache.rave.portal.model.conversion.impl;
import org.apache.rave.model.ModelConverter;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -33,7 +35,7 @@ import java.util.Map;
* TODO: REMOVE REPOSITORY INJECTION WHEN MODEL-SPLIT BRANCH IS MERGED
*/
@Component
-public class MongoDbConverter {
+public class MongoDbConverter implements HydratingConverterFactory {
private Map<Class<?>, HydratingModelConverter> converterMap;
@@ -45,6 +47,7 @@ public class MongoDbConverter {
}
}
+ @Override
@SuppressWarnings("unchecked")
public <S, T> T convert(S source, Class<S> clazz) {
if(converterMap.containsKey(clazz)) {
@@ -54,6 +57,7 @@ public class MongoDbConverter {
}
}
+ @Override
@SuppressWarnings("unchecked")
public <S> void hydrate(S source, Class<S> clazz) {
if(converterMap.containsKey(clazz)) {
@@ -63,6 +67,7 @@ public class MongoDbConverter {
}
}
+ @Override
@SuppressWarnings("unchecked")
public <S,T> ModelConverter<S, T> getConverter(Class<S> clazz) {
return converterMap.get(clazz);
Copied:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
(from r1398585,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbPageConverter.java)
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbPageConverter.java&r1=1398585&r2=1398764&rev=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbPageConverter.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbPageConverter.java
Tue Oct 16 12:50:02 2012
@@ -17,10 +17,11 @@
* under the License.
*/
-package org.apache.rave.portal.model.conversion;
+package org.apache.rave.portal.model.conversion.impl;
import com.google.common.collect.Lists;
import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
import org.apache.rave.portal.repository.PageLayoutRepository;
import org.apache.rave.portal.repository.UserRepository;
import org.apache.rave.portal.repository.WidgetRepository;
Copied:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
(from r1398620,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/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?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java&r1=1398620&r2=1398764&rev=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbUserConverter.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbUserConverter.java
Tue Oct 16 12:50:02 2012
@@ -17,11 +17,12 @@
* under the License.
*/
-package org.apache.rave.portal.model.conversion;
+package org.apache.rave.portal.model.conversion.impl;
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.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Component;
Copied:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
(from r1398602,
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbWidgetConverter.java)
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java?p2=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java&p1=rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbWidgetConverter.java&r1=1398602&r2=1398764&rev=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/MongoDbWidgetConverter.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/model/conversion/impl/MongoDbWidgetConverter.java
Tue Oct 16 12:50:02 2012
@@ -17,10 +17,11 @@
* under the License.
*/
-package org.apache.rave.portal.model.conversion;
+package org.apache.rave.portal.model.conversion.impl;
import com.google.common.collect.Lists;
import org.apache.rave.portal.model.*;
+import org.apache.rave.portal.model.conversion.HydratingModelConverter;
import org.apache.rave.portal.repository.CategoryRepository;
import org.apache.rave.portal.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoPageOperations.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoPageOperations.java?rev=1398764&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoPageOperations.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/MongoPageOperations.java
Tue Oct 16 12:50:02 2012
@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+import org.apache.rave.portal.model.Page;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+/**
+ */
+public interface MongoPageOperations {
+
+ long count(Query query);
+ void remove(Query query);
+ Page findOne(Query query);
+ List<Page> find(Query query);
+ Page get(long id);
+ Page save(Page item);
+}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java?rev=1398764&r1=1398763&r2=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageRepository.java
Tue Oct 16 12:50:02 2012
@@ -21,15 +21,12 @@ package org.apache.rave.portal.repositor
import com.google.common.collect.Lists;
import org.apache.rave.portal.model.*;
-import org.apache.rave.portal.model.conversion.MongoDbConverter;
import org.apache.rave.portal.model.impl.PageImpl;
import org.apache.rave.portal.model.impl.PageUserImpl;
import org.apache.rave.portal.model.impl.RegionImpl;
import org.apache.rave.portal.model.impl.RegionWidgetImpl;
import org.apache.rave.portal.repository.PageRepository;
-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.query.Query;
import org.springframework.stereotype.Repository;
@@ -43,26 +40,19 @@ import static org.springframework.data.m
@Repository
public class MongoDbPageRepository implements PageRepository {
- public static final String COLLECTION = "page";
-
- @Autowired
- private MongoOperations mongoTemplate;
-
@Autowired
- private MongoDbConverter converter;
+ private MongoPageTemplate template;
@Override
public List<Page> getAllPages(Long userId, PageType pageType) {
- List<MongoDbPage> pages = mongoTemplate.find(new
Query(where("pageType").is(pageType).andOperator(where("ownerId").is(userId))),
MongoDbPage.class, COLLECTION);
- hydratePages(pages);
- return CollectionUtils.<Page>toBaseTypedList(pages);
+ return template.find(new
Query(where("pageType").is(pageType).andOperator(where("ownerId").is(userId))));
}
@Override
public int deletePages(Long userId, PageType pageType) {
Query query = new
Query(where("pageType").is(pageType).andOperator(where("ownerId").is(userId)));
- int count = (int)mongoTemplate.count(query, COLLECTION);
- mongoTemplate.remove(query, COLLECTION);
+ int count = (int)template.count(query);
+ template.remove(query);
return count;
}
@@ -73,15 +63,14 @@ public class MongoDbPageRepository imple
@Override
public boolean hasPersonPage(long userId) {
- return mongoTemplate.count(new
Query(where("pageType").is(PageType.PERSON_PROFILE).andOperator(where("ownerId").is(userId))),
COLLECTION) > 0;
+ return template.count(new
Query(where("pageType").is(PageType.PERSON_PROFILE).andOperator(where("ownerId").is(userId))))
> 0;
}
@Override
public List<PageUser> getPagesForUser(Long userId, PageType pageType) {
- List<MongoDbPage> pages = mongoTemplate.find(new
Query(where("members").elemMatch(where("userId").is(userId)).andOperator(where("pageType").is(pageType))),
MongoDbPage.class, COLLECTION);
+ List<Page> pages = template.find(new
Query(where("members").elemMatch(where("userId").is(userId)).andOperator(where("pageType").is(pageType))));
List<PageUser> userList = Lists.newArrayList();
- for(MongoDbPage page : pages) {
- converter.hydrate(page, Page.class);
+ for(Page page : pages) {
userList.add(findPageUser(userId, page));
}
return userList;
@@ -104,31 +93,17 @@ public class MongoDbPageRepository imple
@Override
public Page get(long id) {
- MongoDbPage fromDb = mongoTemplate.findById(id, MongoDbPage.class,
COLLECTION);
- if(fromDb == null) {
- throw new IllegalStateException("Could not find requested page: "
+ id);
- }
- converter.hydrate(fromDb, Page.class);
- return fromDb;
+ return template.get(id);
}
@Override
public Page save(Page item) {
- MongoDbPage converted = converter.convert(item, Page.class);
- mongoTemplate.save(converted, COLLECTION);
- converter.hydrate(converted, Page.class);
- return converted;
+ return template.save(item);
}
@Override
public void delete(Page item) {
- mongoTemplate.remove(new Query(where("id").is(item.getId())),
COLLECTION);
- }
-
- private void hydratePages(List<MongoDbPage> pages) {
- for(MongoDbPage page : pages) {
- converter.hydrate(page, Page.class);
- }
+ template.remove(new Query(where("id").is(item.getId())));
}
/**
@@ -231,7 +206,7 @@ public class MongoDbPageRepository imple
return pages;
}
- private PageUser findPageUser(Long userId, MongoDbPage page) {
+ private PageUser findPageUser(Long userId, Page page) {
for(PageUser user : page.getMembers()) {
if(user.getId().equals(userId)) {
return user;
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java?rev=1398764&r1=1398763&r2=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbPageTemplateRepository.java
Tue Oct 16 12:50:02 2012
@@ -21,7 +21,7 @@ package org.apache.rave.portal.repositor
import org.apache.rave.portal.model.PageTemplate;
import org.apache.rave.portal.model.PageType;
-import org.apache.rave.portal.model.conversion.MongoDbConverter;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
import org.apache.rave.portal.model.impl.PageTemplateImpl;
import org.apache.rave.portal.repository.PageTemplateRepository;
import org.apache.rave.util.CollectionUtils;
@@ -39,7 +39,7 @@ public class MongoDbPageTemplateReposito
public static final String COLLECTION = "pageTemplate";
@Autowired
- private MongoDbConverter converter;
+ private HydratingConverterFactory converter;
@Autowired
private MongoOperations template;
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionRepository.java?rev=1398764&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionRepository.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionRepository.java
Tue Oct 16 12:50:02 2012
@@ -0,0 +1,125 @@
+/*
+ * 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.Page;
+import org.apache.rave.portal.model.Region;
+import org.apache.rave.portal.model.impl.RegionImpl;
+import org.apache.rave.portal.repository.MongoPageOperations;
+import org.apache.rave.portal.repository.RegionRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ */
+@Repository
+public class MongoDbRegionRepository implements RegionRepository {
+
+ @Autowired
+ private MongoPageOperations template;
+
+
+ @Override
+ public Class<? extends Region> getType() {
+ return RegionImpl.class;
+ }
+
+ @Override
+ public Region get(long id) {
+ Page page = getPageByRegionId(id);
+ for(Region region : page.getRegions()) {
+ if(region.getId().equals(id)) {
+ return region;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Region save(Region item) {
+ Page page;
+ int index;
+
+ if(item.getId() == null) {
+ page = getPageFromRepository(item);
+ page.getRegions().add(item);
+ index = page.getRegions().size()-1;
+ } else {
+ page = getPageByRegionId(item.getId());
+ index = replaceRegion(page, item);
+ }
+ Page saved = template.save(page);
+ return saved.getRegions().get(index);
+ }
+
+ @Override
+ public void delete(Region item) {
+ Page page;
+
+ if(item.getId() == null) {
+ throw new IllegalStateException("Unidentifiable region (null id)");
+ } else {
+ page = getPageByRegionId(item.getId());
+ removeRegion(page, item);
+ }
+ template.save(page);
+ }
+
+ private void removeRegion(Page page, Region item) {
+ Iterator<Region> iterator = page.getRegions().iterator();
+ while(iterator.hasNext()) {
+ Region region = iterator.next();
+ if(region.getId().equals(item.getId())) {
+ iterator.remove();
+ return;
+ }
+ }
+ }
+
+ private int replaceRegion(Page page, Region item) {
+ List<Region> regions = page.getRegions();
+ for(int i=0; i < regions.size(); i++) {
+ if(regions.get(i).getId().equals(item.getId())) {
+ regions.remove(i);
+ regions.add(i, item);
+ return i;
+ }
+ }
+ return 0;
+ }
+
+ private Page getPageFromRepository(Region item) {
+ if(item.getPage() != null && item.getPage().getId() != null) {
+ return template.get(item.getPage().getId());
+ }
+ else {
+ throw new IllegalStateException("Unable to find page for region");
+ }
+ }
+
+ private Page getPageByRegionId(long id) {
+ return template.findOne(new
Query(Criteria.where("regions").elemMatch(Criteria.where("_id").is(id))));
+ }
+}
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionWidgetRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionWidgetRepository.java?rev=1398764&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionWidgetRepository.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbRegionWidgetRepository.java
Tue Oct 16 12:50:02 2012
@@ -0,0 +1,63 @@
+/*
+ * 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.MongoDbRegionWidget;
+import org.apache.rave.portal.model.RegionWidget;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.repository.PageRepository;
+import org.apache.rave.portal.repository.RegionWidgetRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+
+/**
+
+ */
+public class MongoDbRegionWidgetRepository implements RegionWidgetRepository {
+
+ @Autowired
+ private MongoOperations template;
+
+ @Autowired
+ private PageRepository pageRepository;
+
+ @Autowired
+ private HydratingConverterFactory converter;
+
+ @Override
+ public Class<? extends RegionWidget> getType() {
+ return MongoDbRegionWidget.class;
+ }
+
+ @Override
+ public RegionWidget get(long id) {
+ return null;
+ }
+
+ @Override
+ public RegionWidget save(RegionWidget item) {
+ return null;
+ }
+
+ @Override
+ public void delete(RegionWidget item) {
+ //To change body of implemented methods use File | Settings | File
Templates.
+ }
+}
Modified:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java?rev=1398764&r1=1398763&r2=1398764&view=diff
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
(original)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoDbUserRepository.java
Tue Oct 16 12:50:02 2012
@@ -21,7 +21,7 @@ package org.apache.rave.portal.repositor
import org.apache.rave.portal.model.MongoDbUser;
import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.model.conversion.MongoDbConverter;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
import org.apache.rave.portal.repository.UserRepository;
import org.apache.rave.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,7 +47,7 @@ public class MongoDbUserRepository imple
private MongoOperations template;
@Autowired
- private MongoDbConverter converter;
+ private HydratingConverterFactory converter;
@Override
public User getByUsername(String username) {
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=1398764&r1=1398763&r2=1398764&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 16 12:50:02 2012
@@ -20,7 +20,7 @@
package org.apache.rave.portal.repository.impl;
import org.apache.rave.portal.model.*;
-import org.apache.rave.portal.model.conversion.MongoDbConverter;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
import org.apache.rave.portal.model.util.WidgetStatistics;
import org.apache.rave.portal.repository.WidgetRepository;
import org.apache.rave.util.CollectionUtils;
@@ -47,7 +47,7 @@ public class MongoDbWidgetRepository imp
private MongoOperations template;
@Autowired
- private MongoDbConverter converter;
+ private HydratingConverterFactory converter;
@Override
public List<Widget> getAll() {
Added:
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
URL:
http://svn.apache.org/viewvc/rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java?rev=1398764&view=auto
==============================================================================
---
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
(added)
+++
rave/branches/mongo/rave-components/rave-mongodb/src/main/java/org/apache/rave/portal/repository/impl/MongoPageTemplate.java
Tue Oct 16 12:50:02 2012
@@ -0,0 +1,93 @@
+/*
+ * 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.MongoDbPage;
+import org.apache.rave.portal.model.Page;
+import org.apache.rave.portal.model.conversion.HydratingConverterFactory;
+import org.apache.rave.portal.repository.MongoPageOperations;
+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.query.Query;
+
+import java.util.List;
+
+/**
+ */
+public class MongoPageTemplate implements MongoPageOperations {
+ public static final String COLLECTION = "page";
+ public static final Class<MongoDbPage> CLASS = MongoDbPage.class;
+
+ @Autowired
+ private MongoOperations mongoTemplate;
+
+ @Autowired
+ private HydratingConverterFactory converter;
+
+ @Override
+ public long count(Query query) {
+ return mongoTemplate.count(query, COLLECTION);
+ }
+
+ @Override
+ public void remove(Query query) {
+ mongoTemplate.remove(query, COLLECTION);
+ }
+
+ @Override
+ public Page get(long id) {
+ MongoDbPage fromDb = mongoTemplate.findById(id, CLASS, COLLECTION);
+ if(fromDb == null) {
+ throw new IllegalStateException("Could not find requested page: "
+ id);
+ }
+ return hydrate(fromDb);
+ }
+
+ @Override
+ public Page save(Page item) {
+ MongoDbPage converted = converter.convert(item, Page.class);
+ mongoTemplate.save(converted, COLLECTION);
+ converter.hydrate(converted, Page.class);
+ return converted;
+ }
+
+ @Override
+ public Page findOne(Query query) {
+ return hydrate(mongoTemplate.findOne(query, CLASS, COLLECTION));
+ }
+
+ @Override
+ public List<Page> find(Query query) {
+ return hydrate(mongoTemplate.find(query, CLASS, COLLECTION));
+ }
+
+ private List<Page> hydrate(List<MongoDbPage> mongoDbPages) {
+ for(MongoDbPage p : mongoDbPages) {
+ hydrate(p);
+ }
+ return CollectionUtils.<Page>toBaseTypedList(mongoDbPages);
+ }
+
+ private Page hydrate(MongoDbPage page) {
+ converter.hydrate(page, Page.class);
+ return page;
+ }
+}